diff options
| author | Phlosioneer <mattmdrr2@gmail.com> | 2018-03-24 23:35:16 -0400 |
|---|---|---|
| committer | Phlosioneer <mattmdrr2@gmail.com> | 2018-03-24 23:35:16 -0400 |
| commit | 8334977dcffbd538fbd1457555ea3d80cc5eb64b (patch) | |
| tree | f6b68d344c2787102bbc85dd3a2034e866f723e3 /src/libcore | |
| parent | 619003d1d414167630331efffe83702f74413be6 (diff) | |
| download | rust-8334977dcffbd538fbd1457555ea3d80cc5eb64b.tar.gz rust-8334977dcffbd538fbd1457555ea3d80cc5eb64b.zip | |
Fix incorrect lower bounds
Diffstat (limited to 'src/libcore')
| -rw-r--r-- | src/libcore/char.rs | 7 | ||||
| -rw-r--r-- | src/libcore/iter/traits.rs | 7 |
2 files changed, 12 insertions, 2 deletions
diff --git a/src/libcore/char.rs b/src/libcore/char.rs index 2f56238a463..4420eff06ed 100644 --- a/src/libcore/char.rs +++ b/src/libcore/char.rs @@ -905,7 +905,12 @@ impl<I: Iterator<Item = u8>> Iterator for DecodeUtf8<I> { #[inline] fn size_hint(&self) -> (usize, Option<usize>) { - self.0.size_hint() + let len = self.iter.len(); + + // A code point is at most 4 bytes long. + let min_code_points = len / 4; + + (min_code_points, Some(len)) } } diff --git a/src/libcore/iter/traits.rs b/src/libcore/iter/traits.rs index 5e4622f804a..c3aebc4fb23 100644 --- a/src/libcore/iter/traits.rs +++ b/src/libcore/iter/traits.rs @@ -903,7 +903,12 @@ impl<I, T, E> Iterator for ResultShunt<I, E> } fn size_hint(&self) -> (usize, Option<usize>) { - self.iter.size_hint() + if self.error.is_some() { + (0, Some(0)) + } else { + let (_, upper) = self.iter.size_hint(); + (0, upper) + } } } |
