macro_rules! tuple_trait {
($name1:ident $ty1:ident, $name2: ident $ty2:ident, $($name:ident $ty:ident),*) => { ... };
(__impl $($name:ident $ty: ident),+; $name1:ident $ty1:ident, $($name2:ident $ty2:ident),*) => { ... };
(__impl $($name:ident $ty: ident),+; $name1:ident $ty1:ident) => { ... };
}