pub trait Generator<R = ()> { type Yield; type Return; // Required method fn resume( self: Pin<&mut Self>, arg: R, ) -> GeneratorState<Self::Yield, Self::Return>; }