use tokio::sync::broadcast; use crate::message::Message; #[derive(Clone, Debug, PartialEq)] #[non_exhaustive] pub enum PublishError {} #[derive(Debug)] pub struct Publication { sender: broadcast::Sender, } impl Publication { pub(crate) fn new(sender: broadcast::Sender) -> Self { Publication { sender } } pub fn publish(&mut self, message: T) -> Result { match self.sender.send(message) { Ok(subscribers) => Ok(subscribers), Err(_) => Ok(0), } } }