Skip to content

Commit 6f1a644

Browse files
Mingundralley
authored andcommitted
Rewrite read_element like read_pi
1 parent 0a6ecd6 commit 6f1a644

File tree

1 file changed

+19
-20
lines changed

1 file changed

+19
-20
lines changed

src/reader/buffered_reader.rs

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -195,34 +195,33 @@ macro_rules! impl_buffered_source {
195195

196196
let start = buf.len();
197197
loop {
198-
match self $(.$reader)? .fill_buf() $(.$await)? {
198+
let available = match self $(.$reader)? .fill_buf() $(.$await)? {
199199
Ok(n) if n.is_empty() => break,
200-
Ok(available) => {
201-
if let Some(used) = parser.feed(available) {
200+
Ok(n) => n,
201+
Err(ref e) if e.kind() == io::ErrorKind::Interrupted => continue,
202+
Err(e) => {
203+
*position += read;
204+
return Err(Error::Io(e.into()));
205+
}
206+
};
207+
208+
if let Some(used) = parser.feed(available) {
202209
buf.extend_from_slice(&available[..used]);
203210

204211
// +1 for `>` which we do not include
205212
self $(.$reader)? .consume(used + 1);
206213
read += used + 1;
207214

208-
// Position now just after the `>` symbol
209-
*position += read;
210-
return Ok(&buf[start..]);
211-
} else {
212-
// The `>` symbol not yet found, continue reading
213-
buf.extend_from_slice(available);
215+
// Position now just after the `>` symbol
216+
*position += read;
217+
return Ok(&buf[start..]);
218+
}
214219

215-
let used = available.len();
216-
self $(.$reader)? .consume(used);
217-
read += used;
218-
}
219-
}
220-
Err(ref e) if e.kind() == io::ErrorKind::Interrupted => continue,
221-
Err(e) => {
222-
*position += read;
223-
return Err(Error::Io(e.into()));
224-
}
225-
};
220+
// The `>` symbol not yet found, continue reading
221+
buf.extend_from_slice(available);
222+
let used = available.len();
223+
self $(.$reader)? .consume(used);
224+
read += used;
226225
}
227226

228227
*position += read;

0 commit comments

Comments
 (0)