with_panic/
with_panic.rs

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}