2026-01-20 15:50:34 +00:00
|
|
|
|
|
|
|
|
// use std::sync::{Arc, atomic::AtomicBool};
|
|
|
|
|
|
|
|
|
|
// use swactor::error::*;
|
|
|
|
|
// use tokio::task::JoinHandle;
|
|
|
|
|
|
|
|
|
|
// struct ActorInbox {
|
|
|
|
|
// _guard: AtomicBool
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// struct GenericGreeter {
|
|
|
|
|
// _guard: Arc<AtomicBool>,
|
|
|
|
|
// inbox: Vec<GreeterMessage>,
|
|
|
|
|
// outbox: Vec<GreeterResponse>,
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// impl GenericGreeter {
|
|
|
|
|
// pub fn new() -> Self {
|
|
|
|
|
// Self {
|
|
|
|
|
// _guard: Arc::new(AtomicBool::new(false)),
|
|
|
|
|
// inbox: Vec::new(),
|
|
|
|
|
// outbox: Vec::new(),
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// pub enum GreeterMessage {
|
|
|
|
|
// Name(String),
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// pub enum GreeterResponse {
|
|
|
|
|
// Hello(String),
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// pub struct Greeter;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// fn main() {
|
|
|
|
|
// let rt = tokio::runtime::Builder::new_current_thread()
|
|
|
|
|
// .build()
|
|
|
|
|
// .expect("failed to build runtime");
|
|
|
|
|
|
|
|
|
|
// let greet = GenericGreeter::spawn(&rt);
|
|
|
|
|
|
|
|
|
|
// let res = rt.block_on(async {greet.await}).expect("runtime error").expect("greeter error");
|
|
|
|
|
|
|
|
|
|
// println!("Success!");
|
|
|
|
|
|
|
|
|
|
// // let greeter = Greeter.spawn(&rt);
|
|
|
|
|
|
|
|
|
|
// // let response = rt
|
|
|
|
|
// // .block_on(async move {
|
|
|
|
|
// // greeter
|
|
|
|
|
// // .send(GreeterMessage::Name("world".to_string()))
|
|
|
|
|
// // .await
|
|
|
|
|
// // })
|
|
|
|
|
// // .expect("failed to get respose");
|
|
|
|
|
|
|
|
|
|
// // match response {
|
|
|
|
|
// // GreeterResponse::Hello(hello) => println!("{hello}"),
|
|
|
|
|
// // }
|
|
|
|
|
// }
|