macro_rules! punc_type { ( $t:ident ) => { ... }; ( $t:ident + $($s:tt)+ ) => { ... }; ( ( $($t:tt)+ ) + $($s:tt)+ ) => { ... }; (( $($t:tt)+ )) => { ... }; ( $l:tt -> $($r:tt)+ ) => { ... }; ( ( $($l:tt)+ ) -> $($r:tt)+ ) => { ... }; }