From 6ca53d1f710b28e9ef8c4ddbb619757643a183a9 Mon Sep 17 00:00:00 2001 From: varkor Date: Thu, 18 Jan 2018 00:23:57 +0000 Subject: [PATCH 1/2] Add Iterator specialisation for Repeat::nth --- src/libcore/iter/sources.rs | 4 ++++ src/libcore/tests/iter.rs | 1 + 2 files changed, 5 insertions(+) diff --git a/src/libcore/iter/sources.rs b/src/libcore/iter/sources.rs index b405f35d5e4db..a2508702ccb2d 100644 --- a/src/libcore/iter/sources.rs +++ b/src/libcore/iter/sources.rs @@ -31,8 +31,12 @@ impl Iterator for Repeat { #[inline] fn next(&mut self) -> Option { Some(self.element.clone()) } + #[inline] fn size_hint(&self) -> (usize, Option) { (usize::MAX, None) } + + #[inline] + fn nth(&mut self, _: usize) -> Option { self.next() } } #[stable(feature = "rust1", since = "1.0.0")] diff --git a/src/libcore/tests/iter.rs b/src/libcore/tests/iter.rs index 8997cf9c6bff9..9099fcdfa5801 100644 --- a/src/libcore/tests/iter.rs +++ b/src/libcore/tests/iter.rs @@ -1403,6 +1403,7 @@ fn test_repeat() { assert_eq!(it.next(), Some(42)); assert_eq!(it.next(), Some(42)); assert_eq!(it.next(), Some(42)); + assert_eq!(it.nth(usize::MAX), Some(42)); } #[test] From 9b55b0acf74c9478b90d58e5c70ab1007cf77393 Mon Sep 17 00:00:00 2001 From: varkor Date: Thu, 18 Jan 2018 13:40:34 +0000 Subject: [PATCH 2/2] Use needs_drop type in Repeat::nth test --- src/libcore/tests/iter.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/libcore/tests/iter.rs b/src/libcore/tests/iter.rs index 9099fcdfa5801..18ad050082a7d 100644 --- a/src/libcore/tests/iter.rs +++ b/src/libcore/tests/iter.rs @@ -1403,7 +1403,8 @@ fn test_repeat() { assert_eq!(it.next(), Some(42)); assert_eq!(it.next(), Some(42)); assert_eq!(it.next(), Some(42)); - assert_eq!(it.nth(usize::MAX), Some(42)); + let mut it = repeat(vec![42]); + assert_eq!(it.nth(usize::MAX), Some(vec![42])); } #[test]