use anyhow::Result;
use async_trait::async_trait;
use xtor::actor::{context::Context, message::Handler, runner::Actor};
struct HelloActor;
impl Actor for HelloActor {}
#[xtor::message(result = "()")]
#[derive(Debug)]
struct Hello;
#[async_trait]
impl Handler<Hello> for HelloActor {
async fn handle(&self, _ctx: &Context, msg: Hello) -> Result<()> {
println!("{:?} received", &msg);
Ok(())
}
}
#[xtor::main]
async fn main() -> Result<()> {
let hello_actor = HelloActor;
let hello_actor_address = hello_actor.spawn().await?;
hello_actor_address.call::<HelloActor, Hello>(Hello).await
}