#[open_enum]
Expand description
Constructs an open enum from a Rust enum definition, allowing it to represent more than just its listed variants.
See the crate documentation for more details.
§Example
#[open_enum]
#[derive(Debug)]
enum Color {
Red,
Green,
Blue,
Orange,
Black,
}
assert_eq!(Color::Red, Color(0));
assert_eq!(Color(10).0, 10);
§Options
allow_alias[ = $bool]
: defaultfalse
. Allows duplicate discriminant values for variants.inner_vis = $vis
: defaultpub
. Specifies the visibility of the inner integer.
§Integer type
open_enum
configures the discriminant type by intercepting a repr
attribute on the enum.
If done, the open enum is #[repr(transparent)]
over the provided integer type.
Otherwise, variant discriminants are interpreted as isize
and an automatic integer type chosen.
§PartialEq
/Eq
Open enums implement PartialEq
and Eq
in order to work in a match
statement.