macro_rules! struct_parser {
( < $($rest:tt)* ) => { ... };
( $first:ident $($rest:tt)* ) => { ... };
(
@outer $inp_life_old:tt [$($param_decl:tt)*]
input_lifetime = $inp_life:tt;
$($rest:tt)*
) => { ... };
(
@outer $inp_life:tt [$($param_decl_old:tt)*]
params = { $($param_decl:tt)* }
$($rest:tt)*
) => { ... };
(
@outer $inp_life:tt [$($param_decl:tt)*]
$( #[ $($attr:tt)* ] )*
$name:ident
$( < $($param:tt),* > )?
{ $($fields:tt)* }
= [ $($args:tt)* ]
) => { ... };
(
@outer $inp_life:tt [$($param_decl:tt)*]
$name:ident
$( < $($param:tt),* > )?
( $($fields:tt)* )
= [ $($args:tt)* ]
) => { ... };
(
@main $( #[ $($attr:tt)* ] )* $name:ident $inp_life:tt
[ $($param_decl:tt)* ]
[ $($param:tt)* ]
[ $($fields:tt)* ]
[ $($args:tt)* ]
) => { ... };
}