Macro enums

Source
macro_rules! enums {
    (
        $(
        $(#[$meta:meta])*
        $enum_vis: vis $name: ident $(($enum_default: ident))? {

            $(#[$fst_field_meta:meta])*
            $fst_field: ident
            $(,
                $(#[$field_meta:meta])*
                $field: ident
            )* $(,)?
        }
        )+
    ) => { ... };
}
Expand description

Create enums with trait implementations necessary for use in a bit_struct field.

Example:


enums! {
    pub Colors { Red, Green, Blue }

    Shapes { Triangle, Circle, Square }
}

By default, this macro produces an impl of Default in which the first field listed is made the default. However, you can also specify some other variant as the default, as follows:


enums! {
    DefaultsToA { A, B, C }
    DefaultsToB (B) { A, B, C }
}

assert_eq!(DefaultsToA::default(), DefaultsToA::A);
assert_eq!(DefaultsToB::default(), DefaultsToB::B);