bitenum 0.2.2

binary enums with bitflags support
Documentation
use bitenum::{BitEnum, BitEnumSet};

enum TestBitEnum {
    A = 1 << 0,
    B = 1 << 1,
}

impl Into<u32> for TestBitEnum {
    fn into(self) -> u32 { self as u32 }
}

impl BitEnum for TestBitEnum {
    type Scalar = u32;
}

#[test]
fn test_mutable_ops() {
    let mut set = BitEnumSet::new();

    assert_eq!(set.contains(TestBitEnum::A), false);

    set.insert(TestBitEnum::A);

    assert_eq!(set.contains(TestBitEnum::A), true);
    assert_eq!(set.contains(TestBitEnum::B), false);

    set.remove(TestBitEnum::A);

    assert_eq!(set.contains(TestBitEnum::A), false);
}

#[test]
fn test_immutable_ops() {
    let set = BitEnumSet::new();

    assert_eq!(set.contains(TestBitEnum::A), false);

    let set = set.with(TestBitEnum::A);
    assert_eq!(set.contains(TestBitEnum::A), true);
    assert_eq!(set.contains(TestBitEnum::B), false);

    let set = set.without(TestBitEnum::A);
    assert_eq!(set.contains(TestBitEnum::A), false);
}