macro_rules! enum_variants_table { ( ENUM_OUT: { $( #[$enum_meta: meta] )* $enum_vis: vis enum $enum_ident: ident $( <[ $( $enum_gen: tt )* ]> )? $( where [ $( $enum_bound: tt )* ] )? { $( $( #[$var_meta: meta] )* $var_ident: ident $( = $var_int: expr )? ),* $(,)? } } TABLE: { $( #[$table_meta: meta] )* $table_vis: vis struct $table_ident: ident < $gen: ident > $(;)? $({})? } ) => { ... }; ( ENUM_IN: $enum_ident: path; TABLE: { $( #[$table_meta: meta] )* $table_vis: vis struct $table_ident: ident < $gen: ident > { $( $var_ident: ident ),* $(,)? } } ) => { ... }; ( $enum_ident: path { $( $var_ident: ident ),* } $( #[$table_meta: meta] )* $table_vis: vis struct $table_ident: ident < $gen: ident > $(;)? $({})? ) => { ... }; }