macro_rules! make_as_bytes {
    (
        $(#[$meta:meta])*
        $struct_vis: vis struct $struct_name: ident {
            $(
                $(#[$field_meta:meta])*
                $field_vis: vis $field_name: ident : $field_type: ty
            ),* $(,)*
        }
    ) => { ... };
    (
        $(#[$meta:meta])*
        $enum_vis: vis enum $enum_name: ident {
            $(
                $(#[$element_meta:meta])*
                $element_name: ident {
                    $(
                        $(#[$field_meta:meta])*
                        $field_name: ident : $field_type: ty
                    ),*$(,)*
                }
            ),* $(,)*
        }
    ) => { ... };
    (
        $(#[$meta:meta])*
        $enum_vis: vis enum $enum_name: ident {
            $(
                $(#[$element_meta:meta])*
                $element_name: ident (
                    $(
                        $(#[$field_meta:meta])*
                        $field_type: ty
                    ),*$(,)*
                )
            ),* $(,)*
        }
    ) => { ... };
}