1use generator::*;
2
3fn main() {
4 fn square<'a, T: Iterator<Item = u32> + Send + 'a>(input: T) -> Generator<'a, (), u32> {
6 Gn::new_scoped(|mut s| {
7 for i in input {
8 s.yield_with(i * i);
9 }
10 done!();
11 })
12 }
13
14 fn sum<'a, T: Iterator<Item = u32> + Send + 'a>(input: T) -> Generator<'a, (), u32> {
16 Gn::new_scoped(|mut s| {
17 let mut acc = 0;
18 for i in input {
19 acc += i;
20 s.yield_with(acc);
21 }
22 done!();
23 })
24 }
25
26 for (i, sum) in sum(square(0..20)).enumerate() {
27 println!("square_sum_{i:<2} = {sum:^4}");
28 }
29}