3 #![feature(generators, generator_trait)]
5 use std::marker::Unpin;
6 use std::ops::{GeneratorState, Generator};
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> {
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),
24 fn test() -> impl Generator<(), Return=(), Yield=u8> + Unpin {
35 let closure_test = |start| {
43 assert!(W(test()).chain(W(closure_test(6))).eq(1..11));