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 {
448448
449449 #[ inline]
450450 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 ( ) ;
452462
453463 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) )
456466 } 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) )
459469 }
460470 }
461471
You can’t perform that action at this time.
0 commit comments