refactor: Update FilterPlugin methods to use boxed Read/Write traits
Co-authored-by: aider (openai/andrew/openrouter/deepseek/deepseek-chat-v3.1) <aider@aider.chat>
This commit is contained in:
@@ -15,7 +15,7 @@ impl HeadBytesFilter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl FilterPlugin for HeadBytesFilter {
|
impl FilterPlugin for HeadBytesFilter {
|
||||||
fn filter<R: Read, W: Write>(&mut self, reader: &mut R, writer: &mut W) -> Result<()> {
|
fn filter(&mut self, reader: Box<&mut dyn Read>, writer: Box<&mut dyn Write>) -> Result<()> {
|
||||||
if self.remaining == 0 {
|
if self.remaining == 0 {
|
||||||
return Ok(());
|
return Ok(());
|
||||||
}
|
}
|
||||||
@@ -47,13 +47,13 @@ impl HeadLinesFilter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl FilterPlugin for HeadLinesFilter {
|
impl FilterPlugin for HeadLinesFilter {
|
||||||
fn filter<R: Read, W: Write>(&mut self, reader: &mut R, writer: &mut W) -> Result<()> {
|
fn filter(&mut self, reader: Box<&mut dyn Read>, writer: Box<&mut dyn Write>) -> Result<()> {
|
||||||
if self.remaining == 0 {
|
if self.remaining == 0 {
|
||||||
return Ok(());
|
return Ok(());
|
||||||
}
|
}
|
||||||
|
|
||||||
let buf_reader = std::io::BufReader::new(reader);
|
let mut buf_reader = std::io::BufReader::new(reader);
|
||||||
for line in buf_reader.lines() {
|
for line in buf_reader.by_ref().lines() {
|
||||||
let line = line?;
|
let line = line?;
|
||||||
writeln!(writer, "{}", line)?;
|
writeln!(writer, "{}", line)?;
|
||||||
self.remaining -= 1;
|
self.remaining -= 1;
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ impl SkipBytesFilter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl FilterPlugin for SkipBytesFilter {
|
impl FilterPlugin for SkipBytesFilter {
|
||||||
fn filter<R: Read, W: Write>(&mut self, reader: &mut R, writer: &mut W) -> Result<()> {
|
fn filter(&mut self, reader: Box<&mut dyn Read>, writer: Box<&mut dyn Write>) -> Result<()> {
|
||||||
// Skip bytes in chunks
|
// Skip bytes in chunks
|
||||||
if self.remaining > 0 {
|
if self.remaining > 0 {
|
||||||
let mut buffer = vec![0; PIPESIZE];
|
let mut buffer = vec![0; PIPESIZE];
|
||||||
@@ -30,7 +30,8 @@ impl FilterPlugin for SkipBytesFilter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Copy the remaining data using io::copy for efficiency
|
// Copy the remaining data using io::copy for efficiency
|
||||||
std::io::copy(reader, writer)
|
std::io::copy(&mut *reader, &mut *writer)?;
|
||||||
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -47,9 +48,9 @@ impl SkipLinesFilter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl FilterPlugin for SkipLinesFilter {
|
impl FilterPlugin for SkipLinesFilter {
|
||||||
fn filter<R: Read, W: Write>(&mut self, reader: &mut R, writer: &mut W) -> Result<()> {
|
fn filter(&mut self, reader: Box<&mut dyn Read>, writer: Box<&mut dyn Write>) -> Result<()> {
|
||||||
let buf_reader = std::io::BufReader::new(reader);
|
let mut buf_reader = std::io::BufReader::new(reader);
|
||||||
for line in buf_reader.lines() {
|
for line in buf_reader.by_ref().lines() {
|
||||||
let line = line?;
|
let line = line?;
|
||||||
if self.remaining > 0 {
|
if self.remaining > 0 {
|
||||||
self.remaining -= 1;
|
self.remaining -= 1;
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ impl TailBytesFilter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl FilterPlugin for TailBytesFilter {
|
impl FilterPlugin for TailBytesFilter {
|
||||||
fn filter<R: Read, W: Write>(&mut self, reader: &mut R, writer: &mut W) -> Result<()> {
|
fn filter(&mut self, reader: Box<&mut dyn Read>, writer: Box<&mut dyn Write>) -> Result<()> {
|
||||||
let mut temp_buffer = vec![0; PIPESIZE];
|
let mut temp_buffer = vec![0; PIPESIZE];
|
||||||
loop {
|
loop {
|
||||||
let bytes_read = reader.read(&mut temp_buffer)?;
|
let bytes_read = reader.read(&mut temp_buffer)?;
|
||||||
@@ -57,9 +57,9 @@ impl TailLinesFilter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl FilterPlugin for TailLinesFilter {
|
impl FilterPlugin for TailLinesFilter {
|
||||||
fn filter<R: Read, W: Write>(&mut self, reader: &mut R, writer: &mut W) -> Result<()> {
|
fn filter(&mut self, reader: Box<&mut dyn Read>, writer: Box<&mut dyn Write>) -> Result<()> {
|
||||||
let buf_reader = std::io::BufReader::new(reader);
|
let mut buf_reader = std::io::BufReader::new(reader);
|
||||||
for line in buf_reader.lines() {
|
for line in buf_reader.by_ref().lines() {
|
||||||
let line = line?;
|
let line = line?;
|
||||||
if self.lines.len() == self.count {
|
if self.lines.len() == self.count {
|
||||||
self.lines.pop_front();
|
self.lines.pop_front();
|
||||||
|
|||||||
Reference in New Issue
Block a user