basic_actor.rs (689B)
1 use tokio::sync::{mpsc::Receiver, oneshot}; 2 3 pub struct Message { 4 pub value: i64, 5 } 6 7 pub async fn basic_actor(mut rx: Receiver<Message>) { 8 let mut state = 0; 9 10 while let Some(msg) = rx.recv().await { 11 state += msg.value; 12 println!("Received: {}", msg.value); 13 println!("State: {}", state); 14 } 15 } 16 17 pub struct RespMessage { 18 pub value: i64, 19 pub responder: oneshot::Sender<i64>, 20 } 21 22 pub async fn resp_actor(mut rx: Receiver<RespMessage>) { 23 let mut state = 0; 24 25 while let Some(msg) = rx.recv().await { 26 state += msg.value; 27 if msg.responder.send(state).is_err() { 28 eprintln!("Failed to send response"); 29 } 30 } 31 }