fix: resolve compilation errors by standardizing filter signatures and fixing ownership issues

Co-authored-by: aider (openai/andrew/openrouter/sonoma-sky-alpha) <aider@aider.chat>
This commit is contained in:
Andrew Phillips
2025-09-12 12:28:51 -03:00
parent 02d9872b95
commit 82ec29f6a1
10 changed files with 36 additions and 549 deletions

View File

@@ -70,7 +70,7 @@ impl GrepFilter {
/// filter.filter(&mut input, &mut output)?;
/// ```
impl FilterPlugin for GrepFilter {
fn filter(&mut self, reader: Box<&mut dyn Read>, writer: Box<&mut dyn Write>) -> Result<()> {
fn filter(&mut self, mut reader: Box<dyn Read>, mut writer: Box<dyn Write>) -> Result<()> {
let mut buf_reader = std::io::BufReader::new(reader.as_mut());
for line in buf_reader.by_ref().lines() {
let line = line?;

View File

@@ -72,7 +72,7 @@ impl HeadBytesFilter {
/// // Input "Hello World" becomes "Hello"
/// ```
impl FilterPlugin for HeadBytesFilter {
fn filter(&mut self, reader: Box<&mut dyn Read>, writer: Box<&mut dyn Write>) -> Result<()> {
fn filter(&mut self, mut reader: Box<dyn Read>, mut writer: Box<dyn Write>) -> Result<()> {
if self.remaining == 0 {
return Ok(());
}
@@ -182,7 +182,7 @@ impl HeadLinesFilter {
/// // Input "Line1\nLine2\nLine3" becomes "Line1\nLine2\n"
/// ```
impl FilterPlugin for HeadLinesFilter {
fn filter(&mut self, reader: Box<&mut dyn Read>, writer: Box<&mut dyn Write>) -> Result<()> {
fn filter(&mut self, mut reader: Box<dyn Read>, mut writer: Box<dyn Write>) -> Result<()> {
if self.remaining == 0 {
return Ok(());
}

View File

@@ -101,7 +101,7 @@ pub trait FilterPlugin: Send {
/// // ... other methods
/// }
/// ```
fn filter(&mut self, reader: Box<&mut dyn Read>, writer: Box<&mut dyn Write>) -> Result<()>;
fn filter(&mut self, mut reader: Box<dyn Read>, mut writer: Box<dyn Write>) -> Result<()>;
/// Clones this plugin into a new boxed instance.
///
@@ -295,16 +295,16 @@ impl FilterChain {
for i in 0..plugins_len {
// Create a cursor for the current data
let mut cursor = std::io::Cursor::new(&current_data);
let input: Box<&mut dyn Read> = Box::new(&mut cursor);
let input: Box<dyn Read> = Box::new(cursor);
// For the last plugin, write directly to the output writer
if i == plugins_len - 1 {
let output: Box<&mut dyn Write> = Box::new(writer);
let output: Box<dyn Write> = Box::new(writer);
self.plugins[i].filter(input, output)?;
} else {
// For intermediate plugins, write to a buffer
let mut output = Vec::new();
let output_ref: Box<&mut dyn Write> = Box::new(&mut output);
let output_ref: Box<dyn Write> = Box::new(&mut output);
self.plugins[i].filter(input, output_ref)?;
current_data = output;
}

View File

@@ -32,7 +32,7 @@ impl FilterPlugin for SkipBytesFilter {
/// # Returns
///
/// Returns `Ok(())` on success, or an `io::Error` if reading or writing fails.
fn filter(&mut self, reader: Box<&mut dyn Read>, writer: Box<&mut dyn Write>) -> Result<()> {
fn filter(&mut self, mut reader: Box<dyn Read>, mut writer: Box<dyn Write>) -> Result<()> {
// Skip bytes in chunks
if self.remaining > 0 {
let mut buffer = vec![0; PIPESIZE];
@@ -107,7 +107,7 @@ impl FilterPlugin for SkipLinesFilter {
/// # Returns
///
/// Returns `Ok(())` on success, or an `io::Error` if reading or writing fails.
fn filter(&mut self, reader: Box<&mut dyn Read>, writer: Box<&mut dyn Write>) -> Result<()> {
fn filter(&mut self, mut reader: Box<dyn Read>, mut writer: Box<dyn Write>) -> Result<()> {
let mut buf_reader = std::io::BufReader::new(reader.as_mut());
for line in buf_reader.by_ref().lines() {
let line = line?;

View File

@@ -32,7 +32,7 @@ impl FilterPlugin for StripAnsiFilter {
/// # Returns
///
/// Returns `Ok(())` on success, or an `io::Error` if reading or writing fails.
fn filter(&mut self, reader: Box<&mut dyn Read>, writer: Box<&mut dyn Write>) -> Result<()> {
fn filter(&mut self, mut reader: Box<dyn Read>, mut writer: Box<dyn Write>) -> Result<()> {
let mut ansi_writer = Writer::new(writer.as_mut());
std::io::copy(reader.as_mut(), &mut ansi_writer)?;
ansi_writer.flush()?;

View File

@@ -35,7 +35,7 @@ impl FilterPlugin for TailBytesFilter {
/// # Returns
///
/// Returns `Ok(())` on success, or an `io::Error` if reading or writing fails.
fn filter(&mut self, reader: Box<&mut dyn Read>, writer: Box<&mut dyn Write>) -> Result<()> {
fn filter(&mut self, mut reader: Box<dyn Read>, mut writer: Box<dyn Write>) -> Result<()> {
let mut temp_buffer = vec![0; PIPESIZE];
loop {
let bytes_read = reader.as_mut().read(&mut temp_buffer)?;
@@ -117,7 +117,7 @@ impl FilterPlugin for TailLinesFilter {
/// # Returns
///
/// Returns `Ok(())` on success, or an `io::Error` if reading or writing fails.
fn filter(&mut self, reader: Box<&mut dyn Read>, writer: Box<&mut dyn Write>) -> Result<()> {
fn filter(&mut self, mut reader: Box<dyn Read>, mut writer: Box<dyn Write>) -> Result<()> {
let mut buf_reader = std::io::BufReader::new(reader.as_mut());
for line in buf_reader.by_ref().lines() {
let line = line?;