Struct heapless::spsc::Queue [−][src]
pub struct Queue<T, const N: usize> { /* fields omitted */ }
Expand description
A statically allocated single producer single consumer queue with a capacity of N - 1
elements
IMPORTANT: To get better performance use a capacity that is a power of 2 (e.g. 16
, 32
,
etc.).
Implementations
impl<T, const N: usize> Queue<T, N>
[src]
impl<T, const N: usize> Queue<T, N>
[src]pub fn iter_mut(&mut self) -> IterMut<'_, T, N>ⓘ
[src]
pub fn iter_mut(&mut self) -> IterMut<'_, T, N>ⓘ
[src]Returns an iterator that allows modifying each value
pub fn enqueue(&mut self, val: T) -> Result<(), T>
[src]
pub fn enqueue(&mut self, val: T) -> Result<(), T>
[src]Adds an item
to the end of the queue
Returns back the item
if the queue is full
pub fn dequeue(&mut self) -> Option<T>
[src]
pub fn dequeue(&mut self) -> Option<T>
[src]Returns the item in the front of the queue, or None
if the queue is empty
pub fn peek(&self) -> Option<&T>
[src]
pub fn peek(&self) -> Option<&T>
[src]Returns a reference to the item in the front of the queue without dequeuing, or
None
if the queue is empty.
Examples
use heapless::spsc::Queue; let mut queue: Queue<u8, 235> = Queue::new(); let (mut producer, mut consumer) = queue.split(); assert_eq!(None, consumer.peek()); producer.enqueue(1); assert_eq!(Some(&1), consumer.peek()); assert_eq!(Some(1), consumer.dequeue()); assert_eq!(None, consumer.peek());
pub unsafe fn enqueue_unchecked(&mut self, val: T)
[src]
pub unsafe fn enqueue_unchecked(&mut self, val: T)
[src]Adds an item
to the end of the queue, without checking if it’s full
Unsafety
If the queue is full this operation will leak a value (T’s destructor won’t run on
the value that got overwritten by item
), and will allow the dequeue
operation
to create a copy of item
, which could result in T
’s destructor running on item
twice.
pub unsafe fn dequeue_unchecked(&mut self) -> T
[src]
pub unsafe fn dequeue_unchecked(&mut self) -> T
[src]Returns the item in the front of the queue, without checking if there is something in the queue
Unsafety
If the queue is empty this operation will return uninitialized memory.
Trait Implementations
impl<'a, T, const N: usize> IntoIterator for &'a Queue<T, N>
[src]
impl<'a, T, const N: usize> IntoIterator for &'a Queue<T, N>
[src]impl<'a, T, const N: usize> IntoIterator for &'a mut Queue<T, N>
[src]
impl<'a, T, const N: usize> IntoIterator for &'a mut Queue<T, N>
[src]impl<T, const N: usize, const N2: usize> PartialEq<Queue<T, N2>> for Queue<T, N> where
T: PartialEq,
[src]
impl<T, const N: usize, const N2: usize> PartialEq<Queue<T, N2>> for Queue<T, N> where
T: PartialEq,
[src]impl<T, const N: usize> Eq for Queue<T, N> where
T: Eq,
[src]
T: Eq,
Auto Trait Implementations
impl<T, const N: usize> Send for Queue<T, N> where
T: Send,
T: Send,
impl<T, const N: usize> !Sync for Queue<T, N>
impl<T, const N: usize> Unpin for Queue<T, N> where
T: Unpin,
T: Unpin,