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)
}
}