pub struct FixedVecDeque<T>where
    T: Array,
{ /* private fields */ }
Expand description

A double-ended queue implemented with a fixed buffer.

Implementations

Construct a new fixed ring buffer, pre-allocating all elements.

Examples

Returns true if the FixedVecDeque is empty.

Examples
use fixed_vec_deque::FixedVecDeque;

let mut v = FixedVecDeque::<[u32; 1]>::new();
assert!(v.is_empty());
*v.push_front() = 1;
assert!(!v.is_empty());

Returns true if the FixedVecDeque is full.

Writing to a queue that is full will overwrite existing elements.

Examples
use fixed_vec_deque::FixedVecDeque;

let mut v = FixedVecDeque::<[u32; 1]>::new();
assert!(!v.is_full());
*v.push_front() = 1;
assert!(v.is_full());

Returns the number of elements in the FixedVecDeque.

Examples
use fixed_vec_deque::FixedVecDeque;

let mut v = FixedVecDeque::<[u32; 2]>::new();
assert_eq!(v.len(), 0);
*v.push_back() = 1;
assert_eq!(v.len(), 1);
*v.push_back() = 1;
assert_eq!(v.len(), 2);

Provides a reference to the front element, or None if the FixedVecDeque is empty.

Examples
use fixed_vec_deque::FixedVecDeque;

let mut d = FixedVecDeque::<[u32; 2]>::new();
assert_eq!(d.front(), None);

*d.push_back() = 1;
*d.push_back() = 2;
assert_eq!(d.front(), Some(&1));

Provides a mutable reference to the front element, or None if the FixedVecDeque is empty.

Examples
use fixed_vec_deque::FixedVecDeque;

let mut d = FixedVecDeque::<[u32; 2]>::new();

assert_eq!(d.front_mut(), None);

*d.push_back() = 1;
*d.push_back() = 2;

match d.front_mut() {
    Some(x) => *x = 9,
    None => (),
}

assert_eq!(d.front(), Some(&9));
assert_eq!(d.back(), Some(&2));

Provides a reference to the back element, or None if the FixedVecDeque is empty.

Examples
use fixed_vec_deque::FixedVecDeque;

let mut d = FixedVecDeque::<[u32; 2]>::new();

assert_eq!(d.back(), None);

*d.push_back() = 1;
*d.push_back() = 2;
assert_eq!(d.back(), Some(&2));

Provides a mutable reference to the back element, or None if the FixedVecDeque is empty.

Examples
use fixed_vec_deque::FixedVecDeque;

let mut d = FixedVecDeque::<[u32; 2]>::new();

assert_eq!(d.back(), None);

*d.push_back() = 1;
*d.push_back() = 2;

match d.back_mut() {
    Some(x) => *x = 9,
    None => (),
}
assert_eq!(d.back(), Some(&9));

Prepends an element to the FixedVecDeque.

Examples
use fixed_vec_deque::FixedVecDeque;

let mut d = FixedVecDeque::<[u32; 3]>::new();

assert_eq!(d.front(), None);
assert_eq!(d.back(), None);

*d.push_front() = 1;
assert_eq!(d.front(), Some(&1));
assert_eq!(d.back(), Some(&1));

*d.push_front() = 2;
assert_eq!(d.front(), Some(&2));
assert_eq!(d.back(), Some(&1));

*d.push_front() = 3;
assert_eq!(d.front(), Some(&3));
assert_eq!(d.back(), Some(&1));

*d.push_front() = 4;
assert_eq!(d.front(), Some(&4));
assert_eq!(d.back(), Some(&2));

Removes the first element and returns it, or None if the FixedVecDeque is empty.

Examples
use fixed_vec_deque::FixedVecDeque;

let mut d = FixedVecDeque::<[u32; 2]>::new();
*d.push_back() = 1;
*d.push_back() = 2;

assert_eq!(d.pop_front(), Some(&1));
assert_eq!(d.pop_front(), Some(&2));
assert_eq!(d.pop_front(), None);

Appends an element to the back of the FixedVecDeque by returning a mutable reference that can be modified to it.

Note: this might potentially remove elements from the head, unless they have been read.

Examples
use fixed_vec_deque::FixedVecDeque;

let mut buf = FixedVecDeque::<[u32; 2]>::new();
assert_eq!(buf.back(), None);
assert_eq!(buf.front(), None);

*buf.push_back() = 1;

assert_eq!(buf.front(), Some(&1));
assert_eq!(buf.back(), Some(&1));

*buf.push_back() = 2;

assert_eq!(buf.front(), Some(&1));
assert_eq!(buf.back(), Some(&2));

*buf.push_back() = 3;

assert_eq!(buf.front(), Some(&2));
assert_eq!(buf.back(), Some(&3));
use fixed_vec_deque::FixedVecDeque;

let mut buf = FixedVecDeque::<[u32; 1]>::new();
assert_eq!(buf.back(), None);
assert_eq!(buf.front(), None);

*buf.push_back() = 1;

assert_eq!(buf.front(), Some(&1));
assert_eq!(buf.back(), Some(&1));

*buf.push_back() = 2;

assert_eq!(buf.front(), Some(&2));
assert_eq!(buf.back(), Some(&2));

buf.pop_back();

assert!(buf.is_empty());
assert_eq!(buf.back(), None);
assert_eq!(buf.front(), None);

Removes the last element from the FixedVecDeque and returns a reference to it, or None if it is empty.

Examples
use fixed_vec_deque::FixedVecDeque;

let mut buf = FixedVecDeque::<[u32; 2]>::new();
assert_eq!(buf.pop_back(), None);
*buf.push_back() = 1;
*buf.push_back() = 3;
assert_eq!(buf.pop_back(), Some(&3));

Returns a front-to-back iterator.

Examples
use fixed_vec_deque::FixedVecDeque;

let mut buf = FixedVecDeque::<[u32; 4]>::new();
*buf.push_back() = 5;
*buf.push_back() = 3;
*buf.push_back() = 4;

let b: &[_] = &[&5, &3, &4];
let c: Vec<&u32> = buf.iter().collect();
assert_eq!(&c[..], b);

Clears the FixedVecDeque.

The stored values will not be deleted.

Examples
use fixed_vec_deque::FixedVecDeque;

let mut v = FixedVecDeque::<[u32; 1]>::new();
*v.push_back() = 1;
v.clear();
assert!(v.is_empty());

Returns a pair of slices which contain, in order, the contents of the FixedVecDeque.

Examples
use fixed_vec_deque::FixedVecDeque;

let mut vector = FixedVecDeque::<[u32; 6]>::new();

*vector.push_back() = 0;
*vector.push_back() = 1;

*vector.push_front() = 10;
*vector.push_front() = 9;

vector.as_mut_slices().0[0] = 42;
vector.as_mut_slices().1[0] = 24;

assert_eq!(vector.as_slices(), (&[42, 10][..], &[24, 1][..]));

Returns a pair of slices which contain, in order, the contents of the FixedVecDeque.

Examples
use fixed_vec_deque::FixedVecDeque;

let mut vector = FixedVecDeque::<[u32; 5]>::new();

*vector.push_back() = 1;
*vector.push_back() = 2;
*vector.push_back() = 3;

assert_eq!(vector.as_slices(), (&[1, 2, 3][..], &[][..]));

*vector.push_front() = 4;
*vector.push_front() = 5;

assert_eq!(vector.as_slices(), (&[5, 4][..], &[1, 2, 3][..]));

Trait Implementations

The type of the elements being iterated over.
Which kind of iterator are we turning this into?
Creates an iterator from a value. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.