#![allow(deprecated)]
use generator::{yield_, Gn};
use std::mem;
fn sum(a: u32) -> u32 {
let mut sum = a;
let mut recv: u32;
while sum < 200 {
recv = yield_(sum).unwrap();
sum += recv;
}
sum
}
fn main() {
let mut s = Gn::<u32>::new(|| sum(0));
assert_eq!(s.raw_send(None).unwrap(), 0);
let mut cur = 1;
let mut last = 1;
while !s.is_done() {
mem::swap(&mut cur, &mut last);
cur = s.send(cur); println!("{}", cur);
}
}