diff --git a/src/liballoc/boxed.rs b/src/liballoc/boxed.rs index 28f4dda140883..d10d7a5e58d65 100644 --- a/src/liballoc/boxed.rs +++ b/src/liballoc/boxed.rs @@ -524,6 +524,9 @@ impl<I: Iterator + ?Sized> Iterator for Box<I> { fn size_hint(&self) -> (usize, Option<usize>) { (**self).size_hint() } + fn nth(&mut self, n: usize) -> Option<I::Item> { + (**self).nth(n) + } } #[stable(feature = "rust1", since = "1.0.0")] impl<I: DoubleEndedIterator + ?Sized> DoubleEndedIterator for Box<I> { diff --git a/src/libcore/iter/iterator.rs b/src/libcore/iter/iterator.rs index f6b74a91c193b..48808b601c10c 100644 --- a/src/libcore/iter/iterator.rs +++ b/src/libcore/iter/iterator.rs @@ -247,7 +247,7 @@ pub trait Iterator { /// ``` #[inline] #[stable(feature = "rust1", since = "1.0.0")] - fn nth(&mut self, mut n: usize) -> Option<Self::Item> where Self: Sized { + fn nth(&mut self, mut n: usize) -> Option<Self::Item> { for x in self { if n == 0 { return Some(x) } n -= 1; @@ -2179,4 +2179,7 @@ impl<'a, I: Iterator + ?Sized> Iterator for &'a mut I { type Item = I::Item; fn next(&mut self) -> Option<I::Item> { (**self).next() } fn size_hint(&self) -> (usize, Option<usize>) { (**self).size_hint() } + fn nth(&mut self, n: usize) -> Option<Self::Item> { + (**self).nth(n) + } }