pub struct CircularArray<const N: usize, T> { /* private fields */ }
Expand description
A circular array that allows infinite pushes into a fixed-size array.
Implementations§
Source§impl<const N: usize, T> CircularArray<N, T>
impl<const N: usize, T> CircularArray<N, T>
pub fn new() -> Self
Sourcepub fn push(&mut self, item: T)
pub fn push(&mut self, item: T)
§example
use circular_array::CircularArray;
#[test]
fn test_push() {
let mut arr = CircularArray::<3, u32>::new();
arr.push(1);
arr.push(2);
arr.push(3);
assert_eq!(arr.to_array(), [1, 2, 3]);
arr.push(4);
assert_eq!(arr.to_array(), [2, 3, 4]);
}
Sourcepub fn to_array(&self) -> [T; N]
pub fn to_array(&self) -> [T; N]
§Examples
use circular_array::CircularArray;
#[test]
fn test_to_array() {
let mut arr = CircularArray::<3, u32>::new();
arr.push(1);
arr.push(2);
arr.push(3);
assert_eq!(arr.to_array(), [1, 2, 3]);
arr.push(4);
assert_eq!(arr.to_array(), [2, 3, 4]);
}
Sourcepub fn iter(&self) -> CircularArrayIter<'_, N, T> ⓘ
pub fn iter(&self) -> CircularArrayIter<'_, N, T> ⓘ
§example
use circular_array::CircularArray;
let mut arr = CircularArray::<3, u32>::new();
arr.push(1);
arr.push(2);
arr.push(3);
let mut iter: circular_array::iter::CircularArrayIter<3, u32> = arr.iter();
assert_eq!(iter.next(), Some(&1));
assert_eq!(iter.next(), Some(&2));
assert_eq!(iter.next(), Some(&3));
assert_eq!(iter.next(), None);
Sourcepub fn last(&self) -> Option<&T>
pub fn last(&self) -> Option<&T>
§Example
use circular_array::CircularArray;
#[test]
fn test_last() {
let mut arr = CircularArray::<3, u32>::new();
assert_eq!(arr.last(), None);
arr.push(1);
assert_eq!(arr.last(), Some(1).as_ref());
arr.push(2);
arr.push(3);
arr.push(4);
assert_eq!(arr.last(), Some(4).as_ref());
}
pub fn len(&self) -> usize
Trait Implementations§
Auto Trait Implementations§
impl<const N: usize, T> Freeze for CircularArray<N, T>where
T: Freeze,
impl<const N: usize, T> RefUnwindSafe for CircularArray<N, T>where
T: RefUnwindSafe,
impl<const N: usize, T> Send for CircularArray<N, T>where
T: Send,
impl<const N: usize, T> Sync for CircularArray<N, T>where
T: Sync,
impl<const N: usize, T> Unpin for CircularArray<N, T>where
T: Unpin,
impl<const N: usize, T> UnwindSafe for CircularArray<N, T>where
T: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more