#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord)]
pub enum PrivilegeMode {
User = 0,
Supervisor = 1,
Machine = 3,
}
impl PrivilegeMode {
pub const fn from_u8(val: u8) -> Self {
match val {
0 => Self::User,
1 => Self::Supervisor,
_ => Self::Machine,
}
}
pub const fn to_u8(self) -> u8 {
self as u8
}
pub const fn name(self) -> &'static str {
match self {
Self::User => "User",
Self::Supervisor => "Supervisor",
Self::Machine => "Machine",
}
}
}
impl std::fmt::Display for PrivilegeMode {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.write_str(self.name())
}
}