Skip to content

Commit 8334977

Browse files
committed
Fix incorrect lower bounds
1 parent 619003d commit 8334977

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

src/libcore/char.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -905,7 +905,12 @@ impl<I: Iterator<Item = u8>> Iterator for DecodeUtf8<I> {
905905

906906
#[inline]
907907
fn size_hint(&self) -> (usize, Option<usize>) {
908-
self.0.size_hint()
908+
let len = self.iter.len();
909+
910+
// A code point is at most 4 bytes long.
911+
let min_code_points = len / 4;
912+
913+
(min_code_points, Some(len))
909914
}
910915
}
911916

src/libcore/iter/traits.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -903,7 +903,12 @@ impl<I, T, E> Iterator for ResultShunt<I, E>
903903
}
904904

905905
fn size_hint(&self) -> (usize, Option<usize>) {
906-
self.iter.size_hint()
906+
if self.error.is_some() {
907+
(0, Some(0))
908+
} else {
909+
let (_, upper) = self.iter.size_hint();
910+
(0, upper)
911+
}
907912
}
908913
}
909914

0 commit comments

Comments
 (0)