bottle 0.1.0

Actor model framework for Rust.
use crate::Signal;

/**
 * Immutable handler.
 */
pub trait Handler<S: Signal> {
    fn handle(&self, signal: S) -> S::Response;
}

/**
 * Mutable handler.
 */
pub trait MutHandler<S: Signal> {
    fn handle_mut(&mut self, signal: S) -> S::Response;
}

impl<S:Signal, T: ?Sized + Handler<S>> MutHandler<S> for T {
    fn handle_mut(&mut self, signal: S) -> S::Response {
        self.handle(signal)
    }
}