convertible_enum

Macro 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));