use tokio::sync::mpsc::{channel, Receiver as _Receiver, Sender as _Sender}; pub struct Receiver(_Receiver); impl Receiver { pub(super) async fn recv(&mut self) -> Option { self.0.recv().await } } pub struct Sender(_Sender); // TODO: Handle error impl Sender { pub(super) async fn send(self, t: T) { // self.0.send(t).unwrap(); let _ = self.0.send(t).await; } } // TODO: Rename the name of the following fn pub fn oneshot() -> (Sender, Receiver) { let (tx, rx) = channel(32); let sender = Sender(tx); let receiver = Receiver(rx); (sender, receiver) }