macro_rules! EnumInnerAsTrait {
(
@expand (pub $fn_name:ident -> &mut $tr:ty), $($tail:tt)*
) => { ... };
(
@expand (pub $fn_name:ident -> &$tr:ty), $($tail:tt)*
) => { ... };
(
@expand ($fn_name:ident -> &mut $tr:ty), $($tail:tt)*
) => { ... };
(
@expand ($fn_name:ident -> &$tr:ty), $($tail:tt)*
) => { ... };
(
@expand_inner
($($vis:tt)*), $fn_name:ident, (mut), $tr:ty,
$ty_name:ident,
($($var_names:ident($_var_tys:ty),)*)
) => { ... };
(
@expand_inner
($($vis:tt)*), $fn_name:ident, (), $tr:ty,
$ty_name:ident,
($($var_names:ident($_var_tys:ty),)*)
) => { ... };
($arg:tt $(pub)* enum $name:ident { $($body:tt)* }) => { ... };
}