pub trait RingBuf {
    type Item;

    // Required methods
    fn new() -> Self;
    fn with_capacity(cap: usize) -> Self;
    fn capacity(&self) -> usize;
    fn len(&self) -> usize;
    fn can_push(&self) -> bool;
    fn push(&mut self, item: Self::Item);
    fn pop(&mut self) -> Self::Item;

    // Provided method
    fn is_empty(&self) -> bool { ... }
}
Expand description

A Ring Buffer of items

Required Associated Types§

source

type Item

The type of stored items inside the Ring Buffer

Required Methods§

source

fn new() -> Self

Creates a new instance of the Ring Buffer

source

fn with_capacity(cap: usize) -> Self

Creates a new instance of the Ring Buffer with the given capacity. RingBuf implementations are allowed to ignore the capacity hint and utilize their default capacity.

source

fn capacity(&self) -> usize

The capacity of the buffer

source

fn len(&self) -> usize

The amount of stored items in the buffer

source

fn can_push(&self) -> bool

Returns true if there is enough space in the buffer to store another item.

source

fn push(&mut self, item: Self::Item)

Stores the item at the end of the buffer. Panics if there is not enough free space.

source

fn pop(&mut self) -> Self::Item

Returns the oldest item inside the buffer. Panics if there is no available item.

Provided Methods§

source

fn is_empty(&self) -> bool

Returns true if no item is stored inside the buffer.

Object Safety§

This trait is not object safe.

Implementors§

source§

impl<T> RingBuf for FixedHeapBuf<T>

§

type Item = T

source§

impl<T> RingBuf for GrowingHeapBuf<T>

§

type Item = T

source§

impl<T, A> RingBuf for ArrayBuf<T, A>
where A: AsMut<[T]> + AsRef<[T]> + RealArray<T>,

§

type Item = T