num_enum

Derive Macro TryFromPrimitive

#[derive(TryFromPrimitive)]
{
    // Attributes available to this derive:
    #[num_enum]
}
Expand description

Implements TryFrom<Primitive> for a #[repr(Primitive)] enum.

ยงAttempting to turn a primitive into an enum with try_from.

use num_enum::TryFromPrimitive;
use std::convert::TryFrom;

#[derive(Debug, Eq, PartialEq, TryFromPrimitive)]
#[repr(u8)]
enum Number {
    Zero,
    One,
}

let zero = Number::try_from(0u8);
assert_eq!(zero, Ok(Number::Zero));

let three = Number::try_from(3u8);
assert_eq!(
    three.unwrap_err().to_string(),
    "No discriminant in enum `Number` matches the value `3`",
);