/// A log level that can be used as an expected argument, /// decoded from a string, and converted into a [`log::LevelFilter`] #[derive(Debug, PartialEq)] pub enum LogLevel { Error, Warn, Info, Debug, Trace, } impl std::str::FromStr for LogLevel { type Err = &'static str; fn from_str(s: &str) -> Result { match s { "error" => Ok(LogLevel::Error), "warn" => Ok(LogLevel::Warn), "info" => Ok(LogLevel::Info), "debug" => Ok(LogLevel::Debug), "trace" => Ok(LogLevel::Trace), _ => Err("expected 'error', 'warn', 'info', 'debug' or 'trace'"), } } } impl From<&LogLevel> for log::LevelFilter { fn from(log_level: &LogLevel) -> Self { match log_level { LogLevel::Error => log::LevelFilter::Error, LogLevel::Warn => log::LevelFilter::Warn, LogLevel::Info => log::LevelFilter::Info, LogLevel::Debug => log::LevelFilter::Debug, LogLevel::Trace => log::LevelFilter::Trace, } } }