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(_
) => {}