use bitflag::bitflag;
#[bitflag(u32)]
#[derive(Debug, Clone, Copy, PartialEq, PartialOrd, Eq, Ord, Hash)]
pub enum Flags {
A = 0b00000001,
B = 0b00000010,
C = 0b00000100,
ABC = A | B | C,
}
fn main() {
let e1 = Flags::A | Flags::C;
let e2 = Flags::B | Flags::C;
assert_eq!((e1 | e2), Flags::ABC); assert_eq!((e1 & e2), Flags::C); assert_eq!((e1 - e2), Flags::A); assert_eq!(!e2, Flags::A); }