#[derive(Copy, Clone, PartialEq, Debug)]
pub enum LogLevel {
Debug,
Info,
Warn,
Error,
}
impl LogLevel {
pub(crate) fn as_str(self) -> &'static str {
match self {
LogLevel::Debug => "debug",
LogLevel::Info => "info",
LogLevel::Warn => "warn",
LogLevel::Error => "error",
}
}
pub(crate) fn severity(self) -> usize {
match self {
LogLevel::Debug => 0,
LogLevel::Info => 1,
LogLevel::Warn => 2,
LogLevel::Error => 3,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_as_str() {
assert_eq!(LogLevel::Debug.as_str(), "debug");
assert_eq!(LogLevel::Info.as_str(), "info");
assert_eq!(LogLevel::Warn.as_str(), "warn");
assert_eq!(LogLevel::Error.as_str(), "error");
}
#[test]
fn test_severity() {
assert!(LogLevel::Debug.severity() < LogLevel::Info.severity());
assert!(LogLevel::Info.severity() < LogLevel::Warn.severity());
assert!(LogLevel::Warn.severity() < LogLevel::Error.severity());
}
}