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