Macro gen_iter::gen_iter_return
source · macro_rules! gen_iter_return {
($block: block) => { ... };
(move $block: block) => { ... };
}
Expand description
macro to simplify iterator - via - generator with return value construction
#![feature(generators)]
use gen_iter::gen_iter_return;
let mut g = gen_iter_return!({
yield 1;
yield 2;
return "done";
});
assert_eq!((&mut g).collect::<Vec<_>>(), [1, 2]); // use `&mut g` as an iterator
assert_eq!(g.is_done(), true); // check whether generator is done
assert_eq!((&mut g).next(), None); // safe to call `next()` after done
assert_eq!(g.return_or_self().ok(), Some("done")); // get return value of generator