Macro gufo_common::utils::maybe_convertible_enum
source ยท macro_rules! maybe_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 try_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.
maybe_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::try_from(2), Ok(Test::Val2));
assert_eq!(Test::try_from(3), Err(UnknownTestValueError(3)));