generic-channel 0.2.0

Generic `Sender` and `Receiver` abstract between several channel implementations: std, crossbeam-channel, futures
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use crate::{Sender as SenderTrait, TrySendError};
use std::sync::mpsc::{Sender, SyncSender, TrySendError as SyncTrySendError};

impl<T> SenderTrait<T> for Sender<T> {
    fn try_send(&mut self, t: T) -> Result<(), TrySendError<T>> {
        self.send(t)
            .map_err(|err| TrySendError::Disconnected(err.0))
    }
}

impl<T> SenderTrait<T> for SyncSender<T> {
    fn try_send(&mut self, t: T) -> Result<(), TrySendError<T>> {
        SyncSender::try_send(self, t).map_err(|err| match err {
            SyncTrySendError::Full(t) => TrySendError::Full(t),
            SyncTrySendError::Disconnected(t) => TrySendError::Disconnected(t),
        })
    }
}