about summary refs log tree commit diff
path: root/tests/ui/issues/issue-41880.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/issues/issue-41880.rs')
-rw-r--r--tests/ui/issues/issue-41880.rs29
1 files changed, 29 insertions, 0 deletions
diff --git a/tests/ui/issues/issue-41880.rs b/tests/ui/issues/issue-41880.rs
new file mode 100644
index 00000000000..977c43b71fb
--- /dev/null
+++ b/tests/ui/issues/issue-41880.rs
@@ -0,0 +1,29 @@
+fn iterate<T, F>(initial: T, f: F) -> Iterate<T, F> {
+    Iterate {
+        state: initial,
+        f: f,
+    }
+}
+
+pub struct Iterate<T, F> {
+    state: T,
+    f: F
+}
+
+impl<T: Clone, F> Iterator for Iterate<T, F> where F: Fn(&T) -> T {
+    type Item = T;
+
+    #[inline]
+    fn next(&mut self) -> Option<Self::Item> {
+        self.state = (self.f)(&self.state);
+        Some(self.state.clone())
+    }
+    #[inline]
+    fn size_hint(&self) -> (usize, Option<usize>) { (usize::MAX, None) }
+}
+
+fn main() {
+    let a = iterate(0, |x| x+1);
+    println!("{:?}", a.iter().take(10).collect::<Vec<usize>>());
+    //~^ ERROR no method named `iter` found
+}