extern crate context;
use context::{Context, Transfer};
use context::stack::ProtectedFixedSizeStack;
fn main() {
extern "C" fn context_function(mut t: Transfer) -> ! {
for i in 0usize.. {
print!("Yielding {} => ", i);
t = t.context.resume(i);
}
unreachable!();
}
let stack = ProtectedFixedSizeStack::default();
let mut t = Transfer::new(Context::new(&stack, context_function), 0);
for _ in 0..10 {
print!("Resuming => ");
t = t.context.resume(0);
println!("Got {}", t.data);
}
println!("Finished!");
}