Expand description
Automatically initialize enum variants by discriminant.
This crate provides the FromDiscriminant
trait and associated derive macro
for automatically generating code to initialize enum values from their discriminant.
Basically, for fieldless, non-generic enums with a #[repr(...)]
specified, the derive macro generates
the giant match block required to initialize the enum from a discriminant value as an implementation of FromDiscriminant
.
Usage
Given an enum that fits these constraints:
use discrim::FromDiscriminant;
#[derive(Debug, FromDiscriminant, PartialEq)]
#[repr(u8)]
enum Opcode {
Add, Sub, Mul, Div
}
assert_eq!(Opcode::from_discriminant(2), Ok(Opcode::Mul));
assert_eq!(Opcode::from_discriminant(5), Err(5));
Traits
- Initialize enum values from their discriminant.
Derive Macros
- Automatically implement
FromDiscriminant
for enums.