On Fri Aug 14, 2026 at 2:56 PM BST, Alexandre Courbot wrote:
> On Thu Aug 6, 2026 at 1:35 AM JST, Gary Guo wrote:
> <...>
>> @@ -577,6 +547,9 @@ macro_rules! register {
>> (base: $reg_base:ty;) => {};
>>
>> // Creates a register at a fixed offset of the MMIO space with provided
>> type.
>> + //
>> + // This handles all of the fixed offset `@ offset`, alias of register
>> `=> alias` and alias of
>> + // register array element `=> alias[idx]` cases.
>> (
>> base: $reg_base:ty;
>> // `$ty` cannot be `:ty` due to follow-set restrictions.
>> @@ -593,10 +566,29 @@ macro_rules! register {
>> $crate::register!(base: $reg_base; $($rest)*);
>> };
>>
>> + // `#[unique]` indicates that this is the only register of this type in
>> this given register.
>
> Sentence doesn't parse (in this given register?).
Oops, I meant "in the given region" (i.e. base type).
>
>> + // Thus generate a `FixedIoLoc` impl for it as well.
>> + (
>> + base: $reg_base:ty;
>> + $(#[$attr:meta])* $vis:vis $name:ident: #[unique] $ty: ident $(::
>> $path_frag:ident)*
>> + $(@ $offset:literal)?
>> + $(=> $alias:path $([$alias_idx:expr])? )?;
>> + $($rest:tt)*
>
> This rule looks like it should be private, or am I mistaken?
The idea is that if you create bitfield yourself you can still use `#[unique]`
to bring back the `FixedIoLoc` impl so you're not losing any expressiveness
compared to let `register!()` macro generating it.
Best,
Gary