use crossbeam_channel;
pub(crate) fn new<T>() -> (Sender<T>, Receiver<T>) {
let (tx, rx) = crossbeam_channel::bounded(1);
(Sender{channel: tx}, Receiver{channel: rx})
}
pub(crate) struct Sender<T>
{
channel: crossbeam_channel::Sender<T>,
}
impl<T> Sender<T> {
pub fn send(self, t: T) {
let result = self.channel.send(t);
if result.is_err() {
}
}
}
pub(crate) struct Receiver<T>
{
channel: crossbeam_channel::Receiver<T>,
}
impl <T> Receiver <T>
{
pub fn receive(self) -> Result<T, ()> {
match self.channel.recv() {
Ok(t) => Ok(t),
Err(_) => Err(()),
}
}
}