#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub enum LogLevel {
Error,
Warn,
Info,
Debug,
Trace,
}
impl LogLevel {
#[inline]
pub fn as_str(self) -> &'static str {
match self {
LogLevel::Error => "error",
LogLevel::Warn => "warn",
LogLevel::Info => "info",
LogLevel::Debug => "debug",
LogLevel::Trace => "trace",
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn as_str_returns_lowercase_names() {
assert_eq!(LogLevel::Error.as_str(), "error");
assert_eq!(LogLevel::Warn.as_str(), "warn");
assert_eq!(LogLevel::Info.as_str(), "info");
assert_eq!(LogLevel::Debug.as_str(), "debug");
assert_eq!(LogLevel::Trace.as_str(), "trace");
}
#[test]
fn ordering_error_most_severe_trace_least() {
use std::cmp::Ordering;
assert!(LogLevel::Error < LogLevel::Warn);
assert!(LogLevel::Warn < LogLevel::Info);
assert!(LogLevel::Info < LogLevel::Debug);
assert!(LogLevel::Debug < LogLevel::Trace);
assert_eq!(LogLevel::Error.cmp(&LogLevel::Error), Ordering::Equal);
}
}