diff --git a/src/filter_plugin/grep.rs b/src/filter_plugin/grep.rs index 4a3a118..bc31445 100644 --- a/src/filter_plugin/grep.rs +++ b/src/filter_plugin/grep.rs @@ -27,4 +27,10 @@ impl FilterPlugin for GrepFilter { } Ok(()) } + + fn clone_box(&self) -> Box { + Box::new(Self { + regex: self.regex.clone(), + }) + } } diff --git a/src/filter_plugin/mod.rs b/src/filter_plugin/mod.rs index ff18e3e..833f972 100644 --- a/src/filter_plugin/mod.rs +++ b/src/filter_plugin/mod.rs @@ -11,6 +11,7 @@ pub mod utils; pub trait FilterPlugin: Send { fn filter(&mut self, reader: Box<&mut dyn Read>, writer: Box<&mut dyn Write>) -> Result<()>; + fn clone_box(&self) -> Box; } #[derive(Debug, EnumString, strum::VariantNames)] diff --git a/src/filter_plugin/strip_ansi.rs b/src/filter_plugin/strip_ansi.rs index 0289d91..afc0d43 100644 --- a/src/filter_plugin/strip_ansi.rs +++ b/src/filter_plugin/strip_ansi.rs @@ -16,4 +16,8 @@ impl FilterPlugin for StripAnsiFilter { std::io::copy(&mut *reader, &mut ansi_writer)?; ansi_writer.flush() } + + fn clone_box(&self) -> Box { + Box::new(Self) + } }