use corosensei::{Coroutine, CoroutineResult};
fn main() {
println!("[main] creating coroutine");
let mut coroutine = Coroutine::new(|yielder, input| {
println!("[coroutine] coroutine started with input {}", input);
for i in 0..5 {
println!("[coroutine] yielding {}", i);
let input = yielder.suspend(i);
println!("[coroutine] got {} from parent", input)
}
println!("[coroutine] exiting coroutine");
});
let mut counter = 100;
loop {
println!("[main] resuming coroutine with argument {}", counter);
match coroutine.resume(counter) {
CoroutineResult::Yield(i) => println!("[main] got {:?} from coroutine", i),
CoroutineResult::Return(()) => break,
}
counter += 1;
}
println!("[main] exiting");
}
#[test]
fn basic() {
main()
}