From 85925dacda91a5918131afae5d4cb3e1e8418171 Mon Sep 17 00:00:00 2001 From: dousamichal0807 Date: Sat, 16 Apr 2022 19:56:10 +0200 Subject: [PATCH] Fixed compile error caused by improper lifetime bounds. --- src/loggers/composite.rs | 15 ++++----------- src/loggers/text.rs | 20 +++++++++++++------- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/src/loggers/composite.rs b/src/loggers/composite.rs index 6b2604a..a4f25b9 100644 --- a/src/loggers/composite.rs +++ b/src/loggers/composite.rs @@ -22,13 +22,11 @@ use std::ops::DerefMut; use crate::Logger; use crate::LogLevel; -type LoggerVec = Vec>; - /// Represents a [`Logger`] that consists of many [`Logger`]s. /// /// [`CompositeLogger`] is used through its [`Deref`] and [`DerefMut`] /// implementations which yield a borrow to the inner [`Vec`] of [`Logger`]s. -pub struct CompositeLogger (LoggerVec); +pub struct CompositeLogger (Vec>); impl CompositeLogger { /// Creates a new [`CompositeLogger`] instance. @@ -46,11 +44,6 @@ impl CompositeLogger { Self(Vec::with_capacity(capacity)) } - pub fn add(&mut self, logger: L) - where L: Logger { - self.0.push(logger) - } - /// Merges `self` with another instance of [`CompositeLogger`]. /// /// # Parameters @@ -71,14 +64,14 @@ impl Logger for CompositeLogger { } impl Deref for CompositeLogger { - type Target = LoggerVec; - fn deref(&self) -> &LoggerVec { + type Target = Vec>; + fn deref(&self) -> &Vec> { &self.0 } } impl DerefMut for CompositeLogger { - fn deref_mut(&mut self) -> &mut LoggerVec { + fn deref_mut(&mut self) -> &mut Vec> { &mut self.0 } } \ No newline at end of file diff --git a/src/loggers/text.rs b/src/loggers/text.rs index f713949..796c38c 100644 --- a/src/loggers/text.rs +++ b/src/loggers/text.rs @@ -28,10 +28,6 @@ use crate::LogLevel; /// output stream. The output stream can be anything, from [`Stdout`] to [`File`] or /// [`TcpStream`]. /// -/// [`File`]: std::fs::File -/// [`Stdout`]: std::io::Stdout -/// [`TcpStream`]: std::net::TcpStream -/// /// # Usage /// /// ```rust @@ -52,14 +48,22 @@ use crate::LogLevel; /// logger.log(LogLevel::Fatal, "NO! FATAL ERROR! Application is shut down!"); /// } /// ``` +/// +/// [`File`]: std::fs::File +/// [`Stdout`]: std::io::Stdout +/// [`TcpStream`]: std::net::TcpStream pub struct TextLogger - where W: Write { +where + W: Send + Sync + Write +{ min_log_level: LogLevel, writer: W, } impl TextLogger - where W: Write { +where + W: Write + Send + Sync +{ /// Creates a new [`TextLogger`] instance with given name, minimum log level and /// output stream. /// @@ -82,7 +86,9 @@ impl TextLogger } impl Logger for TextLogger - where W: Write { +where + W: Write + Send + Sync +{ fn log(&mut self, log_level: LogLevel, message: &str) -> io::Result<()> { // Do not do anything if log level is too low: if log_level < self.min_log_level { return Result::Ok(()) }