coro_manager/
coro_manager.rs1use devela::{CoroManager, serr, sok};
5
6fn main() {
7 let mut cr = CoroManager::<char, String>::new();
8
9 for i in 1..=3 {
10 cr.push(|mut c| async move {
11 println!("> instance {i} NEW");
12
13 let mut count = 0;
14 loop {
15 let res = c.yield_ok('a').await?;
16 println!(" instance {i} A.{count} {res:?})");
17
18 let _res = c.yield_ok('b').await?;
19 println!(" instance {i} B {_res:?}");
20
21 if count > 2 {
22 break;
23 }
24 count += 1;
25 }
26
27 println!(" instance {i} BYE!");
28
29 if i == 2 { serr(format!["instance {i} produced an error"]) } else { sok('x') }
30 });
31 }
32 cr.push(|mut c| async move {
33 println!("> instance 4 NEW");
34 for _n in 0..3 {
35 let _res = c.yield_err(format!["custom err"]).await?;
36 }
37 println!(" instance 4 BYE!");
38 None
39 });
40
41 println!("Running");
42 cr.run();
43 println!("Done");
44}