1#![no_std]
7extern crate alloc;
8use alloc::sync::Arc;
9
10mod inner;
11pub(crate) use inner::Inner;
12
13mod sender;
14pub use sender::Sender;
15
16mod receiver;
17pub use receiver::Receiver;
18
19pub fn oneshot<T>() -> (Sender<T>, Receiver<T>) {
21 let inner = Arc::new(Inner::new());
22 let sender = Sender::new(inner.clone());
23 let receiver = Receiver::new(inner);
24 (sender, receiver)
25}
26
27#[derive(Clone, Copy, Debug, Eq, PartialEq)]
29pub struct Closed();
30
31#[derive(Debug)]
33pub enum TryRecvError<T> {
34 Empty(Receiver<T>),
36 Closed,
38}
39