A declarative macro for type-safe enum-to-numbers conversion. no-std
supported!
use numeric_enum_macro::numeric_enum;
numeric_enum! {
#[repr(i64)] // repr must go first.
/// Some docs.
///
/// Multiline docs works too.
#[derive(Debug, PartialEq, PartialOrd, Ord, Eq, Hash)] // all the attributes are forwarded!
pub enum Lol {
// All the constants must have explicit values assigned!
Kek = 14,
Wow = 87,
}
}
// Conversion to raw number:
assert_eq!(14i64, Lol::Kek.into());
// Conversion from raw number:
assert_eq!(Ok(Lol::Wow), Lol::try_from(87));
// Unknown number:
assert_eq!(Err(88), Lol::try_from(88));
License: MIT/Apache-2.0