macro_rules! s { ($($(#[$attr:meta])* pub $t:ident $i:ident { $($field:tt)* })*) => { ... }; (it: $(#[$attr:meta])* pub union $i:ident { $($field:tt)* }) => { ... }; (it: $(#[$attr:meta])* pub struct $i:ident { $($field:tt)* }) => { ... }; }