capped_collections 0.2.0

Collections with compile-time set capacities.
Documentation

#[cfg(feature = "serde")]
use serde::ser::SerializeSeq;

#[cfg(feature = "serde")]
use serde::{Serialize, Serializer};

use delegate::delegate;

use crate::CappedVecDeque;

pub struct CappedQueue<T, const N: usize>
    where T: Default
{

    capped_deque: CappedVecDeque<T, N>

}

impl<T, const N: usize> CappedQueue<T, N>
    where T: Default
{

    pub fn new() -> Self
    {

        Self
        {

            capped_deque: CappedVecDeque::new()

        }

    }

    delegate!
    {

        to self.capped_deque
        {

            pub fn len(&self) -> usize;

            pub const fn capacity(&self) -> usize;

            pub const fn has_capacity(&self) -> bool;

            pub fn is_full(&self) -> bool;

            pub fn is_empty(&self) -> bool;

            #[call(push_front)]
            pub fn push(&mut self, value: T) -> Option<T>;

            #[call(pop_back)]
            pub fn pop(&mut self) -> Option<T>;

            pub fn clear(&mut self);

            pub fn reset(&mut self);

            pub fn clear_completely(&mut self);

            pub fn front(&self) -> Option<&T>;

            pub fn front_mut(&mut self) -> Option<&mut T>;

            pub fn back(&self) -> Option<&T>;

            pub fn back_mut(&mut self) -> Option<&mut T>;

            #[call(front_is_back)]
            pub fn has_one(&self) -> bool;

        }

    }

    /*
    pub fn push_front(&mut self, value: T) -> Option<T>
    {

        self.capped_deque.push_front(value)

    }
    */

}