ringbuf/traits/
split.rs

1use crate::traits::{Consumer, Producer};
2
3/// Split the ring buffer onto producer and consumer.
4pub trait Split {
5    /// Producer type.
6    type Prod: Producer;
7    /// Consumer type.
8    type Cons: Consumer;
9
10    /// Perform splitting.
11    fn split(self) -> (Self::Prod, Self::Cons);
12}
13
14/// Split the ring buffer by reference onto producer and consumer.
15pub trait SplitRef {
16    /// Ref producer type.
17    type RefProd<'a>: Producer + 'a
18    where
19        Self: 'a;
20    /// Ref consumer type.
21    type RefCons<'a>: Consumer + 'a
22    where
23        Self: 'a;
24
25    /// Perform splitting by reference.
26    fn split_ref(&mut self) -> (Self::RefProd<'_>, Self::RefCons<'_>);
27}