This crate provides a convenient derive macro for the core library's From
and TryFrom
traits for converting between integer and enum types.
[dependencies]
int-enum = "1.1"
Compiler support: requires rustc 1.70+
use int_enum::IntEnum;
#[repr(u8)]
#[derive(Debug, PartialEq, IntEnum)]
pub enum Ascii {
UpperA = b'A',
UpperB = b'B',
}
assert_eq!(u8::from(Ascii::UpperA), b'A');
assert_eq!(u8::from(Ascii::UpperB), b'B');
assert_eq!(Ascii::try_from(b'A'), Ok(Ascii::UpperA));
assert_eq!(Ascii::try_from(b'B'), Ok(Ascii::UpperB));
assert_eq!(Ascii::try_from(b'C'), Err(b'C'));
This project is licensed under either of Apache License, Version 2.0 or MIT License at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.