Macro gen_frame

Source
macro_rules! gen_frame {
    (@frame
        $( #[$($meta:meta)*] )*
        $name:ident [ $hdr:ident ] {
            // flags mask
            #mask = [ $($flags:tt)* ];

            // reqiured flags
            $( #requires = [ $($required_flags:tt)* ]; )?

            // fields
            $(
                // meta
                $( #[$($field_meta:meta)*] )*

                // options
                $( @$field_opt:ident $(($field_opt_val:literal))?; )*

                // visibility
                $field_vis:vis

                // name
                $field:ident

                // modifier
                $(($field_mod:ident))?

                // data type
                : $field_ty:ty

                // generators
                $( => [
                   $(
                       $gen:ident $($gen_tt:tt)?
                   ),*
                ])?
            );* $(;)?
        }$(;)?

    ) => { ... };
}