Use helper trait to follow min_specialization rules
This commit is contained in:
parent
c3e47d974a
commit
fa76db3104
1 changed files with 24 additions and 4 deletions
|
@ -2459,7 +2459,7 @@ pub struct Bytes<R> {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
impl<R: Read> Iterator for Bytes<R> {
|
impl<R: Read + SizeHint> Iterator for Bytes<R> {
|
||||||
type Item = Result<u8>;
|
type Item = Result<u8>;
|
||||||
|
|
||||||
fn next(&mut self) -> Option<Result<u8>> {
|
fn next(&mut self) -> Option<Result<u8>> {
|
||||||
|
@ -2475,14 +2475,34 @@ impl<R: Read> Iterator for Bytes<R> {
|
||||||
}
|
}
|
||||||
|
|
||||||
default fn size_hint(&self) -> (usize, Option<usize>) {
|
default fn size_hint(&self) -> (usize, Option<usize>) {
|
||||||
(0, None)
|
self.inner.size_hint()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[stable(feature = "bufreader_size_hint", since = "1.51.0")]
|
#[stable(feature = "bufreader_size_hint", since = "1.51.0")]
|
||||||
impl<R: Read> Iterator for Bytes<BufReader<R>> {
|
trait SizeHint {
|
||||||
|
fn lower_bound(&self) -> usize;
|
||||||
|
|
||||||
|
fn upper_bound(&self) -> Option<usize> {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
|
||||||
fn size_hint(&self) -> (usize, Option<usize>) {
|
fn size_hint(&self) -> (usize, Option<usize>) {
|
||||||
(self.inner.buffer().len(), None)
|
(self.lower_bound(), self.upper_bound())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[stable(feature = "bufreader_size_hint", since = "1.51.0")]
|
||||||
|
impl SizeHint for T {
|
||||||
|
fn lower_bound(&self) -> usize {
|
||||||
|
0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[stable(feature = "bufreader_size_hint", since = "1.51.0")]
|
||||||
|
impl<T> SizeHint for BufReader<T> {
|
||||||
|
fn lower_bound(&self) -> usize {
|
||||||
|
self.buffer().len()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue