Trait ringbuf::traits::ring_buffer::RingBuffer

source ·
pub trait RingBuffer: Observer + Consumer + Producer {
    // Required methods
    unsafe fn hold_read(&self, flag: bool) -> bool;
    unsafe fn hold_write(&self, flag: bool) -> bool;

    // Provided methods
    fn push_overwrite(&mut self, elem: Self::Item) -> Option<Self::Item> { ... }
    fn push_iter_overwrite<I: Iterator<Item = Self::Item>>(&mut self, iter: I) { ... }
    fn push_slice_overwrite(&mut self, elems: &[Self::Item])
       where Self::Item: Copy { ... }
}
Expand description

An abstract ring buffer that exclusively owns its data.

Required Methods§

source

unsafe fn hold_read(&self, flag: bool) -> bool

Tell whether read end of the ring buffer is held by consumer or not.

Returns old value.

§Safety

Must not be set to false while consumer exists.

source

unsafe fn hold_write(&self, flag: bool) -> bool

Tell whether write end of the ring buffer is held by producer or not.

Returns old value.

§Safety

Must not be set to false while producer exists.

Provided Methods§

source

fn push_overwrite(&mut self, elem: Self::Item) -> Option<Self::Item>

Pushes an item to the ring buffer overwriting the latest item if the buffer is full.

Returns overwritten item if overwriting took place.

source

fn push_iter_overwrite<I: Iterator<Item = Self::Item>>(&mut self, iter: I)

Appends items from an iterator to the ring buffer.

This method consumes iterator until its end. Exactly last min(iter.len(), capacity) items from the iterator will be stored in the ring buffer.

source

fn push_slice_overwrite(&mut self, elems: &[Self::Item])
where Self::Item: Copy,

Appends items from slice to the ring buffer overwriting existing items in the ring buffer.

If the slice length is greater than ring buffer capacity then only last capacity items from slice will be stored in the buffer.

Object Safety§

This trait is not object safe.

Implementors§