Macro declarative_type_state::type_state_enum

source ยท
macro_rules! type_state_enum {
    (
	    STATE: $state_ident: ident
	    $( <[$( $state_gen: tt )*]> )?
		$( where [$( $state_gen_bound: tt )*] )?
	    { $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: {
		    $(
		        impl $( <[ $( $trait_gen: tt )*  ]> )? 
		        trait $trait_ty: path
		        $( where [ $( $trait_bound: tt )* ] )?
		        {
				    $( [ $( $item: tt )* ] )*
			    }
		    )*
		    
		    $(
			    impl {
			        $( [ $( $std_impl: tt )* ] )*
			    }
		    )?
	    }
    ) => { ... };
    (@ENUM_DEF
        { $state_gen_1: ident }
        
        $state_ident: ident
        
	    #[vars( $( $all_meta: meta ),* $(,)? )]
	    $( #[$enum_meta: meta] )*
	    $enum_vis: vis enum $enum_ident: ident {
			$( $var_ident: ident ),*
		    $(,)?
	    }
    ) => { ... };
    (
		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: {
		    $(
		        impl $( <[ $( $trait_gen: tt )*  ]> )? 
		        trait $trait_ty: path
		        $( where [ $( $trait_bound: tt )* ] )?
		        {
				    $( [ $( $item: tt )* ] )*
			    }
		    )*
		    
		    $(
			    impl {
			        $( [ $( $std_impl: tt )* ] )*
			    }
		    )?
	    }
	) => { ... };
}