pub trait Connect<S: Register + ?Sized> {
// Required method
fn on_connection(&mut self, endpoint: S::Endpoint);
}
Expand description
A type implementing this trait can be connected to some Register
.
§Examples
#[derive(Default)]
struct Producer {
sender: Option<Sender<u8>>,
}
impl Connect<Consumer> for Producer {
fn on_connection(&mut self, endpoint: Sender<u8>) {
self.sender = Some(endpoint)
}
}
struct Consumer {
sender: Sender<u8>,
recver: Receiver<u8>,
}
impl Consumer {
fn new() -> Self {
let (sender, recver) = mpsc::channel();
Self {
sender,
recver,
}
}
}
impl Register for Consumer {
type Endpoint = Sender<u8>;
fn register(&mut self, other: &mut impl Connect<Self>) {
other.on_connection(self.sender.clone())
}
}
let mut consumer = Consumer::new();
let mut producer1 = Producer::default();
let mut producer2 = Producer::default();
consumer.register(&mut producer1);
consumer.register(&mut producer2);
Required Methods§
sourcefn on_connection(&mut self, endpoint: S::Endpoint)
fn on_connection(&mut self, endpoint: S::Endpoint)
Sets the endpoint of the communication channel between self
and S
.