Skip to main content

bitflag

Macro bitflag 

Source
macro_rules! bitflag {
    (
        $(#[$outer:meta])*
        $vis:vis enum $name:ident {
            $($(#[$inner:meta])* $variant:ident = $value:expr),*
            $(,)?
        }
    ) => { ... };
}
Expand description

Defines a #[repr(u8)] enum and auto-implements BitFlag, From<Enum> for u8, and TryFrom<u8>.

bitflagset::bitflag! {
    #[derive(Debug)]
    #[repr(u8)]
    pub enum Color {
        Red = 0,
        Green = 1,
        Blue = 2,
    }
}

use bitflagset::BitFlag;
assert_eq!(Color::Red.mask(), 1u8);
assert_eq!(Color::Green.as_u8(), 1);
assert_eq!(Color::try_from(2), Ok(Color::Blue));
assert!(Color::try_from(99).is_err());