macro_rules! as_trait { ($trait: tt) => { ... }; ($trait:tt<$($param:tt), *>) => { ... }; (impl $trait: tt) => { ... }; (impl $trait:tt<$($param:tt), *>) => { ... }; }