macro_rules! newtype { ( $(#[$outer:meta])* $viz:vis $Name:ident $(<$($G:ident),+>)? ($iviz:vis $Inner:ty) ) => { ... }; ( $(#[$outer:meta])* $viz:vis mut $Name:ident $(<$($G:ident),+>)? ($iviz:vis $Inner:ty) ) => { ... }; }