use unit_enum::UnitEnum;
#[derive(Debug, Clone, Copy, PartialEq, UnitEnum)]
enum Color {
Red = 10,
Green,
Blue = 45654,
}
fn main() {
assert_eq!(Color::Blue.name(), "Blue");
assert_eq!(Color::Green.ordinal(), 1);
assert_eq!(Color::from_ordinal(2), Some(Color::Blue));
assert_eq!(Color::from_ordinal(4), None);
assert_eq!(Color::Blue.discriminant(), 45654);
assert_eq!(Color::Green.discriminant(), 11);
assert_eq!(Color::from_discriminant(10), Some(Color::Red));
assert_eq!(Color::from_discriminant(0), None);
assert_eq!(Color::len(), 3);
assert_eq!(
Color::values().collect::<Vec<_>>(),
vec![Color::Red, Color::Green, Color::Blue]
);
}