You've already forked comprehensive-rust
mirror of
https://github.com/google/comprehensive-rust.git
synced 2025-07-13 17:44:20 +02:00
Miscellaneous minor improvements (#2370)
This commit is contained in:
@ -14,25 +14,18 @@
|
||||
|
||||
// ANCHOR: solution
|
||||
// ANCHOR: setup
|
||||
use std::fmt::Display;
|
||||
|
||||
pub trait Logger {
|
||||
/// Log a message at the given verbosity level.
|
||||
fn log(&self, verbosity: u8, message: impl Display);
|
||||
fn log(&self, verbosity: u8, message: &str);
|
||||
}
|
||||
|
||||
struct StderrLogger;
|
||||
|
||||
impl Logger for StderrLogger {
|
||||
fn log(&self, verbosity: u8, message: impl Display) {
|
||||
fn log(&self, verbosity: u8, message: &str) {
|
||||
eprintln!("verbosity={verbosity}: {message}");
|
||||
}
|
||||
}
|
||||
|
||||
fn do_things(logger: &impl Logger) {
|
||||
logger.log(5, "FYI");
|
||||
logger.log(2, "Uhoh");
|
||||
}
|
||||
// ANCHOR_END: setup
|
||||
|
||||
/// Only log messages up to the given verbosity level.
|
||||
@ -42,7 +35,7 @@ struct VerbosityFilter {
|
||||
}
|
||||
|
||||
impl Logger for VerbosityFilter {
|
||||
fn log(&self, verbosity: u8, message: impl Display) {
|
||||
fn log(&self, verbosity: u8, message: &str) {
|
||||
if verbosity <= self.max_verbosity {
|
||||
self.inner.log(verbosity, message);
|
||||
}
|
||||
@ -51,7 +44,8 @@ impl Logger for VerbosityFilter {
|
||||
|
||||
// ANCHOR: main
|
||||
fn main() {
|
||||
let l = VerbosityFilter { max_verbosity: 3, inner: StderrLogger };
|
||||
do_things(&l);
|
||||
let logger = VerbosityFilter { max_verbosity: 3, inner: StderrLogger };
|
||||
logger.log(5, "FYI");
|
||||
logger.log(2, "Uhoh");
|
||||
}
|
||||
// ANCHOR_END: main
|
||||
|
Reference in New Issue
Block a user