diff options
-rw-r--r-- | src/output/mod.rs | 14 | ||||
-rw-r--r-- | src/output/pipeline.rs | 16 |
2 files changed, 17 insertions, 13 deletions
diff --git a/src/output/mod.rs b/src/output/mod.rs index 84ed0a4..aadcbf9 100644 --- a/src/output/mod.rs +++ b/src/output/mod.rs @@ -8,18 +8,20 @@ pub mod pipeline; pub use self::pipeline::Pipeline; +use self::formats::Format; /// Build an pipeline for the given command line options. pub fn build_pipeline(opt: &Opt) -> Pipeline { let stream = io::stdout(); let aggregator = aggregators::WriteThrough; - if opt.file_name_only { - Pipeline::new(stream, formats::FileOnly, aggregator) + let format: Box<dyn Format> = if opt.file_name_only { + Box::new(formats::FileOnly) } else { - let format = formats::HumanReadable { + Box::new(formats::HumanReadable { show_guilds: opt.guilds, - }; - Pipeline::new(stream, format, aggregator) - } + }) + }; + + Pipeline::new(Box::new(stream), format, Box::new(aggregator)) } diff --git a/src/output/pipeline.rs b/src/output/pipeline.rs index fb23a6f..9664928 100644 --- a/src/output/pipeline.rs +++ b/src/output/pipeline.rs @@ -1,22 +1,24 @@ -use super::{formats::Format, aggregators::Aggregator}; use super::super::LogResult; +use super::{aggregators::Aggregator, formats::Format}; use std::{io::Write, sync::Mutex}; - pub struct Pipeline { format: Box<dyn Format>, aggregator: Box<dyn Aggregator>, writer: Mutex<Box<dyn Write + Send>>, } - impl Pipeline { - pub fn new<W: Write + 'static + Send, F: Format + 'static, A: Aggregator + 'static>(writer: W, format: F, aggregator: A) -> Pipeline { + pub fn new( + writer: Box<dyn Write + Send>, + format: Box<dyn Format>, + aggregator: Box<dyn Aggregator>, + ) -> Pipeline { Pipeline { - format: Box::new(format), - aggregator: Box::new(aggregator), - writer: Mutex::new(Box::new(writer)), + format, + aggregator, + writer: Mutex::new(writer), } } |