1use status_executor::{StatusExecutor, StatusSender, StdContext};
2
3fn takes_a_while(s: StatusSender<String>) -> i32 {
4 for i in 0..100 {
5 s.send(format!("Currently at {}", i).to_string());
6 std::thread::sleep(std::time::Duration::from_millis(13));
7 }
8 s.send("Done!".to_string());
9 100
10}
11
12fn main() {
13 let e1 = StatusExecutor::new(StdContext::default(), takes_a_while);
14 std::thread::sleep(std::time::Duration::from_millis(100));
15 let e2 = StatusExecutor::new(StdContext::default(), takes_a_while);
16
17 while !e1.is_done() || !e2.is_done() {
18 if let Some(s) = e1.status() {
19 println!("E1: {}", s);
20 }
21 if let Some(s) = e2.status() {
22 println!("E2: {}", s);
23 }
24 }
25
26 println!(
27 "E1: {} - {}",
28 e1.latest_status().unwrap(),
29 e1.take_result().unwrap()
30 );
31 println!(
32 "E2: {} - {}",
33 e2.latest_status().unwrap(),
34 e2.take_result().unwrap()
35 );
36}