File tree Expand file tree Collapse file tree 1 file changed +15
-5
lines changed
src/libcore/iter/adapters Expand file tree Collapse file tree 1 file changed +15
-5
lines changed Original file line number Diff line number Diff line change @@ -448,14 +448,24 @@ impl<I> Iterator for StepBy<I> where I: Iterator {
448
448
449
449
#[ inline]
450
450
fn size_hint ( & self ) -> ( usize , Option < usize > ) {
451
- let inner_hint = self . iter . size_hint ( ) ;
451
+ #[ inline]
452
+ fn first_size ( step : usize ) -> impl Fn ( usize ) -> usize {
453
+ move |n| if n == 0 { 0 } else { 1 + ( n - 1 ) / ( step + 1 ) }
454
+ }
455
+
456
+ #[ inline]
457
+ fn other_size ( step : usize ) -> impl Fn ( usize ) -> usize {
458
+ move |n| n / ( step + 1 )
459
+ }
460
+
461
+ let ( low, high) = self . iter . size_hint ( ) ;
452
462
453
463
if self . first_take {
454
- let f = |n| if n == 0 { 0 } else { 1 + ( n- 1 ) / ( self . step + 1 ) } ;
455
- ( f ( inner_hint . 0 ) , inner_hint . 1 . map ( f) )
464
+ let f = first_size ( self . step ) ;
465
+ ( f ( low ) , high . map ( f) )
456
466
} else {
457
- let f = |n| n / ( self . step + 1 ) ;
458
- ( f ( inner_hint . 0 ) , inner_hint . 1 . map ( f) )
467
+ let f = other_size ( self . step ) ;
468
+ ( f ( low ) , high . map ( f) )
459
469
}
460
470
}
461
471
You can’t perform that action at this time.
0 commit comments