macro_rules! type_state_enum {
(
STATE: $state_ident: ident { $state_field_ident: ident }
ENUM_OUT: {
#[vars( $( $all_meta: meta ),* $(,)? )]
$( #[$enum_meta: meta] )*
$enum_vis: vis enum $enum_ident: ident {
$(
$( [@ $ignore: ident] )?
$( #[$var_meta: meta] )*
$var_ident: ident $( ( $($var_tuple: tt)* ) )? $( { $($var_fields: tt)* } )?
),*
$(,)?
}
}
DELEGATES: {
$(
trait $trait_ident: ident $( < [ $( $gens: tt )* ] > )? {
$( [ $( $item: tt )* ] )*
}
)*
$(
impl {
$( [ $( $std_impl: tt )* ] )*
}
)?
}
) => { ... };
(
STATE: {
$( #[ $state_meta: meta ] )*
$state_vis: vis struct $state_ident: ident {
$( $state_field_ident: ident : $state_field_ty: ty ),*
$(,)?
}
}
ENUM_OUT: {
#[vars( $( $all_meta: meta ),* $(,)? )]
$( #[$enum_meta: meta] )*
$enum_vis: vis enum $enum_ident: ident {
$(
$( [@ $ignore: ident] )?
$( #[$var_meta: meta] )*
$var_ident: ident $( ( $($var_tuple: tt)* ) )? $( { $($var_fields: tt)* } )?
),*
$(,)?
}
}
DELEGATES: {
$(
trait $trait_ident: ident $( < [ $( $gens: tt )* ] > )? {
$( [ $( $item: tt )* ] )*
}
)*
$(
impl {
$( [ $( $std_impl: tt )* ] )*
}
)?
}
) => { ... };
}