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>> {
|
fn read_until(&mut self, byte: u8) -> IoResult<Vec<u8>> {
|
||||||
let mut res = Vec::new();
|
let mut res = Vec::new();
|
||||||
|
|
||||||
let mut used;
|
|
||||||
loop {
|
loop {
|
||||||
{
|
let (done, used) = {
|
||||||
let available = match self.fill_buf() {
|
let available = match self.fill_buf() {
|
||||||
Ok(n) => n,
|
Ok(n) => n,
|
||||||
Err(ref e) if res.len() > 0 && e.kind == EndOfFile => {
|
Err(ref e) if res.len() > 0 && e.kind == EndOfFile => {
|
||||||
used = 0;
|
return Ok(res);
|
||||||
break
|
|
||||||
}
|
}
|
||||||
Err(e) => return Err(e)
|
Err(e) => return Err(e)
|
||||||
};
|
};
|
||||||
match available.iter().position(|&b| b == byte) {
|
match available.iter().position(|&b| b == byte) {
|
||||||
Some(i) => {
|
Some(i) => {
|
||||||
res.push_all(&available[..i + 1]);
|
res.push_all(&available[..i + 1]);
|
||||||
used = i + 1;
|
(true, i + 1)
|
||||||
break
|
|
||||||
}
|
}
|
||||||
None => {
|
None => {
|
||||||
res.push_all(available);
|
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.
|
/// Reads the next utf8-encoded character from the underlying stream.
|
||||||
|
|
Loading…
Reference in New Issue