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_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
40 ctx.shutdown().await;
41}