3 #![feature(generators, generator_trait)]
4 #![feature(type_alias_impl_trait)]
6 use std::ops::{Generator, GeneratorState};
9 type RandGenerator<'a> = impl Generator<Return = (), Yield = u64> + 'a;
10 fn rand_generator<'a>(rng: &'a ()) -> RandGenerator<'a> {
19 pub type RandGeneratorWithIndirection<'c> = impl Generator<Return = (), Yield = u64> + 'c;
20 pub fn rand_generator_with_indirection<'a>(rng: &'a ()) -> RandGeneratorWithIndirection<'a> {
21 fn helper<'b>(rng: &'b ()) -> impl 'b + Generator<Return = (), Yield = u64> {
34 let mut gen = rand_generator(&());
35 match unsafe { Pin::new_unchecked(&mut gen) }.resume(()) {
36 GeneratorState::Yielded(_) => {}
37 GeneratorState::Complete(_) => {}