[−][src]Trait int_enum::IntEnum
Trait used for implementations of integer and enum conversions.
Examples
Basic usage:
use int_enum::IntEnum; #[repr(u8)] #[derive(Clone, Copy, Debug, Eq, PartialEq, IntEnum)] pub enum SmallInt { One = 1, Two = 2, } assert_eq!(1, SmallInt::One.int_value()); assert_eq!(2, SmallInt::Two.int_value()); assert_eq!(SmallInt::One, SmallInt::from_int(1)?); assert_eq!(SmallInt::Two, SmallInt::from_int(2)?); assert!(SmallInt::from_int(5).is_err());
Serde support (requires feature serialize):
use int_enum::IntEnum; #[repr(i8)] #[derive(Clone, Copy, Debug, Eq, PartialEq, IntEnum)] enum Num { MinusThree = -3, Zero = 0, Five = 5, } assert_eq!("-3", serde_json::to_string(&Num::MinusThree)?); assert_eq!("0", serde_json::to_string(&Num::Zero)?); assert_eq!("5", serde_json::to_string(&Num::Five)?); assert_eq!(Num::MinusThree, serde_json::from_str("-3")?); assert_eq!(Num::Zero, serde_json::from_str("0")?); assert_eq!(Num::Five, serde_json::from_str("5")?); assert!(serde_json::from_str::<Num>("4").is_err());
From and TryFrom support (requires convert feature):
use std::convert::TryFrom; use int_enum::IntEnum; #[repr(u16)] #[derive(Clone, Copy, Debug, Eq, PartialEq, IntEnum)] enum Value { A = 1_000, B = 1_001, C = 1_002, } assert_eq!(1_000, u16::from(Value::A)); assert_eq!(1_001, u16::from(Value::B)); assert_eq!(1_002, u16::from(Value::C)); assert_eq!(Value::A, Value::try_from(1_000)?); assert_eq!(Value::B, Value::try_from(1_001)?); assert_eq!(Value::C, Value::try_from(1_002)?); assert!(Value::try_from(2_000).is_err());
Associated Types
type Int: PrimInt
Primitive integer type for conversions.
Required methods
fn int_value(self) -> Self::Int
Returns the integer value of the enum.
fn from_int(n: Self::Int) -> Result<Self, IntEnumError<Self>> where
Self: Sized,
Self: Sized,
Attempts to convert an integer into the enum.