From 25e5de3f7ea6f81599b567c3a14e762e4e90cd7a Mon Sep 17 00:00:00 2001 From: Oliver Schneider Date: Fri, 4 Mar 2016 10:22:55 +0100 Subject: make skip a double ended iterator --- src/libcore/iter.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src/libcore') 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 Iterator for Skip where I: Iterator { #[stable(feature = "rust1", since = "1.0.0")] impl ExactSizeIterator for Skip where I: ExactSizeIterator {} +#[stable(feature = "double_ended_skip_iterator", since = "1.8.0")] +impl DoubleEndedIterator for Skip where I: DoubleEndedIterator + ExactSizeIterator { + fn next_back(&mut self) -> Option { + 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 -- cgit 1.4.1-3-g733a5