pub trait QueueCapAtLeast<const LEN: usize> {
    type Item;

    // Required methods
    fn empty() -> Self;
    fn len(&self) -> usize;
    fn deque(&mut self) -> Option<Self::Item>;
    fn enque(&mut self, item: Self::Item);
    fn get_latest(&self, n: usize) -> Option<&Self::Item>;

    // Provided methods
    fn is_empty(&self) -> bool { ... }
    fn is_reach(&self) -> bool { ... }
    fn enque_and_deque_overflow(
        &mut self,
        item: Self::Item
    ) -> Option<Self::Item> { ... }
}
Expand description

Queue that can hold at least LEN items.

Required Associated Types§

source

type Item

Item type.

Required Methods§

source

fn empty() -> Self

Creat an empty queue.

source

fn len(&self) -> usize

Get the nubmer of items in queue.

source

fn deque(&mut self) -> Option<Self::Item>

Deque an item.

source

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

Enque a new item.

source

fn get_latest(&self, n: usize) -> Option<&Self::Item>

Get the nth latest item.

The index is starting from 0.

Provided Methods§

source

fn is_empty(&self) -> bool

Is empty.

source

fn is_reach(&self) -> bool

Tumbling full.

source

fn enque_and_deque_overflow(&mut self, item: Self::Item) -> Option<Self::Item>

Push a new item and return the oldest item if full.

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl<T, const LEN: usize> QueueCapAtLeast<LEN> for ArrayVec<T, LEN>

§

type Item = T

source§

fn empty() -> Self

source§

fn len(&self) -> usize

source§

fn deque(&mut self) -> Option<Self::Item>

source§

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

source§

fn get_latest(&self, n: usize) -> Option<&Self::Item>

Implementors§