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 panic!("something went horrible :D");
9}
10
11fn main() {
12 let e1 = StatusExecutor::new(StdContext::default(), takes_a_while);
13 std::thread::sleep(std::time::Duration::from_millis(100));
14 let e2 = StatusExecutor::new(StdContext::default(), takes_a_while);
15
16 while !e1.is_done() || !e2.is_done() {
17 if let Some(s) = e1.status() {
18 println!("E1: {}", s);
19 }
20 if let Some(s) = e2.status() {
21 println!("E2: {}", s);
22 }
23 }
24
25 println!(
26 "E1: {} - {}",
27 e1.latest_status().unwrap(),
28 e1.take_result().unwrap()
29 );
30 println!(
31 "E2: {} - {}",
32 e2.latest_status().unwrap(),
33 e2.take_result().unwrap()
34 );
35}