macro_rules! strum {
(
$(#[$enum_meta:meta])*
$enum_vis:vis enum $enum_name:ident {
$(
$(#[$variant_meta:meta])*
$variant_name:ident = $string:literal $(| $alias:literal)* $(= $discriminant:expr)?
),* $(,)?
}
$($rest:tt)*
) => { ... };
}Expand description
Give the passed-in enum a FromStr and Display
implementation.
strum_lite::strum! {
#[derive(Default)]
pub enum Casing {
Kebab = "kebab-case" | "kebab" = 100,
#[default]
ScreamingSnake = "SCREAMING_SNAKE",
}
pub const ALL_VARIANTS; // optional
throws #[derive(Clone)] ParseCasingError; // optional
}
let derives_are_passed_through = Casing::default();
let implements_display = Casing::Kebab.to_string();
let implements_from_str = "kebab".parse::<Casing>().unwrap();
assert_eq!(Casing::Kebab as i32, 100); // discriminants are passed through
assert_eq!(Casing::ALL_VARIANTS.len(), 2); // generated constant