ringbuf/traits/split.rs
use crate::traits::{Consumer, Producer};
/// Split the ring buffer onto producer and consumer.
pub trait Split {
/// Producer type.
type Prod: Producer;
/// Consumer type.
type Cons: Consumer;
/// Perform splitting.
fn split(self) -> (Self::Prod, Self::Cons);
}
/// Split the ring buffer by reference onto producer and consumer.
pub trait SplitRef {
/// Ref producer type.
type RefProd<'a>: Producer + 'a
where
Self: 'a;
/// Ref consumer type.
type RefCons<'a>: Consumer + 'a
where
Self: 'a;
/// Perform splitting by reference.
fn split_ref(&mut self) -> (Self::RefProd<'_>, Self::RefCons<'_>);
}