joseluis / enum-flags

EnumFlags is a csharp like enum flags implementation.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

LICENSE Documentation Crates.io Version

EnumFlags

EnumFlags is a csharp like enum flags implementation.

Example

use enum_flags::EnumFlags;

#[repr(u8)]
#[derive(EnumFlags, Copy, Clone, PartialEq)]
enum Flags{
    None = 0,
    A = 1,
    B = 2,
    C = 4
}
fn main() {
    let e1: Flags = Flags::A | Flags::C;
    let e2 = Flags::B | Flags::C;
    
    assert_eq!(e1 | e2, Flags::A | Flags::B | Flags::C); // union
    assert_eq!(e1 & e2, Flags::C); // intersection
    assert_eq!(e1 ^ e2, Flags::A | Flags::B); // xor
    assert_eq!(e1 & (!Flags::C), Flags::B); // deletion
    assert_eq!(e1 - Flags::C, Flags::B); // deletion

    assert_eq!("(Flags::A | Flags::C)", format!("{:?}", e1).as_str());
    assert!(e1.has_a());
    assert!(!e1.has_b());
    assert!(e1.has_flag(Flags::C));
    
}

About

EnumFlags is a csharp like enum flags implementation.


Languages

Language:Rust 100.0%