#enums #convert #back #try #inttype

macro inttype-enum

Converts an [enum] into an [inttype], and try to convert it back

4 releases

0.1.4 Aug 29, 2024
0.1.3 Aug 28, 2024
0.1.2 Jun 27, 2023
0.1.1 Jun 26, 2023
0.1.0 Jun 26, 2023

#342 in Procedural macros

MIT license

6KB
88 lines

inttype-enum

Converts an enum into an inttype, and try to convert it back

Auto implement From<enum> for inttype, and TryFrom<inttype> for enum. if one(only one) variant is tagged with #[default], then From<inttype> for enum will be implemented

Usage examples:

[dependencies]
inttype-enum = "0.1"
#[derive(IntType)]
#[repr(u8)]
enum Cmd {
    Connect = 1,
    Bind = 2,
    Udp = 3,
}

let conn: u8 = Cmd::Connect.into();
assert!(matches!(Cmd::try_from(conn), Ok(Cmd::Connect)));
assert!(matches!(Cmd::try_from(0), Err(_)));
#[derive(IntType)]
#[repr(u8)]
enum Method {
    A = 1,
    B = 2,
    #[default]
    C = 3,
}
assert!(matches!(1.into(), Method::A));
assert!(matches!(0.into(), Method::C));

Dependencies

~205–640KB
~15K SLoC