extern crate dispatch;
use std::io;
use std::process::exit;
use dispatch::{Queue, QueuePriority};
fn prompt(mut sum: i32, queue: Queue) {
queue.clone().exec_async(move || {
let main = Queue::main();
main.exec_sync(|| {
println!("Enter a number:");
});
let mut input = String::new();
io::stdin().read_line(&mut input).unwrap();
if let Ok(num) = input.trim().parse::<i32>() {
sum += num;
main.exec_sync(|| {
println!("Sum is {}\n", sum);
});
prompt(sum, queue);
} else {
main.exec_async(|| {
println!("Not a number, exiting.");
exit(0);
});
}
});
}
fn main() {
prompt(0, Queue::global(QueuePriority::Default));
unsafe {
dispatch::ffi::dispatch_main();
}
}