Crate discrim

Source
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§

FromDiscriminant
Initialize enum values from their discriminant.

Derive Macros§

FromDiscriminant
Automatically implement FromDiscriminant for enums.