use crate::*;
#[cfg(feature = "radix_engine_fuzzing")]
use arbitrary::Arbitrary;
use core::str::FromStr;
use sbor::rust::prelude::*;
#[cfg_attr(
feature = "radix_engine_fuzzing",
derive(Arbitrary, serde::Serialize, serde::Deserialize)
)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Sbor, Ord, PartialOrd, Default)]
pub enum Level {
Error,
Warn,
#[default]
Info,
Debug,
Trace,
}
impl fmt::Display for Level {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Level::Error => write!(f, "ERROR"),
Level::Warn => write!(f, "WARN"),
Level::Info => write!(f, "INFO"),
Level::Debug => write!(f, "DEBUG"),
Level::Trace => write!(f, "TRACE"),
}
}
}
impl FromStr for Level {
type Err = String;
fn from_str(s: &str) -> Result<Self, Self::Err> {
match s {
"ERROR" => Ok(Self::Error),
"WARN" => Ok(Self::Warn),
"INFO" => Ok(Self::Info),
"DEBUG" => Ok(Self::Debug),
"TRACE" => Ok(Self::Trace),
_ => Err(format!("Invalid level: {}", s)),
}
}
}