pub mod handler_trait;
use std::{fmt, hash::Hash, io::Error};
pub use handler_trait::HandlerTrait;
#[derive(Debug, Default, Clone, Hash, PartialEq, Eq)]
pub enum Handler {
#[default]
Console,
EConsole,
File,
PConsole,
String,
Custom(String),
}
impl fmt::Display for Handler {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let text = match &self {
Handler::Console => "Console",
Handler::EConsole => "EConsole",
Handler::File => "File",
Handler::PConsole => "PConsole",
Handler::String => "String",
Handler::Custom(label) => &format!("Custom({label})"),
};
write!(f, "Handler::{text}")
}
}
#[cfg(test)]
mod test {
use super::Handler;
#[test]
fn handlers() {
let console = Handler::Console;
let econsole = Handler::EConsole;
let pconsole = Handler::PConsole;
let file = Handler::File;
let string = Handler::String;
let custom = Handler::Custom("MyCustom".to_string());
assert_eq!(console.to_string(), "Handler::Console".to_string());
assert_eq!(econsole.to_string(), "Handler::EConsole".to_string());
assert_eq!(pconsole.to_string(), "Handler::PConsole".to_string());
assert_eq!(file.to_string(), "Handler::File".to_string());
assert_eq!(string.to_string(), "Handler::String".to_string());
assert_eq!(custom.to_string(), "Handler::Custom(MyCustom)".to_string());
}
}