Skip to content

Commit f45bdcc

Browse files
committed
Implement size_hint for BufReader
1 parent 0e63af5 commit f45bdcc

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
@@ -2216,7 +2216,11 @@ impl<T: Read, U: Read> Read for Chain<T, U> {
22162216

22172217
unsafe fn initializer(&self) -> Initializer {
22182218
let initializer = self.first.initializer();
2219-
if initializer.should_initialize() { initializer } else { self.second.initializer() }
2219+
if initializer.should_initialize() {
2220+
initializer
2221+
} else {
2222+
self.second.initializer()
2223+
}
22202224
}
22212225
}
22222226

@@ -2235,7 +2239,11 @@ impl<T: BufRead, U: BufRead> BufRead for Chain<T, U> {
22352239
}
22362240

22372241
fn consume(&mut self, amt: usize) {
2238-
if !self.done_first { self.first.consume(amt) } else { self.second.consume(amt) }
2242+
if !self.done_first {
2243+
self.first.consume(amt)
2244+
} else {
2245+
self.second.consume(amt)
2246+
}
22392247
}
22402248
}
22412249

@@ -2465,6 +2473,17 @@ impl<R: Read> Iterator for Bytes<R> {
24652473
};
24662474
}
24672475
}
2476+
2477+
default fn size_hint(&self) -> (usize, Option<usize>) {
2478+
(0, None)
2479+
}
2480+
}
2481+
2482+
#[stable(feature = "bufreader_size_hint", since = "1.51.0")]
2483+
impl<T> Iterator for Bytes<BufReader<T>> {
2484+
fn size_hint(&self) -> (usize, Option<usize>) {
2485+
(self.inner.buffer().len(), None)
2486+
}
24682487
}
24692488

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

0 commit comments

Comments
 (0)