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}