1
Fork 0

Use len instead of size_hint where appropiate

This makes it clearer that we're not just looking for a lower bound but
rather know that the iterator is an `ExactSizeIterator`.
This commit is contained in:
Tobias Bucher 2016-06-23 12:26:15 +02:00
parent 4960f2f907
commit 8ff5c4394c
6 changed files with 15 additions and 16 deletions

View file

@ -433,7 +433,7 @@ impl<'a> Iterator for Chars<'a> {
#[inline]
fn size_hint(&self) -> (usize, Option<usize>) {
let (len, _) = self.iter.size_hint();
let len = self.iter.len();
// `(len + 3)` can't overflow, because we know that the `slice::Iter`
// belongs to a slice in memory which has a maximum length of
// `isize::MAX` (that's well below `usize::MAX`).
@ -480,12 +480,12 @@ impl<'a> Iterator for CharIndices<'a> {
#[inline]
fn next(&mut self) -> Option<(usize, char)> {
let (pre_len, _) = self.iter.iter.size_hint();
let pre_len = self.iter.iter.len();
match self.iter.next() {
None => None,
Some(ch) => {
let index = self.front_offset;
let (len, _) = self.iter.iter.size_hint();
let len = self.iter.iter.len();
self.front_offset += pre_len - len;
Some((index, ch))
}
@ -505,8 +505,7 @@ impl<'a> DoubleEndedIterator for CharIndices<'a> {
match self.iter.next_back() {
None => None,
Some(ch) => {
let (len, _) = self.iter.iter.size_hint();
let index = self.front_offset + len;
let index = self.front_offset + self.iter.iter.len();
Some((index, ch))
}
}