macro_rules! wrapper { ($($S:ident($vis:vis $T:ident) $(where $($rest:tt)*)?;),* $(,)?) => { ... }; (@impl #[derive($($derive:ident),*)] $S:ident($vis:vis $T:ident) $(where $($rest:tt)*)?; ) => { ... }; }