Skip to content

Commit

Permalink
Exercise: method and traits: change output (#2383)
Browse files Browse the repository at this point in the history
In this exercise, the original StderrLogger output to stderr, which user
cannot see the original log but "No output" in frontend". Change
`eprintln!` to `println!` to make it see-able in the frontend. Also, due
to the change, rename the logger struct.

Close: #2382

Signed-off-by: Alx-Lai <alexabc722@gmail.com>
  • Loading branch information
Alx-Lai authored Sep 30, 2024
1 parent 0fe2722 commit 29dcb0c
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 6 deletions.
2 changes: 1 addition & 1 deletion src/methods-and-traits/exercise.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ method. Code which might log its progress can then take an `&impl Logger`. In
testing, this might put messages in the test logfile, while in a production
build it would send messages to a log server.

However, the `StderrLogger` given below logs all messages, regardless of
However, the `StdoutLogger` given below logs all messages, regardless of
verbosity. Your task is to write a `VerbosityFilter` type that will ignore
messages above a maximum verbosity.

Expand Down
10 changes: 5 additions & 5 deletions src/methods-and-traits/exercise.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,19 +19,19 @@ pub trait Logger {
fn log(&self, verbosity: u8, message: &str);
}

struct StderrLogger;
struct StdoutLogger;

impl Logger for StderrLogger {
impl Logger for StdoutLogger {
fn log(&self, verbosity: u8, message: &str) {
eprintln!("verbosity={verbosity}: {message}");
println!("verbosity={verbosity}: {message}");
}
}
// ANCHOR_END: setup

/// Only log messages up to the given verbosity level.
struct VerbosityFilter {
max_verbosity: u8,
inner: StderrLogger,
inner: StdoutLogger,
}

impl Logger for VerbosityFilter {
Expand All @@ -44,7 +44,7 @@ impl Logger for VerbosityFilter {

// ANCHOR: main
fn main() {
let logger = VerbosityFilter { max_verbosity: 3, inner: StderrLogger };
let logger = VerbosityFilter { max_verbosity: 3, inner: StdoutLogger };
logger.log(5, "FYI");
logger.log(2, "Uhoh");
}
Expand Down

0 comments on commit 29dcb0c

Please sign in to comment.