with_std/
with_std.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    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}