Implement BufRead for Chain
This commit is contained in:
parent
deee0f73da
commit
373f93a629
1 changed files with 21 additions and 0 deletions
|
@ -1442,6 +1442,27 @@ impl<T: Read, U: Read> Read for Chain<T, U> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[stable(feature = "chain_bufread", since = "1.9.0")]
|
||||||
|
impl<T: BufRead, U: BufRead> BufRead for Chain<T, U> {
|
||||||
|
fn fill_buf(&mut self) -> Result<&[u8]> {
|
||||||
|
if !self.done_first {
|
||||||
|
match try!(self.first.fill_buf()) {
|
||||||
|
buf if buf.len() == 0 => { self.done_first = true; }
|
||||||
|
buf => return Ok(buf),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
self.second.fill_buf()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn consume(&mut self, amt: usize) {
|
||||||
|
if !self.done_first {
|
||||||
|
self.first.consume(amt)
|
||||||
|
} else {
|
||||||
|
self.second.consume(amt)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Reader adaptor which limits the bytes read from an underlying reader.
|
/// Reader adaptor which limits the bytes read from an underlying reader.
|
||||||
///
|
///
|
||||||
/// This struct is generally created by calling [`take()`][take] on a reader.
|
/// This struct is generally created by calling [`take()`][take] on a reader.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue