const-enum 0.1.0

Procedural derive macro for constant From trait implementations on enums based on repr type.
Documentation
#![feature(const_trait_impl)]

use const_enum::ConstEnum;

#[derive(Copy, Clone, Debug, Eq, PartialEq, ConstEnum)]
#[repr(u8)]
enum Test {
    A = 0b010,
    B = 0b100,
    C = 0b001,
}

#[test]
pub fn test_enum_to_u8() {
    assert_eq!(Test::from(0b010), Test::A);
    assert_eq!(Test::from(0b100), Test::B);
    assert_eq!(Test::from(0b001), Test::C);
}

#[test]
pub fn test_u8_to_enum() {
    assert_eq!(u8::from(Test::A), 0b010);
    assert_eq!(u8::from(Test::B), 0b100);
    assert_eq!(u8::from(Test::C), 0b001);
}

#[test]
#[should_panic]
pub fn test_invalid_variant() {
    Test::from(0b111);
}