mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-18 01:44:04 +00:00
rollup merge of #21423: oli-obk/prettier_read_until
Conflicts: src/libstd/io/mod.rs
This commit is contained in:
commit
9ef5484783
@ -1436,33 +1436,31 @@ pub trait Buffer: Reader {
|
||||
fn read_until(&mut self, byte: u8) -> IoResult<Vec<u8>> {
|
||||
let mut res = Vec::new();
|
||||
|
||||
let mut used;
|
||||
loop {
|
||||
{
|
||||
let (done, used) = {
|
||||
let available = match self.fill_buf() {
|
||||
Ok(n) => n,
|
||||
Err(ref e) if res.len() > 0 && e.kind == EndOfFile => {
|
||||
used = 0;
|
||||
break
|
||||
return Ok(res);
|
||||
}
|
||||
Err(e) => return Err(e)
|
||||
};
|
||||
match available.iter().position(|&b| b == byte) {
|
||||
Some(i) => {
|
||||
res.push_all(&available[..i + 1]);
|
||||
used = i + 1;
|
||||
break
|
||||
(true, i + 1)
|
||||
}
|
||||
None => {
|
||||
res.push_all(available);
|
||||
used = available.len();
|
||||
(false, available.len())
|
||||
}
|
||||
}
|
||||
};
|
||||
buffer.consume(used);
|
||||
if done {
|
||||
return Ok(res);
|
||||
}
|
||||
self.consume(used);
|
||||
}
|
||||
self.consume(used);
|
||||
Ok(res)
|
||||
}
|
||||
|
||||
/// Reads the next utf8-encoded character from the underlying stream.
|
||||
|
Loading…
Reference in New Issue
Block a user