Alıştırma: Kaydedici (Log) Filtresi

Bu sabahki genel kaydediciden (logger) yola çıkarak, kayıt mesajlarını filtrelemek için bir çevreleyici (closure) kullanan bir Filter gerçekleştirin (implement), filtreleme koşulunu geçenleri bir iç kaydediciye (logger) gönderin.

pub trait Logger {
    /// Belirtilen ayrıntı seviyesinde bir mesaj kaydedin.
    fn log(&self, verbosity: u8, message: &str);
}

struct StderrLogger;

impl Logger for StderrLogger {
    fn log(&self, verbosity: u8, message: &str) {
        eprintln!("ayrıntı seviyesi={verbosity}: {message}");
    }
}

// TODO: `Filter`'ı tanımlayın ve gerçekleştirin (implement).

fn main() {
    let logger = Filter::new(StderrLogger, |_verbosity, msg| msg.contains("berbat"));
    logger.log(5, "Bilginiz Olsun");
    logger.log(1, "berbat, bir şeyler ters gitti");
    logger.log(2, "eyvah");
}