pub struct CircleBuffer<T> where
T: Clone, { /* fields omitted */ }
Creates a new empty CircleBuffer<T>
with capacity.
use circle_buffer::CircleBuffer;
let mut cbuf: CircleBuffer<i32> = CircleBuffer::with_capacity(3);
Returns the capacity of the buffer.
use circle_buffer::CircleBuffer;
let mut cbuf: CircleBuffer<i32> = CircleBuffer::with_capacity(3);
assert_eq!(3, cbuf.capacity());
Returns the current number of elements in the buffer.
use circle_buffer::CircleBuffer;
let mut cbuf: CircleBuffer<i32> = CircleBuffer::with_capacity(10);
cbuf.push(1);
cbuf.push(1);
cbuf.push(1);
assert_eq!(cbuf.len(), 3);
Returns true if the buffer contains no elements.
use circle_buffer::CircleBuffer;
let mut cbuf: CircleBuffer<i32> = CircleBuffer::with_capacity(3);
assert!(cbuf.is_empty());
cbuf.push(1);
assert!(!cbuf.is_empty())
Pushes a new element into the buffer.
Once the capacity is reached, pushing new items will overwrite old ones.
use circle_buffer::CircleBuffer;
let mut cbuf: CircleBuffer<i32> = CircleBuffer::with_capacity(3);
cbuf.push(1);
cbuf.push(2);
cbuf.push(3);
cbuf.push(4);
assert_eq!(cbuf.len(), 3);
assert_eq!(cbuf[0], 2);
assert_eq!(cbuf[1], 3);
assert_eq!(cbuf[2], 4);
let mut sum = 0;
for x in cbuf.as_slice() {
sum += x;
}
assert_eq!(sum, 9);
Extracts a slice containing the entire buffer.
Extracts a mutable slice of the entire buffer.
Returns an iterator over the buffer's contents.
The iterator goes from the most recently pushed items to the oldest ones.
use circle_buffer::CircleBuffer;
let mut buffer = CircleBuffer::with_capacity(3);
buffer.push(1);
buffer.push(2);
buffer.push(3);
let add1: Vec<i32> = buffer.iter().map(|x| x + 1).collect();
assert_eq!(add1, vec![2, 3, 4]);
buffer.push(4);
buffer.push(5);
let add2: Vec<i32> = buffer.iter().map(|x| x + 2).collect();
assert_eq!(add2, vec![5, 6, 7]);
Returns a mutable iterator over the buffer's contents.
The iterator goes from the most recently pushed items to the oldest ones.
use circle_buffer::CircleBuffer;
let mut buffer = CircleBuffer::with_capacity(3);
buffer.push(1);
buffer.push(2);
buffer.push(3);
for x in buffer.iter_mut() {
*x += 1;
}
assert_eq!(buffer.as_slice(), &[2, 3, 4]);
buffer.push(4);
buffer.push(5);
for x in buffer.iter_mut() {
*x += 2;
}
assert_eq!(buffer.as_slice(), &[6, 6, 7]);
Fill all elements with zeros.
use circle_buffer::CircleBuffer;
let mut cbuf: CircleBuffer<i32> = CircleBuffer::with_capacity(3);
cbuf.push(1);
cbuf.zero_clear();
assert!(cbuf.len() == 3);
assert_eq!(cbuf.as_slice(), &[0, 0, 0]);
cbuf.push(2);
assert_eq!(cbuf.as_slice(), &[0, 0, 2]);
The returned type after indexing.
Performs the indexing (container[index]
) operation.
Performs the mutable indexing (container[index]
) operation.