Struct RingBuffer

Source
pub struct RingBuffer { /* private fields */ }
Expand description

Single producer, many consumer (SPMC) ring buffer backed by shared memory.

Implementations§

Source§

impl RingBuffer

Source

pub fn new(bytes: &[u8]) -> Self

Create new RingBuffer by wrapping provided bytes. It is necessary to call into_writer() or into_reader() following the buffer construction to start using it.

Source

pub fn into_writer(self) -> Writer

Will consume self and return instance of writer backed by this ring buffer. The writer will write from the beginning of the ring buffer. If you need to continue writing to the previous buffer use RingBuffer::join_writer instead.

Source

pub fn join_writer(self) -> Writer

Will consume self and return instance of writer backed by this ring buffer. The writer will not reset current producer_position and will continue writing from that point.

Source

pub fn into_writer_with_metadata<F: FnOnce(&mut [u8])>( self, metadata: F, ) -> Writer

Will consume self and return instance of writer backed by this ring buffer. This method also accepts closure to populate metadata buffer.

Source

pub fn into_reader(self) -> Reader

Will consume self and return instance of reader backed by this ring buffer. The reader position will be set to producer most up-to-date position.

Trait Implementations§

Source§

impl Clone for RingBuffer

Source§

fn clone(&self) -> RingBuffer

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for RingBuffer

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl From<RingBuffer> for Writer

Source§

fn from(ring: RingBuffer) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.