use core::str::FromStr;
#[must_use]
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
pub enum UnitId {
Broadcast,
NonSignificant,
Significant(u8),
}
impl From<u8> for UnitId {
fn from(unit_id: u8) -> Self {
match unit_id {
0 => Self::Broadcast,
255 => Self::NonSignificant,
_ => Self::Significant(unit_id),
}
}
}
impl From<UnitId> for u8 {
fn from(unit_id: UnitId) -> Self {
match unit_id {
UnitId::Broadcast => 0,
UnitId::NonSignificant => 255,
UnitId::Significant(unit_id) => unit_id,
}
}
}
impl FromStr for UnitId {
type Err = core::num::ParseIntError;
fn from_str(s: &str) -> Result<Self, Self::Err> {
Ok(Self::from(u8::from_str(s)?))
}
}