]> git.lizzy.rs Git - rust.git/blob - src/test/ui/generator/iterator-count.rs
Extend invalid floating point literal suffix suggestion
[rust.git] / src / test / ui / generator / iterator-count.rs
1 // run-pass
2
3 #![feature(generators, generator_trait)]
4
5 use std::marker::Unpin;
6 use std::ops::{GeneratorState, Generator};
7 use std::pin::Pin;
8
9 struct W<T>(T);
10
11 // This impl isn't safe in general, but the generator used in this test is movable
12 // so it won't cause problems.
13 impl<T: Generator<(), Return = ()> + Unpin> Iterator for W<T> {
14     type Item = T::Yield;
15
16     fn next(&mut self) -> Option<Self::Item> {
17         match Pin::new(&mut self.0).resume(()) {
18             GeneratorState::Complete(..) => None,
19             GeneratorState::Yielded(v) => Some(v),
20         }
21     }
22 }
23
24 fn test() -> impl Generator<(), Return=(), Yield=u8> + Unpin {
25     || {
26         for i in 1..6 {
27             yield i
28         }
29     }
30 }
31
32 fn main() {
33     let end = 11;
34
35     let closure_test = |start| {
36         move || {
37             for i in start..end {
38                 yield i
39             }
40         }
41     };
42
43     assert!(W(test()).chain(W(closure_test(6))).eq(1..11));
44 }