Struct ArrayQueue
pub struct ArrayQueue<T> { /* private fields */ }
A bounded multi-producer multi-consumer queue.
This queue allocates a fixed-capacity buffer on construction, which is used to store pushed
elements. The queue cannot hold more elements than the buffer allows. Attempting to push an
element into a full queue will fail. Alternatively, force_push makes it possible for
this queue to be used as a ring-buffer. Having a buffer allocated upfront makes this queue
a bit faster than SegQueue.
Examples
use ArrayQueue;
let q = new;
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;
Implementations
impl<T> ArrayQueue<T>
fn new(cap: usize) -> ArrayQueue<T>Creates a new bounded queue with the given capacity.
Panics
Panics if the capacity is zero.
Examples
use ArrayQueue; let q = new;fn push(&self, value: T) -> Result<(), T>Attempts to push an element into the queue.
If the queue is full, the element is returned back as an error.
Examples
use ArrayQueue; let q = new; assert_eq!; assert_eq!;fn push_mut(&mut self, value: T) -> Result<(), T>Attempts to push an element using an exclusive reference of the queue.
Atomic operations and checks are omitted
Examples
use ArrayQueue; let mut q = new; assert_eq!; assert_eq!;fn force_push(&self, value: T) -> Option<T>Pushes an element into the queue, replacing the oldest element if necessary.
If the queue is full, the oldest element is replaced and returned, otherwise
Noneis returned.Examples
use ArrayQueue; let q = new; assert_eq!; assert_eq!; assert_eq!; assert_eq!;fn pop(&self) -> Option<T>Attempts to pop an element from the queue.
If the queue is empty,
Noneis returned.Examples
use ArrayQueue; let q = new; assert_eq!; assert_eq!; assert!;fn pop_mut(&mut self) -> Option<T>Attempts to pop an element using an exclusive reference of the queue.
Due to having an exclusive reference, atomic operations and checks are omitted
Examples
use ArrayQueue; let mut q = new; assert_eq!; assert_eq!; assert!;fn capacity(&self) -> usizeReturns the capacity of the queue.
Examples
use ArrayQueue; let q = new; assert_eq!;fn is_empty(&self) -> boolReturns
trueif the queue is empty.Examples
use ArrayQueue; let q = new; assert!; q.push.unwrap; assert!;fn is_full(&self) -> boolReturns
trueif the queue is full.Examples
use ArrayQueue; let q = new; assert!; q.push.unwrap; assert!;fn len(&self) -> usizeReturns the number of elements in the queue.
Examples
use ArrayQueue; let q = new; assert_eq!; q.push.unwrap; assert_eq!; q.push.unwrap; assert_eq!;
Trait Implementations
impl<T> Debug for ArrayQueue<T>
fn fmt(&self, f: &mut Formatter<'_>) -> Result
impl<T> Drop for ArrayQueue<T>
fn drop(&mut self)
impl<T> IntoIterator for ArrayQueue<T>
type Item = T;type IntoIter = IntoIter<T>;fn into_iter(self) -> Self::IntoIter
impl<T> RefUnwindSafe for ArrayQueue<T>
impl<T> UnwindSafe for ArrayQueue<T>
impl<T: Send> Send for ArrayQueue<T>
impl<T: Send> Sync for ArrayQueue<T>
Auto Trait Implementations
impl<T> !Freeze for ArrayQueue<T>
impl<T> Unpin for ArrayQueue<T>
where
Box<[Slot<T>]>: Unpin,
impl<T> UnsafeUnpin for ArrayQueue<T>
where
Box<[Slot<T>]>: UnsafeUnpin,
Blanket Implementations
impl<T> Any for ArrayQueue<T>
where
T: 'static + ?Sized,
fn type_id(&self) -> TypeId
impl<T> Borrow<T> for ArrayQueue<T>
where
T: ?Sized,
fn borrow(&self) -> &T
impl<T> BorrowMut<T> for ArrayQueue<T>
where
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
impl<T> From<T> for ArrayQueue<T>
fn from(t: T) -> TReturns the argument unchanged.
impl<T, U> Into<U> for ArrayQueue<T>
where
U: From<T>,
fn into(self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> TryFrom<U> for ArrayQueue<T>
where
U: Into<T>,
type Error = never;fn try_from(value: U) -> Result<T, never>
impl<T, U> TryInto<U> for ArrayQueue<T>
where
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error;fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>