Crate swap_buffer_queue
source ·Expand description
swap-buffer-queue
A buffering MPSC queue.
This library is intended to be a (better, I hope) alternative to traditional MPSC queues in the context of a buffering consumer, by moving the buffering part directly into the queue.
It is especially well suited for IO writing workflow, see write
and write_vectored
.
The crate is no_std (some buffer implementations may require std
).
Examples
// Initialize the queue with a capacity
let queue: Queue<VecBuffer<usize>> = Queue::with_capacity(42);
// Enqueue some values
queue.try_enqueue(0).unwrap();
queue.try_enqueue(1).unwrap();
// Dequeue a slice to the enqueued values
let slice = queue.try_dequeue().unwrap();
assert_eq!(slice.deref(), &[0, 1]);
// Enqueued values can also be retrieved
assert_eq!(slice.into_iter().collect::<Vec<_>>(), vec![0, 1]);
Modules
Buffer
definition and simple implementations.- Queue error types.
- Tool for (a)synchronous implementation.
- write
write
Buffer
implementations to be used withWrite::write
. - write_vectored
write
andstd
Buffer
implementations to be used withWrite::write_vectored
.
Structs
- A buffered MPSC “swap-buffer” queue.
- Synchronized (a)synchronous
Notify
implementation.