enum_kind 0.2.2

Easily manage values related to enum.
Documentation
use enum_kind::*;

#[derive(Debug, Kind)]
#[kind(functions(is_a = "bool", prec = "u8"))]
pub enum Tokens {
    #[kind(is_a)]
    #[kind(prec = "7")]
    A,
    #[kind(prec = "6")]
    StructLike {},
    #[kind(prec = "5")]
    TupleLike(u8),

    #[kind(prec = "6")]
    #[cfg(feature = "not-used")]
    Unused,
}

#[test]
fn simple_bool() {
    assert!(Tokens::A.is_a());
    assert!(!Tokens::StructLike {}.is_a());
    assert!(!Tokens::TupleLike(5).is_a());
}

#[derive(Debug, Kind)]
#[kind(functions(wanted = "bool"))]
pub enum Delegate {
    #[kind(wanted)]
    Wanted,
    #[kind(delegate)]
    May(Del),
}

#[derive(Debug, Kind)]
#[kind(functions(wanted = "bool"))]
pub enum Del {
    #[kind(wanted)]
    Yes,
    No,
}