Skip to main content

Generator

Trait Generator 

Source
pub trait Generator<R = ()> {
    type Yield;
    type Return;

    // Required method
    fn resume(
        self: Pin<&mut Self>,
        value: R,
    ) -> GeneratorState<Self::Yield, Self::Return>;
}

Required Associated Types§

Required Methods§

Source

fn resume( self: Pin<&mut Self>, value: R, ) -> GeneratorState<Self::Yield, Self::Return>

Implementations on Foreign Types§

Source§

impl<R, G> Generator<R> for &mut G
where G: Generator<R> + ?Sized + Unpin,

Source§

type Return = <G as Generator<R>>::Return

Source§

type Yield = <G as Generator<R>>::Yield

Source§

fn resume( self: Pin<&mut Self>, value: R, ) -> GeneratorState<Self::Yield, Self::Return>

Source§

impl<R, G> Generator<R> for Box<G>
where G: Generator<R> + ?Sized + Unpin,

Available on crate feature std only.
Source§

type Return = <G as Generator<R>>::Return

Source§

type Yield = <G as Generator<R>>::Yield

Source§

fn resume( self: Pin<&mut Self>, value: R, ) -> GeneratorState<Self::Yield, Self::Return>

Source§

impl<R, P> Generator<R> for Pin<P>
where P: DerefMut<Target: Generator<R>>,

Source§

type Return = <<P as Deref>::Target as Generator<R>>::Return

Source§

type Yield = <<P as Deref>::Target as Generator<R>>::Yield

Source§

fn resume( self: Pin<&mut Self>, value: R, ) -> GeneratorState<Self::Yield, Self::Return>

Implementors§

Source§

impl<A, B, R> Generator<R> for Compose<A, B>
where A: Generator<R>, B: Generator<A::Yield>,

Source§

type Return = Either<<A as Generator<R>>::Return, <B as Generator<<A as Generator<R>>::Yield>>::Return>

Source§

type Yield = <B as Generator<<A as Generator<R>>::Yield>>::Yield

Source§

impl<F, R, C, Y> Generator<R> for CompleteWith<F, Y>
where F: FnOnce(R) -> C,

Source§

type Return = C

Source§

type Yield = Y

Source§

impl<F, R, Y> Generator<R> for OnceWith<F>
where F: FnOnce(R) -> Y,

Source§

impl<G1, F, G2, R> Generator<R> for AndThen<G1, F, G2>
where G1: Generator<R>, F: FnOnce(G1::Return) -> G2, G2: Generator<R, Yield = G1::Yield>,

Source§

type Yield = <G1 as Generator<R>>::Yield

Source§

type Return = <G2 as Generator<R>>::Return

Source§

impl<G, F, R, U> Generator<R> for MapComplete<G, F>
where G: Generator<R>, F: FnOnce(G::Return) -> U,

Source§

type Yield = <G as Generator<R>>::Yield

Source§

type Return = U

Source§

impl<G, F, R, U> Generator<R> for MapYield<G, F>
where G: Generator<R>, F: FnMut(G::Yield) -> U,

Source§

type Yield = U

Source§

type Return = <G as Generator<R>>::Return

Source§

impl<R1, R2, G, F> Generator<R1> for Receiving<G, F>
where F: FnMut(R1) -> R2, G: Generator<R2>,

Source§

type Yield = <G as Generator<R2>>::Yield

Source§

type Return = <G as Generator<R2>>::Return

Source§

impl<R, G, C> Generator<R> for Flatten<G, C>
where G: Generator<R, Yield = C>, C: Generator<R, Return = ()>,

Source§

type Yield = <C as Generator<R>>::Yield

Source§

type Return = <G as Generator<R>>::Return

Source§

impl<Y> Generator for Once<Y>