src/methods-and-traits/exercise.md
Let's design a simple logging utility, using a trait Logger with a log
method. Code that 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
verbosity. Your task is to write a VerbosityFilter type that will ignore
messages above a maximum verbosity.
This is a common pattern: a struct wrapping a trait implementation and implementing that same trait, adding behavior in the process. In the "Generics" segment, we will see how to make the wrapper generic over the wrapped type.
# // Copyright 2023 Google LLC
# // SPDX-License-Identifier: Apache-2.0
#
{{#include exercise.rs:setup}}
// TODO: Implement the `Logger` trait for `VerbosityFilter`.
{{#include exercise.rs:main}}