[−][src]Macro next_gen::mk_gen
Instances a generator and pins it (required to be able to poll it).
By default it pins to the stack, but by using box
it can pin to the heap
(necessary when wanting to return the generator itself).
Usage
mk_gen!(let $(mut)? <varname> = $(box)? <generator fn> (<args>));
Example
use ::next_gen::prelude::*; #[generator(bool)] fn toggler (initial: bool) { use ::core::ops::Not; let mut current = initial; loop { yield_!(current); current = current.not(); } } mk_gen!(let generator = toggler(true)); // a generator is not an iterator but an iterable: let mut iterator = generator.into_iter(); assert_eq!(iterator.next(), Some(true)); assert_eq!(iterator.next(), Some(false)); assert_eq!(iterator.next(), Some(true)); assert_eq!(iterator.next(), Some(false)); assert_eq!(iterator.take(10_000).count(), 10_000);
See GeneratorFn
for more examples.