use crate::actors::actor_context::ActorContext;
use crate::actors::message::Message;
use crate::actors::error::Error;
use crate::actors::supervision::SupervisionStrategy;
use std::any::Any;
pub type HandleResult = Result<bool, Error>;
pub trait Actor {
fn pre_start(&mut self, _ctx: ActorContext) {}
fn post_stop(&mut self, _ctx: ActorContext) {}
fn pre_fail(&mut self, _ctx: ActorContext, err: Error, strategy: SupervisionStrategy) {}
fn post_restart(&mut self, _ctx: ActorContext) {}
fn receive(&mut self, msg: Message, ctx: ActorContext) -> HandleResult;
fn as_any(&mut self) -> &Any {
panic!()
}
}
pub struct PoisonPill {}