Macro macro_bits::serializable_enum
source · macro_rules! serializable_enum { ( $(#[$enum_attr:meta])* $enum_visibility:vis enum $enum_name:ident : $representation:ty { $( $(#[$field_attr:meta])* $field_name:ident => $field_value:expr ),* } ) => { ... }; }
Expand description
Generate a serializable enum.
An Unknown field is always generated, which contains a variable, which type is the enum representation.
use macro_bits::serializable_enum;
serializable_enum! {
#[derive(Debug, PartialEq)]
pub enum ABC: u8 {
/// This is a doc comment too.
A => 0,
B => 1,
C => 2
}
}
assert_eq!(ABC::from_representation(2), ABC::C);
assert_eq!(ABC::from_representation(3), ABC::Unknown(3));
assert_eq!((ABC::C).to_representation(), 2);