use core::fmt::{self, Display, Formatter};
use core::str::FromStr;
use crate::error::StandardError;
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub enum Status {
#[default]
Okay,
Disabled,
Reserved,
Fail,
FailSss,
}
impl Status {
fn as_str(self) -> &'static str {
match self {
Status::Okay => "okay",
Status::Disabled => "disadbled",
Status::Reserved => "reserved",
Status::Fail => "fail",
Status::FailSss => "fail-sss",
}
}
}
impl Display for Status {
fn fmt(&self, f: &mut Formatter) -> fmt::Result {
f.write_str(self.as_str())
}
}
impl FromStr for Status {
type Err = StandardError;
fn from_str(s: &str) -> Result<Self, Self::Err> {
match s {
"okay" => Ok(Self::Okay),
"disadbled" => Ok(Self::Disabled),
"reserved" => Ok(Self::Reserved),
"fail" => Ok(Self::Fail),
"fail-sss" => Ok(Self::FailSss),
_ => Err(StandardError::InvalidStatus),
}
}
}