1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
use std::{fmt, io}; use try_from::TryFrom; #[repr(u8)] #[derive(Clone, Debug, PartialEq)] pub enum ModuleState { Uninitialized = 0, Ready = 1, Running = 2, Error = 3, } impl TryFrom<u8> for ModuleState { type Err = io::Error; fn try_from(value: u8) -> io::Result<Self> { match value { 0 => Ok(ModuleState::Uninitialized), 1 => Ok(ModuleState::Ready), 2 => Ok(ModuleState::Running), 3 => Ok(ModuleState::Error), _ => Err(io::Error::new( io::ErrorKind::InvalidData, format!("Invalid ModuleState enum value {}", value), )), } } } impl fmt::Display for ModuleState { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { write!(f, "{:?}", self) } }