use crate::{
patterns::publisher_subscriber,
prelude::{
handler::lambda::Delegate,
*,
},
};
use delegate::delegate;
use std::fmt::{
Debug,
Write,
};
pub struct Subscriber<M>
{
delegate: Box<dyn publisher_subscriber::Subscriber<M>>,
}
impl<M> Subscriber<M>
{
#[must_use]
pub fn new(
delegate: Box<dyn publisher_subscriber::Subscriber<M>>
) -> Subscriber<M>
{
Self { delegate }
}
}
#[allow(clippy::inline_always)]
impl<M> publisher_subscriber::Subscriber<M> for Subscriber<M>
{
delegate! {
to self.delegate {
fn receive(&self, message: &M);
}
}
}
impl<M> Debug for Subscriber<M>
{
fn fmt(
&self,
f: &mut std::fmt::Formatter<'_>,
) -> std::fmt::Result
{
f.debug_struct("Subscriber").finish()
}
}