Skip to content

Commit b6730e9

Browse files
committed
Implement size_hint for BufReader
1 parent 18ec4a9 commit b6730e9

File tree

1 file changed

+21
-2
lines changed

1 file changed

+21
-2
lines changed

library/std/src/io/mod.rs

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2213,7 +2213,11 @@ impl<T: Read, U: Read> Read for Chain<T, U> {
22132213

22142214
unsafe fn initializer(&self) -> Initializer {
22152215
let initializer = self.first.initializer();
2216-
if initializer.should_initialize() { initializer } else { self.second.initializer() }
2216+
if initializer.should_initialize() {
2217+
initializer
2218+
} else {
2219+
self.second.initializer()
2220+
}
22172221
}
22182222
}
22192223

@@ -2232,7 +2236,11 @@ impl<T: BufRead, U: BufRead> BufRead for Chain<T, U> {
22322236
}
22332237

22342238
fn consume(&mut self, amt: usize) {
2235-
if !self.done_first { self.first.consume(amt) } else { self.second.consume(amt) }
2239+
if !self.done_first {
2240+
self.first.consume(amt)
2241+
} else {
2242+
self.second.consume(amt)
2243+
}
22362244
}
22372245
}
22382246

@@ -2462,6 +2470,17 @@ impl<R: Read> Iterator for Bytes<R> {
24622470
};
24632471
}
24642472
}
2473+
2474+
default fn size_hint(&self) -> (usize, Option<usize>) {
2475+
(0, None)
2476+
}
2477+
}
2478+
2479+
#[stable(feature = "bufreader_size_hint", since = "1.51.0")]
2480+
impl<T> Iterator for Bytes<BufReader<T>> {
2481+
fn size_hint(&self) -> (usize, Option<usize>) {
2482+
(self.inner.buffer().len(), None)
2483+
}
24652484
}
24662485

24672486
/// An iterator over the contents of an instance of `BufRead` split on a

0 commit comments

Comments
 (0)