use async_trait::async_trait;
#[async_trait]
pub trait MpSender: Clone {
type Message;
type Error;
async fn send(&self, msg: Self::Message) -> Result<(), Self::Error>;
}
#[async_trait]
pub trait McReceiver: Clone {
type Message;
type Error;
async fn receive(&self) -> Result<Self::Message, Self::Error>;
}