use async_trait::async_trait;
use crate::{Context, Service};
#[async_trait]
pub trait Handler<M>
where
Self: Service + Sized,
M: Message,
{
async fn handle(&mut self, message: M, ctx: &mut Context<Self, Self::Stream>) -> M::Result;
}
pub trait Message {
type Result;
}