about summary refs log tree commit diff
path: root/src/libcore
diff options
context:
space:
mode:
authorOliver Schneider <git-spam-no-reply9815368754983@oli-obk.de>2016-03-04 10:22:55 +0100
committerOliver Schneider <git-spam-no-reply9815368754983@oli-obk.de>2016-03-04 10:22:55 +0100
commit25e5de3f7ea6f81599b567c3a14e762e4e90cd7a (patch)
tree7e5edc4327ec81299115d39f979e6f0186a462de /src/libcore
parent8e261d12e3fcd6700b368d449ada4d10ebbf17f8 (diff)
downloadrust-25e5de3f7ea6f81599b567c3a14e762e4e90cd7a.tar.gz
rust-25e5de3f7ea6f81599b567c3a14e762e4e90cd7a.zip
make skip a double ended iterator
Diffstat (limited to 'src/libcore')
-rw-r--r--src/libcore/iter.rs11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/libcore/iter.rs b/src/libcore/iter.rs
index d6bd9dbf4bd..8a68f3ea79c 100644
--- a/src/libcore/iter.rs
+++ b/src/libcore/iter.rs
@@ -3851,6 +3851,17 @@ impl<I> Iterator for Skip<I> where I: Iterator {
 #[stable(feature = "rust1", since = "1.0.0")]
 impl<I> ExactSizeIterator for Skip<I> where I: ExactSizeIterator {}
 
+#[stable(feature = "double_ended_skip_iterator", since = "1.8.0")]
+impl<I> DoubleEndedIterator for Skip<I> where I: DoubleEndedIterator + ExactSizeIterator {
+    fn next_back(&mut self) -> Option<Self::Item> {
+        if self.len() > 0 {
+            self.iter.next_back()
+        } else {
+            None
+        }
+    }
+}
+
 /// An iterator that only iterates over the first `n` iterations of `iter`.
 ///
 /// This `struct` is created by the [`take()`] method on [`Iterator`]. See its