tyenum 0.2.1

Attribute macro for type enums.
Documentation
use std::convert::TryInto;
use tyenum::tyenum;

#[derive(Debug, PartialEq)]
struct A;
#[derive(Debug, PartialEq)]
struct B;
#[derive(Debug, PartialEq)]
struct C;

#[tyenum]
#[derive(Debug, PartialEq)]
enum Test {
    A,
    BB(B),
    C(C),
}

#[test]
fn into() {
    assert_eq!(Test::A(A), A.into());
    assert_eq!(Test::BB(B), B.into());
    assert_ne!(Test::A(A), C.into());
}

#[test]
fn is() {
    assert!(Test::A(A).is::<A>());
    assert!(Test::BB(B).is::<B>());
    assert!(!Test::C(C).is::<A>());
}

#[test]
fn try_into() {
    assert_eq!(Test::A(A).try_into(), Ok(A));
    assert_eq!(Test::BB(B).try_into(), Ok(B));
    assert_eq!(
        {
            let a: Result<A, _> = Test::C(C).try_into();
            a
        },
        Err(TryFromTyenumError)
    );
}