simple/
simple.rs

1use truba::{Context, Message, MpscChannel};
2
3struct Value(u32);
4
5impl Message for Value {
6    type Channel = MpscChannel<Self>;
7}
8
9struct MyActor {
10    value: u32,
11}
12
13impl MyActor {
14    fn run(ctx: Context, value: u32) {
15        let mut value_in = ctx.receiver::<Value>();
16        let mut actor = MyActor { value };
17
18        truba::spawn_min_event_loop!(ctx, {
19            Some(msg) = value_in.recv() => {
20                actor.handle_value(msg);
21            },
22        });
23    }
24
25    fn handle_value(&mut self, Value(value): Value) {
26        self.value = value;
27        println!("receive value {value}");
28    }
29}
30
31#[tokio::main]
32async fn main() {
33    let ctx = Context::new();
34    MyActor::run(ctx.clone(), 42);
35
36    let sender = ctx.sender::<Value>();
37    sender.send(Value(11)).await.ok();
38    sender.send(Value(22)).await.ok();
39}