Struct swap_buffer_queue::buffer::BufferSlice
source · pub struct BufferSlice<'a, B, N>where
B: Buffer,{ /* private fields */ }
Expand description
Buffer
slice returned by Queue::try_dequeue
(see Buffer::Slice
).
Buffer is released when the slice is dropped, so the other buffer will be dequeued next,
unless BufferSlice::requeue
/BufferSlice::into_iter
is called.
Examples
let queue: Queue<VecBuffer<usize>> = Queue::with_capacity(42);
queue.try_enqueue(0).unwrap();
queue.try_enqueue(1).unwrap();
let slice = queue.try_dequeue().unwrap();
assert_eq!(slice.deref(), &[0, 1]);
assert_eq!(slice.into_iter().collect::<Vec<_>>(), vec![0, 1]);
Implementations§
source§impl<'a, B, N> BufferSlice<'a, B, N>where
B: Buffer,
impl<'a, B, N> BufferSlice<'a, B, N>where B: Buffer,
sourcepub fn requeue(self)
pub fn requeue(self)
Reinsert the buffer at the beginning queue.
It will thus de dequeued again next.
Examples
let queue: Queue<VecBuffer<usize>> = Queue::with_capacity(42);
queue.try_enqueue(0).unwrap();
queue.try_enqueue(1).unwrap();
let slice = queue.try_dequeue().unwrap();
assert_eq!(slice.deref(), &[0, 1]);
slice.requeue();
let slice = queue.try_dequeue().unwrap();
assert_eq!(slice.deref(), &[0, 1]);
Trait Implementations§
source§impl<'a, B, N> Deref for BufferSlice<'a, B, N>where
B: Buffer,
impl<'a, B, N> Deref for BufferSlice<'a, B, N>where B: Buffer,
source§impl<'a, B, N> DerefMut for BufferSlice<'a, B, N>where
B: Buffer,
impl<'a, B, N> DerefMut for BufferSlice<'a, B, N>where B: Buffer,
source§impl<'a, B, N> Drop for BufferSlice<'a, B, N>where
B: Buffer,
impl<'a, B, N> Drop for BufferSlice<'a, B, N>where B: Buffer,
source§impl<'a, B, N> IntoIterator for BufferSlice<'a, B, N>where
B: Buffer + Drain,
impl<'a, B, N> IntoIterator for BufferSlice<'a, B, N>where B: Buffer + Drain,
Auto Trait Implementations§
impl<'a, B, N> RefUnwindSafe for BufferSlice<'a, B, N>where N: RefUnwindSafe, <B as Buffer>::Slice<'a>: RefUnwindSafe,
impl<'a, B, N> Send for BufferSlice<'a, B, N>where N: Sync, <B as Buffer>::Slice<'a>: Send,
impl<'a, B, N> Sync for BufferSlice<'a, B, N>where N: Sync, <B as Buffer>::Slice<'a>: Sync,
impl<'a, B, N> Unpin for BufferSlice<'a, B, N>where <B as Buffer>::Slice<'a>: Unpin,
impl<'a, B, N> UnwindSafe for BufferSlice<'a, B, N>where N: RefUnwindSafe, <B as Buffer>::Slice<'a>: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T, const N: usize> BufferValue<ArrayBuffer<T, N>> for T
impl<T, const N: usize> BufferValue<ArrayBuffer<T, N>> for T
source§unsafe fn insert_into(self, buffer: &ArrayBuffer<T, N>, index: usize)
unsafe fn insert_into(self, buffer: &ArrayBuffer<T, N>, index: usize)
Inserts the value into the buffer at the given index. Read more