]> git.lizzy.rs Git - rust.git/commitdiff
Implement RandomAccessIterator for Cloned
authorKevin Butler <haqkrs@gmail.com>
Fri, 13 Feb 2015 17:27:43 +0000 (17:27 +0000)
committerKevin Butler <haqkrs@gmail.com>
Wed, 18 Feb 2015 00:56:07 +0000 (00:56 +0000)
src/libcore/iter.rs

index 03c473ed9674117b0a29bd58280a11f7edbbb0e3..299864e3b3d7dfa39fde74e4b517a2cfe9d2f46a 100644 (file)
@@ -1323,6 +1323,23 @@ impl<T, D, I> ExactSizeIterator for Cloned<I> where
     I: ExactSizeIterator<Item=D>,
 {}
 
+#[unstable(feature = "core", reason = "trait is experimental")]
+impl<T, D, I> RandomAccessIterator for Cloned<I> where
+    T: Clone,
+    D: Deref<Target=T>,
+    I: RandomAccessIterator<Item=D>
+{
+    #[inline]
+    fn indexable(&self) -> usize {
+        self.it.indexable()
+    }
+
+    #[inline]
+    fn idx(&mut self, index: usize) -> Option<T> {
+        self.it.idx(index).cloned()
+    }
+}
+
 /// An iterator that repeats endlessly
 #[derive(Clone)]
 #[must_use = "iterator adaptors are lazy and do nothing unless consumed"]