use std::fmt::Display;
#[repr(u8)]
#[derive(Copy, Clone)]
pub enum BussAction {
Noop = 0,
Read,
Write,
Modify,
Delete,
}
#[derive(Debug)]
pub enum BussActionError {
Unhandled(u8),
}
impl Display for BussActionError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Self::Unhandled(value) => write!(
f,
"Unexpected action value 0x{:x} which has not been implemented internally.",
value
),
}
}
}
impl TryFrom<u8> for BussAction {
type Error = BussActionError;
fn try_from(value: u8) -> Result<Self, Self::Error> {
match value {
0 => Ok(BussAction::Noop),
1 => Ok(BussAction::Read),
2 => Ok(BussAction::Write),
3 => Ok(BussAction::Modify),
4 => Ok(BussAction::Delete),
_ => Err(BussActionError::Unhandled(value)),
}
}
}