1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
pub trait Listener: Send + Sync { fn warning(&self, s: String); fn info(&self, s: String); } pub struct NoOpListener; impl Listener for NoOpListener { fn info(&self, _s: String) {} fn warning(&self, _s: String) {} } pub struct StdErrListener { pub verbose: bool, } impl Listener for StdErrListener { fn warning(&self, s: String) { eprintln!("warning: {}", s); } fn info(&self, s: String) { if self.verbose { eprintln!("info: {}", s); } } }