1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
use std::sync::mpsc::{Sender as StdSender, Receiver as StdReceiver, SendError as StdSendError, RecvError as StdRecvError}; pub trait ChannelSend<T> { type Error; fn send(&mut self, value: &T) -> Result<(), Self::Error>; } pub trait ChannelRecv<T> { type Error; fn recv(&mut self) -> Result<T, Self::Error>; } impl<T: Clone> ChannelSend<T> for StdSender<T> { type Error = StdSendError<T>; fn send(&mut self, value: &T) -> Result<(), Self::Error> { StdSender::send(self, value.clone()) } } impl<T> ChannelRecv<T> for StdReceiver<T> { type Error = StdRecvError; fn recv(&mut self) -> Result<T, Self::Error> { StdReceiver::recv(self) } }