use crate::{
actor::{actor_create_impl, Actor},
addr::Addr,
context::ActorContext,
runner::*,
};
use async_trait::async_trait;
#[async_trait]
pub trait Supervised: Actor {
async fn restarting(&mut self, _ctx: &mut ActorContext<Self>) {}
fn create_supervised<F: FnOnce(&mut ActorContext<Self>) -> Self + Send>(f: F) -> Addr<Self> {
let (actor, ret, ctx, msg_rx) = actor_create_impl(f);
tokio::spawn(supervised_actor_runner_loop(actor, ctx, msg_rx));
ret
}
}