yield_from/
yield_from.rs

1#![allow(deprecated)]
2
3use generator::*;
4
5fn xrange(start: u32, end: u32) -> u32 {
6    for i in start..end {
7        yield_with(i);
8    }
9    done!();
10}
11
12fn main() {
13    let g1 = Gn::new(|| xrange(0, 10));
14    let g2 = Gn::new(|| xrange(10, 20));
15
16    let g = Gn::new_scoped(|mut s| {
17        s.yield_from(g1);
18        s.yield_from(g2);
19        done!();
20    });
21
22    g.fold(0, |sum, x| {
23        println!("i={}, sum={}", x, sum + x);
24        sum + x
25    });
26}