agner-actors 0.4.1

An actor toolkit inspired by Erlang/OTP (actors)
Documentation
use std::fmt;
use std::future::Future;
use std::pin::Pin;

use crate::actor_id::ActorID;
use crate::exit::Exit;

pub enum CallMsg<M> {
    Exit(Exit),
    Link(ActorID),
    Unlink(ActorID),
    TrapExit(bool),
    SpawnJob(Pin<Box<dyn Future<Output = Option<M>> + Send + Sync + 'static>>),
}

impl<M> fmt::Debug for CallMsg<M> {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        match self {
            Self::Exit(reason) => f.debug_tuple("Exit").field(reason).finish(),
            Self::Link(actor_id) => f.debug_tuple("Link").field(actor_id).finish(),
            Self::Unlink(actor_id) => f.debug_tuple("Unlink").field(actor_id).finish(),
            Self::TrapExit(trap_exit) => f.debug_tuple("TrapExit").field(trap_exit).finish(),
            Self::SpawnJob { .. } => f.debug_tuple("SpawnJob").finish(),
        }
    }
}