subenum 1.1.3

A proc-macro to create subsets of enums, that can be converted to and from.
Documentation
use subenum::subenum;

#[subenum(
    Binary(derive(derive_more::Display)),
    Unary,
    Keyword(derive(Copy, strum::EnumString), strum(serialize_all = "snake_case"))
)]
#[derive(Clone, Debug, PartialEq)]
enum Token {
    #[subenum(Binary(display("-")), Unary)]
    Minus,
    #[subenum(Binary(display("+")))]
    Plus,
    #[subenum(Keyword)]
    And,
    #[subenum(Keyword)]
    Or,
    #[subenum(Keyword)]
    Var,
}

#[test]
fn test_token() {
    let a = Token::Minus;
    let b = Binary::try_from(a.clone()).unwrap();
    println!("b: {b}");

    let c = "and".parse::<Keyword>().unwrap();
    let d = Token::from(c);
    println!("{:?} {:?}", c, d);

    assert_eq!(a, b);
}

#[subenum(EnumB)]
enum EnumA<T> {
    #[subenum(EnumB)]
    B,
    #[subenum(EnumB)]
    C(T),
}

#[test]
fn test_enuma() {
    let _a: EnumA<u8> = EnumA::B;
    let _b = EnumB::C(7);
}