Struct ringbuffer::AllocRingBuffer [−][src]
The AllocRingBuffer
is a RingBufferExt
which is based on a Vec. This means it allocates at runtime
on the heap, and therefore needs the alloc
crate. This struct and therefore the dependency on
alloc can be disabled by disabling the alloc
(default) feature.
Example
use ringbuffer::{AllocRingBuffer, RingBuffer, RingBufferExt, RingBufferWrite}; let mut buffer = AllocRingBuffer::with_capacity(2); // First entry of the buffer is now 5. buffer.push(5); // The last item we pushed is 5 assert_eq!(buffer.get(-1), Some(&5)); // Second entry is now 42. buffer.push(42); assert_eq!(buffer.peek(), Some(&5)); assert!(buffer.is_full()); // Because capacity is reached the next push will be the first item of the buffer. buffer.push(1); assert_eq!(buffer.to_vec(), vec![42, 1]);
Implementations
impl<T> AllocRingBuffer<T>
[src]
pub fn with_capacity_unchecked(cap: usize) -> Self
[src]
Creates a AllocRingBuffer
with a certain capacity. This capacity is fixed.
for this ringbuffer to work, cap must be a power of two and greater than zero.
pub fn with_capacity_power_of_2(cap_power_of_two: usize) -> Self
[src]
Creates a AllocRingBuffer
with a certain capacity. The actual capacity is the input to the
function raised to the power of two (effectively the input is the log2 of the actual capacity)
pub fn with_capacity(cap: usize) -> Self
[src]
Creates a AllocRingBuffer
with a certain capacity. The capacity must be a power of two.
Panics
Panics when capacity is zero or not a power of two
pub fn new() -> Self
[src]
Creates a AllocRingBuffer
with a capacity of RINGBUFFER_DEFAULT_CAPACITY
.
Trait Implementations
impl<T: Clone> Clone for AllocRingBuffer<T>
[src]
fn clone(&self) -> AllocRingBuffer<T>
[src]
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl<T: Debug> Debug for AllocRingBuffer<T>
[src]
impl<T> Default for AllocRingBuffer<T>
[src]
fn default() -> Self
[src]
Creates a buffer with a capacity of crate::RINGBUFFER_DEFAULT_CAPACITY
.
impl<T: Eq> Eq for AllocRingBuffer<T>
[src]
impl<RB> FromIterator<RB> for AllocRingBuffer<RB>
[src]
fn from_iter<T: IntoIterator<Item = RB>>(iter: T) -> Self
[src]
impl<T> Index<isize> for AllocRingBuffer<T>
[src]
type Output = T
The returned type after indexing.
fn index(&self, index: isize) -> &Self::Output
[src]
impl<T> IndexMut<isize> for AllocRingBuffer<T>
[src]
impl<T: PartialEq> PartialEq<AllocRingBuffer<T>> for AllocRingBuffer<T>
[src]
fn eq(&self, other: &AllocRingBuffer<T>) -> bool
[src]
fn ne(&self, other: &AllocRingBuffer<T>) -> bool
[src]
impl<T> RingBuffer<T> for AllocRingBuffer<T>
[src]
fn capacity(&self) -> usize
[src]
fn len(&self) -> usize
[src]
fn is_empty(&self) -> bool
[src]
fn is_full(&self) -> bool
[src]
impl<T> RingBufferExt<T> for AllocRingBuffer<T>
[src]
fn get(&self, index: isize) -> Option<&T>
[src]
fn get_mut(&mut self, index: isize) -> Option<&mut T>
[src]
fn get_absolute(&self, index: usize) -> Option<&T>
[src]
fn get_absolute_mut(&mut self, index: usize) -> Option<&mut T>
[src]
fn clear(&mut self)
[src]
fn peek(&self) -> Option<&T>
[src]
fn front(&self) -> Option<&T>
[src]
fn front_mut(&mut self) -> Option<&mut T>
[src]
fn back(&self) -> Option<&T>
[src]
fn back_mut(&mut self) -> Option<&mut T>
[src]
fn iter_mut(&mut self) -> RingBufferMutIterator<'_, T, Self>
[src]
fn iter(&self) -> RingBufferIterator<'_, T, Self>
[src]
fn to_vec(&self) -> Vec<T> where
T: Clone,
[src]
T: Clone,
fn contains(&self, elem: &T) -> bool where
T: PartialEq,
[src]
T: PartialEq,
impl<T> RingBufferRead<T> for AllocRingBuffer<T>
[src]
fn dequeue_ref(&mut self) -> Option<&T>
[src]
fn skip(&mut self)
[src]
fn dequeue(&mut self) -> Option<T> where
T: Clone,
[src]
T: Clone,
fn drain(&mut self) -> RingBufferDrainingIterator<'_, T, Self> where
T: Clone,
[src]
T: Clone,
impl<T> RingBufferWrite<T> for AllocRingBuffer<T>
[src]
impl<T> StructuralEq for AllocRingBuffer<T>
[src]
impl<T> StructuralPartialEq for AllocRingBuffer<T>
[src]
Auto Trait Implementations
impl<T> Send for AllocRingBuffer<T> where
T: Send,
T: Send,
impl<T> Sync for AllocRingBuffer<T> where
T: Sync,
T: Sync,
impl<T> Unpin for AllocRingBuffer<T> where
T: Unpin,
T: Unpin,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,