macro_rules! c_enum {
[
$( #[$meta:meta] )*
$vis:vis enum $name:ident($repr_type:ty) {
$(
$( #[$variant_meta:meta] )*
$variant_name:ident $( = $variant_value:expr )?
),*
$(,)?
}
] => { ... };
[
@variants
default = $default_value:expr;
] => { ... };
[
@variants
default = $default_value:expr;
$( #[$current_meta:meta] )*
$current_name:ident = $current_value:expr
$(
,
$( #[$rest_meta:meta] )*
$rest_name:ident $( = $rest_value:expr )?
)*
] => { ... };
[
@variants
default = $default_value:expr;
$( #[$current_meta:meta] )*
$current_name:ident
$(
,
$( #[$rest_meta:meta] )*
$rest_name:ident $( = $rest_value:expr )?
)*
] => { ... };
}Expand description
Define a struct that wraps an integer type and acts like a C-style enum.
The new struct will be a transparent newtype wrapper for the underlying integral type.
It will have an associated constant for each variant listed in the definition, and it
will implement CEnum and all its supertraits.
See crate documentation for examples.