macro_rules! alt_trait { ($first:ident $second:ident $($id: ident)+) => { ... }; (__impl $($current:ident)*; $head:ident $($id: ident)+) => { ... }; (__impl $($current:ident)*; $head:ident) => { ... }; }