Trait employees::Connect

source ·
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§

source

fn on_connection(&mut self, endpoint: S::Endpoint)

Sets the endpoint of the communication channel between self and S.

Implementors§