enhanced_enum 0.2.0

Enhanced Fieldless Enumerations and Associated Array Types.
Documentation
use enhanced_enum::enhanced_enum;
use std::convert::TryFrom;

#[test]
fn test() {
    enhanced_enum!(FooBar { Foo, Bar });

    let x: String = FooBar::Foo.to_string();
    let y: &str = FooBar::Foo.to_str();
    assert_eq!(x, y);

    println!("{:?}", FooBar::Foo);
    println!("{}", FooBar::Foo);

    assert!(FooBar::try_from(1u32).is_ok());
    assert!(FooBar::try_from(5u64).is_err());

    let mut q = FooBarArray::new(7.0);
    assert!(q.contains(&7.0));
    q[FooBar::Foo] = f64::NAN;
    assert!(q.iter().any(|x| x.is_nan()));

    let mut raboof = FooBarArray::new_with(|x| match x {
        FooBar::Foo => 4734,
        FooBar::Bar => 51,
    });
    dbg!(&raboof);
    assert_eq!(raboof[FooBar::Bar], 51);
    for _x in &raboof {}
    for _x in &mut raboof {}
    assert!(!raboof.is_empty());
    assert!(raboof.len() == 2);
    let boofoo = raboof.clone();
    assert!(boofoo == raboof);
    let _vv = FooBarArray::new(vec![6; 7]);
}