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.
41 lines
722 B
41 lines
722 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 Logger
|
|
}
|
|
|
|
impl<'a> FilteringLogger<'a> {
|
|
pub fn new(logger: &'a mut Logger) -> Self {
|
|
FilteringLogger { logger }
|
|
}
|
|
}
|
|
|
|
impl<'a> Logger for FilteringLogger<'a> {
|
|
fn debug(&mut self, str: &str) {
|
|
return
|
|
}
|
|
fn write(&mut self, str: &str) {
|
|
self.logger.write(str)
|
|
}
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod test {
|
|
}
|