pub trait _<'yield_slot, YieldedItem, ResumeArg, Args> {
    type CallBoxed;
    fn call_boxed(self, args: Args) -> Self::CallBoxed;
}
This is supported on crate feature alloc only.
Expand description

Sugar for Box::pin(GeneratorFn::empty()).tap_mut(|it| it.as_mut().init(…)).

In other words,

let gen = generator_fn.call_boxed((args, ...));

is the same as:

mk_gen!(let gen = box generator_fn(args, ...));

Examples

use ::next_gen::prelude::*;

#[generator(yield(YieldedThing), resume(ResumeArg))]
fn generator_fn (param: Param)
  -> ReturnValue
{
    stuff(param);
    let _: ResumeArg = yield_!(YieldedThing());
    ReturnValue
}

let mut gen = generator_fn.call_boxed((Param(), ));
let _ = gen.as_mut().resume(ResumeArg());

is thus equivalent to:

use ::next_gen::prelude::*;

#[generator(yield(YieldedThing), resume(ResumeArg))]
fn generator_fn (param: Param)
  -> ReturnValue
{
    stuff(param);
    let _: ResumeArg = yield_!(YieldedThing());
    ReturnValue
}

mk_gen!(let mut gen = box generator_fn(Param()));
let _ = gen.as_mut().resume(ResumeArg());

Associated Types

Required methods

Implementors