pub struct Gen<Y, R, F: Future> { /* private fields */ }Expand description
This is a generator which stores its state on the heap.
Implementations§
Source§impl<Y, R, F: Future> Gen<Y, R, F>
impl<Y, R, F: Future> Gen<Y, R, F>
Sourcepub fn new(producer: impl FnOnce(Co<Y, R>) -> F) -> Self
pub fn new(producer: impl FnOnce(Co<Y, R>) -> F) -> Self
Creates a new generator from a function.
The function accepts a Co object, and returns a future. Every time
the generator is resumed, the future is polled. Each time the future is
polled, it should do one of two things:
- Call
co.yield_(), and then returnPoll::Pending. - Drop the
Co, and then returnPoll::Ready.
Typically this exchange will happen in the context of an async fn.
Sourcepub fn resume_with(&mut self, arg: R) -> GeneratorState<Y, F::Output>
pub fn resume_with(&mut self, arg: R) -> GeneratorState<Y, F::Output>
Resumes execution of the generator.
arg is the resume argument. If the generator was previously paused by
awaiting a future returned from co.yield(), that future will complete,
and return arg.
If the generator yields a value, Yielded is returned. Otherwise,
Completed is returned.
Source§impl<Y, F: Future> Gen<Y, (), F>
impl<Y, F: Future> Gen<Y, (), F>
Sourcepub fn resume(&mut self) -> GeneratorState<Y, F::Output>
pub fn resume(&mut self) -> GeneratorState<Y, F::Output>
Resumes execution of the generator.
If the generator yields a value, Yielded is returned. Otherwise,
Completed is returned.
Sourcepub fn async_resume(
&mut self,
) -> impl Future<Output = GeneratorState<Y, F::Output>> + '_
pub fn async_resume( &mut self, ) -> impl Future<Output = GeneratorState<Y, F::Output>> + '_
Resumes execution of the generator.
If the generator pauses without yielding, Poll::Pending is returned.
If the generator yields a value, Poll::Ready(Yielded) is returned.
Otherwise, Poll::Ready(Completed) is returned.