macro_rules! usize_try_from {
($(#[$meta:meta])* $vis:vis enum $name:ident {
$($(#[$vmeta:meta])* $vname:ident $(= $val:expr)?,)*
}) => { ... };
}
Expand description
Associates usize values to each enum value and declares
a TryFrom<usize>
implementation for this enum allowing
a try_from(usize)
to enum conversion.
Example:
use workflow_core::enums::usize_try_from;
usize_try_from!{
#[derive(Debug, Clone, PartialEq)]
enum MyEnum {
A, // 0usize
B, // 1usize
C, // 2usize
}
}
let v1 = MyEnum::B;
let n: usize = v1.clone() as usize;
let v2 = MyEnum::try_from(n).unwrap();
assert_eq!(v1, v2);