pub struct AsyncRb<S: Storage> { /* private fields */ }
Implementations§
Trait Implementations§
Source§impl<S: Storage> Consumer for AsyncRb<S>
impl<S: Storage> Consumer for AsyncRb<S>
Source§unsafe fn set_read_index(&self, value: usize)
unsafe fn set_read_index(&self, value: usize)
Set read index. Read more
§unsafe fn advance_read_index(&self, count: usize)
unsafe fn advance_read_index(&self, count: usize)
§fn occupied_slices(
&self,
) -> (&[MaybeUninit<Self::Item>], &[MaybeUninit<Self::Item>])
fn occupied_slices( &self, ) -> (&[MaybeUninit<Self::Item>], &[MaybeUninit<Self::Item>])
Provides a direct access to the ring buffer occupied memory.
The difference from
Self::as_slices
is that this method provides slices of MaybeUninit
, so items may be moved out of slices. Read more§unsafe fn occupied_slices_mut(
&mut self,
) -> (&mut [MaybeUninit<Self::Item>], &mut [MaybeUninit<Self::Item>])
unsafe fn occupied_slices_mut( &mut self, ) -> (&mut [MaybeUninit<Self::Item>], &mut [MaybeUninit<Self::Item>])
Provides a direct mutable access to the ring buffer occupied memory. Read more
§fn as_slices(&self) -> (&[Self::Item], &[Self::Item])
fn as_slices(&self) -> (&[Self::Item], &[Self::Item])
Returns a pair of slices which contain, in order, the contents of the ring buffer.
§fn as_mut_slices(&mut self) -> (&mut [Self::Item], &mut [Self::Item])
fn as_mut_slices(&mut self) -> (&mut [Self::Item], &mut [Self::Item])
Returns a pair of mutable slices which contain, in order, the contents of the ring buffer.
§fn first(&self) -> Option<&Self::Item>
fn first(&self) -> Option<&Self::Item>
Returns a reference to the eldest item in the ring buffer, if exists.
§fn first_mut(&mut self) -> Option<&mut Self::Item>
fn first_mut(&mut self) -> Option<&mut Self::Item>
Returns a mutable reference to the eldest item in the ring buffer, if exists.
§fn last(&self) -> Option<&Self::Item>
fn last(&self) -> Option<&Self::Item>
Returns a reference to the most recent item in the ring buffer, if exists. Read more
§fn last_mut(&mut self) -> Option<&mut Self::Item>
fn last_mut(&mut self) -> Option<&mut Self::Item>
Returns a mutable reference to the most recent item in the ring buffer, if exists. Read more
§fn try_pop(&mut self) -> Option<Self::Item>
fn try_pop(&mut self) -> Option<Self::Item>
Removes the eldest item from the ring buffer and returns it. Read more
§fn try_peek(&self) -> Option<&Self::Item>
fn try_peek(&self) -> Option<&Self::Item>
Returns the reference to the eldest item without removing it from the buffer. Read more
§fn peek_slice_uninit(&self, elems: &mut [MaybeUninit<Self::Item>]) -> usize
fn peek_slice_uninit(&self, elems: &mut [MaybeUninit<Self::Item>]) -> usize
Copies items from the ring buffer to an uninit slice without removing them from the ring buffer. Read more
§fn peek_slice(&self, elems: &mut [Self::Item]) -> usize
fn peek_slice(&self, elems: &mut [Self::Item]) -> usize
Copies items from the ring buffer to a slice without removing them from the ring buffer. Read more
§fn pop_slice_uninit(&mut self, elems: &mut [MaybeUninit<Self::Item>]) -> usize
fn pop_slice_uninit(&mut self, elems: &mut [MaybeUninit<Self::Item>]) -> usize
Removes items from the ring buffer and writes them into an uninit slice. Read more
§fn pop_slice(&mut self, elems: &mut [Self::Item]) -> usize
fn pop_slice(&mut self, elems: &mut [Self::Item]) -> usize
Removes items from the ring buffer and writes them into a slice. Read more
§fn pop_iter(&mut self) -> PopIter<'_, Self>
fn pop_iter(&mut self) -> PopIter<'_, Self>
Returns an iterator that removes items one by one from the ring buffer.
§fn iter(&self) -> Chain<Iter<'_, Self::Item>, Iter<'_, Self::Item>>
fn iter(&self) -> Chain<Iter<'_, Self::Item>, Iter<'_, Self::Item>>
Returns a front-to-back iterator containing references to items in the ring buffer. Read more
§fn iter_mut(
&mut self,
) -> Chain<IterMut<'_, Self::Item>, IterMut<'_, Self::Item>>
fn iter_mut( &mut self, ) -> Chain<IterMut<'_, Self::Item>, IterMut<'_, Self::Item>>
Returns a front-to-back iterator that returns mutable references to items in the ring buffer. Read more
§fn skip(&mut self, count: usize) -> usize
fn skip(&mut self, count: usize) -> usize
Removes at most
count
and at least min(count, Self::len())
items from the buffer and safely drops them. Read moreSource§impl<S: Storage> Observer for AsyncRb<S>
impl<S: Storage> Observer for AsyncRb<S>
type Item = <S as Storage>::Item
Source§fn capacity(&self) -> NonZeroUsize
fn capacity(&self) -> NonZeroUsize
Capacity of the ring buffer. Read more
Source§fn read_index(&self) -> usize
fn read_index(&self) -> usize
Index of the last item in the ring buffer. Read more
Source§fn write_index(&self) -> usize
fn write_index(&self) -> usize
Index of the next empty slot in the ring buffer. Read more
Source§unsafe fn unsafe_slices(
&self,
start: usize,
end: usize,
) -> (&[MaybeUninit<S::Item>], &[MaybeUninit<S::Item>])
unsafe fn unsafe_slices( &self, start: usize, end: usize, ) -> (&[MaybeUninit<S::Item>], &[MaybeUninit<S::Item>])
Source§unsafe fn unsafe_slices_mut(
&self,
start: usize,
end: usize,
) -> (&mut [MaybeUninit<S::Item>], &mut [MaybeUninit<S::Item>])
unsafe fn unsafe_slices_mut( &self, start: usize, end: usize, ) -> (&mut [MaybeUninit<S::Item>], &mut [MaybeUninit<S::Item>])
Source§fn read_is_held(&self) -> bool
fn read_is_held(&self) -> bool
Whether read end is held by consumer.
Source§fn write_is_held(&self) -> bool
fn write_is_held(&self) -> bool
Whether write end is held by producer.
§fn occupied_len(&self) -> usize
fn occupied_len(&self) -> usize
The number of items stored in the buffer. Read more
§fn vacant_len(&self) -> usize
fn vacant_len(&self) -> usize
The number of remaining free places in the buffer. Read more
Source§impl<S: Storage> Producer for AsyncRb<S>
impl<S: Storage> Producer for AsyncRb<S>
Source§unsafe fn set_write_index(&self, value: usize)
unsafe fn set_write_index(&self, value: usize)
Set read index. Read more
§unsafe fn advance_write_index(&self, count: usize)
unsafe fn advance_write_index(&self, count: usize)
§fn vacant_slices(
&self,
) -> (&[MaybeUninit<Self::Item>], &[MaybeUninit<Self::Item>])
fn vacant_slices( &self, ) -> (&[MaybeUninit<Self::Item>], &[MaybeUninit<Self::Item>])
Provides a direct access to the ring buffer vacant memory. Read more
§fn vacant_slices_mut(
&mut self,
) -> (&mut [MaybeUninit<Self::Item>], &mut [MaybeUninit<Self::Item>])
fn vacant_slices_mut( &mut self, ) -> (&mut [MaybeUninit<Self::Item>], &mut [MaybeUninit<Self::Item>])
Mutable version of
Self::vacant_slices
. Read more§fn try_push(&mut self, elem: Self::Item) -> Result<(), Self::Item>
fn try_push(&mut self, elem: Self::Item) -> Result<(), Self::Item>
Appends an item to the ring buffer. Read more
§fn push_iter<I>(&mut self, iter: I) -> usize
fn push_iter<I>(&mut self, iter: I) -> usize
Appends items from an iterator to the ring buffer.
Elements that haven’t been added to the ring buffer remain in the iterator. Read more
§fn push_slice(&mut self, elems: &[Self::Item]) -> usize
fn push_slice(&mut self, elems: &[Self::Item]) -> usize
Appends items from slice to the ring buffer. Read more
Source§impl<S: Storage> RingBuffer for AsyncRb<S>
impl<S: Storage> RingBuffer for AsyncRb<S>
Source§unsafe fn hold_read(&self, flag: bool) -> bool
unsafe fn hold_read(&self, flag: bool) -> bool
Tell whether read end of the ring buffer is held by consumer or not. Read more
Source§unsafe fn hold_write(&self, flag: bool) -> bool
unsafe fn hold_write(&self, flag: bool) -> bool
Tell whether write end of the ring buffer is held by producer or not. Read more
§fn push_overwrite(&mut self, elem: Self::Item) -> Option<Self::Item>
fn push_overwrite(&mut self, elem: Self::Item) -> Option<Self::Item>
Pushes an item to the ring buffer overwriting the latest item if the buffer is full. Read more
§fn push_iter_overwrite<I>(&mut self, iter: I)
fn push_iter_overwrite<I>(&mut self, iter: I)
Appends items from an iterator to the ring buffer. Read more
impl<S: Storage> Unpin for AsyncRb<S>
Auto Trait Implementations§
impl<S> !Freeze for AsyncRb<S>
impl<S> !RefUnwindSafe for AsyncRb<S>
impl<S> Send for AsyncRb<S>where
S: Send,
impl<S> Sync for AsyncRb<S>where
S: Sync,
impl<S> UnwindSafe for AsyncRb<S>where
S: 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