Macro gufo_common::convertible_enum
source ยท macro_rules! convertible_enum { (#[repr($type:ty)]$(#[$meta:meta])* $visibility:vis enum $enum_name:ident { $($(#[$variant_meta:meta])* $variant_name:ident = $variant_value:expr,)* }) => { ... }; }
Expand description
Adds conversions from and into integer to enums
Takes an enum that must have a #[repr()] as first meta field and assigns a
value to all enum variants.
convertible_enum!(
#[repr(u8)]
#[derive(Debug, PartialEq)]
pub enum Test {
Val1 = 1,
Val2 = 2,
}
);
let int: u8 = Test::Val2.into();
assert_eq!(int, 2);
assert_eq!(Test::from(2), Test::Val2);
assert_eq!(Test::from(3), Test::Unknown(3));