use maiko::*;
#[derive(Event, Clone, Debug)]
enum MyEvent {
Hello(String),
}
struct Greeter;
impl Actor for Greeter {
type Event = MyEvent;
async fn handle_event(&mut self, envelope: &Envelope<Self::Event>) -> Result {
match envelope.event() {
MyEvent::Hello(name) => {
println!("Hello, {}! (from {})", name, envelope.meta().actor_name());
}
}
Ok(())
}
}
#[tokio::main]
async fn main() -> Result {
let mut sup = Supervisor::<MyEvent>::default();
sup.add_actor("greeter", |_ctx| Greeter, Subscribe::all())?;
sup.start().await?;
sup.send(MyEvent::Hello("World".into())).await?;
sup.stop().await?;
Ok(())
}