Skip to content

Commit 4b89deb

Browse files
authored
Auto merge of rust-lang#34425 - tbu-:pr_len_instead_of_size_hint, r=alexcrichton
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`.
2 parents 7189ae3 + 8ff5c43 commit 4b89deb

File tree

6 files changed

+15
-16
lines changed

6 files changed

+15
-16
lines changed

src/libcollections/vec.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1658,7 +1658,7 @@ impl<T> Iterator for IntoIter<T> {
16581658

16591659
#[inline]
16601660
fn count(self) -> usize {
1661-
self.size_hint().0
1661+
self.len()
16621662
}
16631663
}
16641664

src/libcore/fmt/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1384,7 +1384,7 @@ impl Debug for str {
13841384
for (i, c) in self.char_indices() {
13851385
let esc = c.escape_default();
13861386
// If char needs escaping, flush backlog so far and write, else skip
1387-
if esc.size_hint() != (1, Some(1)) {
1387+
if esc.len() != 1 {
13881388
f.write_str(&self[from..i])?;
13891389
for c in esc {
13901390
f.write_char(c)?;

src/libcore/slice.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -835,7 +835,7 @@ macro_rules! iterator {
835835

836836
#[inline]
837837
fn count(self) -> usize {
838-
self.size_hint().0
838+
self.len()
839839
}
840840

841841
#[inline]
@@ -1444,7 +1444,7 @@ impl<'a, T> Iterator for Windows<'a, T> {
14441444

14451445
#[inline]
14461446
fn count(self) -> usize {
1447-
self.size_hint().0
1447+
self.len()
14481448
}
14491449

14501450
#[inline]
@@ -1541,7 +1541,7 @@ impl<'a, T> Iterator for Chunks<'a, T> {
15411541

15421542
#[inline]
15431543
fn count(self) -> usize {
1544-
self.size_hint().0
1544+
self.len()
15451545
}
15461546

15471547
#[inline]
@@ -1632,7 +1632,7 @@ impl<'a, T> Iterator for ChunksMut<'a, T> {
16321632

16331633
#[inline]
16341634
fn count(self) -> usize {
1635-
self.size_hint().0
1635+
self.len()
16361636
}
16371637

16381638
#[inline]

src/libcore/str/mod.rs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -433,7 +433,7 @@ impl<'a> Iterator for Chars<'a> {
433433

434434
#[inline]
435435
fn size_hint(&self) -> (usize, Option<usize>) {
436-
let (len, _) = self.iter.size_hint();
436+
let len = self.iter.len();
437437
// `(len + 3)` can't overflow, because we know that the `slice::Iter`
438438
// belongs to a slice in memory which has a maximum length of
439439
// `isize::MAX` (that's well below `usize::MAX`).
@@ -480,12 +480,12 @@ impl<'a> Iterator for CharIndices<'a> {
480480

481481
#[inline]
482482
fn next(&mut self) -> Option<(usize, char)> {
483-
let (pre_len, _) = self.iter.iter.size_hint();
483+
let pre_len = self.iter.iter.len();
484484
match self.iter.next() {
485485
None => None,
486486
Some(ch) => {
487487
let index = self.front_offset;
488-
let (len, _) = self.iter.iter.size_hint();
488+
let len = self.iter.iter.len();
489489
self.front_offset += pre_len - len;
490490
Some((index, ch))
491491
}
@@ -505,8 +505,7 @@ impl<'a> DoubleEndedIterator for CharIndices<'a> {
505505
match self.iter.next_back() {
506506
None => None,
507507
Some(ch) => {
508-
let (len, _) = self.iter.iter.size_hint();
509-
let index = self.front_offset + len;
508+
let index = self.front_offset + self.iter.iter.len();
510509
Some((index, ch))
511510
}
512511
}

src/libcore/str/pattern.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -310,9 +310,9 @@ unsafe impl<'a, C: CharEq> Searcher<'a> for CharEqSearcher<'a, C> {
310310
let s = &mut self.char_indices;
311311
// Compare lengths of the internal byte slice iterator
312312
// to find length of current char
313-
let (pre_len, _) = s.iter.iter.size_hint();
313+
let pre_len = s.iter.iter.len();
314314
if let Some((i, c)) = s.next() {
315-
let (len, _) = s.iter.iter.size_hint();
315+
let len = s.iter.iter.len();
316316
let char_len = pre_len - len;
317317
if self.char_eq.matches(c) {
318318
return SearchStep::Match(i, i + char_len);
@@ -330,9 +330,9 @@ unsafe impl<'a, C: CharEq> ReverseSearcher<'a> for CharEqSearcher<'a, C> {
330330
let s = &mut self.char_indices;
331331
// Compare lengths of the internal byte slice iterator
332332
// to find length of current char
333-
let (pre_len, _) = s.iter.iter.size_hint();
333+
let pre_len = s.iter.iter.len();
334334
if let Some((i, c)) = s.next_back() {
335-
let (len, _) = s.iter.iter.size_hint();
335+
let len = s.iter.iter.len();
336336
let char_len = pre_len - len;
337337
if self.char_eq.matches(c) {
338338
return SearchStep::Match(i, i + char_len);

src/libstd/sys/common/wtf8.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -715,7 +715,7 @@ impl<'a> Iterator for Wtf8CodePoints<'a> {
715715

716716
#[inline]
717717
fn size_hint(&self) -> (usize, Option<usize>) {
718-
let (len, _) = self.bytes.size_hint();
718+
let len = self.bytes.len();
719719
(len.saturating_add(3) / 4, Some(len))
720720
}
721721
}

0 commit comments

Comments
 (0)