s2n_quic_core/sync/
spsc.rs1mod recv;
5mod send;
6mod slice;
7mod state;
8
9use slice::*;
10use state::*;
11
12pub use recv::{Receiver, RecvSlice};
13pub use send::{SendSlice, Sender};
14
15#[inline]
16pub fn channel<T>(capacity: usize) -> (Sender<T>, Receiver<T>) {
17 let state = State::new(capacity);
18 let sender = Sender(state.clone());
19 let receiver = Receiver(state);
20 (sender, receiver)
21}
22
23#[cfg(test)]
24mod tests;
25
26type Result<T, E = ClosedError> = core::result::Result<T, E>;
27
28#[derive(Clone, Copy, Debug)]
29pub struct ClosedError;
30
31#[derive(Clone, Copy, Debug)]
32pub enum PushError<T> {
33 Full(T),
34 Closed,
35}
36
37impl<T> From<ClosedError> for PushError<T> {
38 fn from(_error: ClosedError) -> Self {
39 Self::Closed
40 }
41}