diff options
Diffstat (limited to 'src/libcore')
| -rw-r--r-- | src/libcore/iter/mod.rs | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/libcore/iter/mod.rs b/src/libcore/iter/mod.rs index 06c29b47bf9..443b1567e1b 100644 --- a/src/libcore/iter/mod.rs +++ b/src/libcore/iter/mod.rs @@ -694,6 +694,18 @@ impl<I> Iterator for StepBy<I> where I: Iterator { (f(inner_hint.0), inner_hint.1.map(f)) } } + + #[inline] + fn nth(&mut self, mut n: usize) -> Option<Self::Item> { + if self.first_take { + if n == 0 { + self.first_take = false; + return self.iter.next() + } + n -= 1; + } + self.iter.nth(n * self.step) + } } // StepBy can only make the iterator shorter, so the len will still fit. |
