From 29dcb0c06fed27a5431a89d8bd89324c25f121e7 Mon Sep 17 00:00:00 2001 From: Alex Lai <74868436+Alx-Lai@users.noreply.github.com> Date: Mon, 30 Sep 2024 23:15:50 +0800 Subject: [PATCH] Exercise: method and traits: change output (#2383) 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 --- src/methods-and-traits/exercise.md | 2 +- src/methods-and-traits/exercise.rs | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/methods-and-traits/exercise.md b/src/methods-and-traits/exercise.md index d7d8830c627..21a80b46410 100644 --- a/src/methods-and-traits/exercise.md +++ b/src/methods-and-traits/exercise.md @@ -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. diff --git a/src/methods-and-traits/exercise.rs b/src/methods-and-traits/exercise.rs index f7b9fa035cb..a51b4ad25b6 100644 --- a/src/methods-and-traits/exercise.rs +++ b/src/methods-and-traits/exercise.rs @@ -19,11 +19,11 @@ 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 @@ -31,7 +31,7 @@ impl Logger for StderrLogger { /// Only log messages up to the given verbosity level. struct VerbosityFilter { max_verbosity: u8, - inner: StderrLogger, + inner: StdoutLogger, } impl Logger for VerbosityFilter { @@ -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"); }