use super::Message;
use crate::actor::Actor;
#[cfg(feature = "cron")]
use crate::cron::CronSignal;
#[cfg(feature = "observer")]
use crate::observer::Observer;
use crate::signal::Signal;
use crate::stable_type_id::StableId;
use crate::supervisor::{SupervisionEvent, Supervisor};
pub trait MessageId: Message {
const ID: u64;
}
impl MessageId for Signal {
const ID: u64 = Self::TYPE_ID.as_u64();
}
impl<A> MessageId for Supervisor<A>
where
A: Actor + StableId,
{
const ID: u64 = Self::TYPE_ID.as_u64();
}
impl<A> MessageId for SupervisionEvent<A>
where
A: Actor + StableId,
{
const ID: u64 = Self::TYPE_ID.as_u64();
}
#[cfg(feature = "observer")]
impl<M> MessageId for Observer<M>
where
M: Message + StableId,
{
const ID: u64 = Self::TYPE_ID.as_u64();
}
#[cfg(feature = "cron")]
impl MessageId for CronSignal {
const ID: u64 = Self::TYPE_ID.as_u64();
}