about summary refs log tree commit diff
path: root/src/libcore/iter/adapters
diff options
context:
space:
mode:
authorAdrian Friedli <adi@koalatux.ch>2019-04-16 23:45:59 +0200
committerAdrian Friedli <adi@koalatux.ch>2019-04-16 23:45:59 +0200
commit2605537012022980d5ec69ad11653794db935cf6 (patch)
tree955ba4aa141c7ba3a1e4a5fceefc38dba0cd46d8 /src/libcore/iter/adapters
parentfae2a68ba21d5cdd3557cd01ca18b792b0bcbd67 (diff)
implement nth_back for Enumerate
Diffstat (limited to 'src/libcore/iter/adapters')
-rw-r--r--src/libcore/iter/adapters/mod.rs10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/libcore/iter/adapters/mod.rs b/src/libcore/iter/adapters/mod.rs
index f08f2a5ec75..9f9146a1523 100644
--- a/src/libcore/iter/adapters/mod.rs
+++ b/src/libcore/iter/adapters/mod.rs
@@ -981,6 +981,16 @@ impl<I> DoubleEndedIterator for Enumerate<I> where
     }
 
     #[inline]
+    fn nth_back(&mut self, n: usize) -> Option<(usize, <I as Iterator>::Item)> {
+        self.iter.nth_back(n).map(|a| {
+            let len = self.iter.len();
+            // Can safely add, `ExactSizeIterator` promises that the number of
+            // elements fits into a `usize`.
+            (self.count + len, a)
+        })
+    }
+
+    #[inline]
     fn try_rfold<Acc, Fold, R>(&mut self, init: Acc, mut fold: Fold) -> R where
         Self: Sized, Fold: FnMut(Acc, Self::Item) -> R, R: Try<Ok=Acc>
     {