A library for writing host-specific, single-binary configuration management and deployment tools
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

38 lines
717 B

use std::io::stderr;
use std::io::Write;
pub trait Logger {
fn write(&mut self, &str);
fn debug(&mut self, &str);
}
pub struct StdErrLogger;
impl Logger for StdErrLogger {
fn debug(&mut self, str: &str) {
writeln!(&mut stderr(), "{}", str).unwrap();
}
fn write(&mut self, str: &str) {
writeln!(&mut stderr(), "{}", str).unwrap();
}
}
pub struct FilteringLogger<'a> {
logger: &'a mut dyn Logger,
}
impl<'a> FilteringLogger<'a> {
pub fn new(logger: &'a mut dyn Logger) -> Self {
FilteringLogger { logger }
}
}
impl<'a> Logger for FilteringLogger<'a> {
fn debug(&mut self, _str: &str) {}
fn write(&mut self, str: &str) {
self.logger.write(str)
}
}
#[cfg(test)]
mod test {}