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());