Trait rb::RbConsumer [] [src]

pub trait RbConsumer<T> {
    fn skip_pending(&self) -> Result<usize>;
fn skip(&self, cnt: usize) -> Result<usize>;
fn get(&self, _: &mut [T]) -> Result<usize>;
fn read(&self, _: &mut [T]) -> Result<usize>;
fn read_blocking(&self, _: &mut [T]) -> Option<usize>; }

Defines read methods for a consumer view.

Required Methods

Skips all pending values. Technically it sets the consumer's read pointer to the position of the producer's write pointer.

Returns the number of skipped elements.

Possible errors:

  • RbError::Empty no pending elements

Skips cnt number of elements.

Returns the number of skipped elements.

Possible errors:

  • RbError::Empty no pending elements

Fills the given slice with values or, if the buffer is empty, does not modify it. This method does not change the state of the buffer, this means that the read pointer isn't changed if you call get. Consecutive calls to this method are idempotent, i.e. they will fill the given slice with the same data. Using get can be beneficial to read when a successive call has failed and you want to try again with same data. You can use skip to move the read pointer i.e. mark the values as read after the call succeeded.

Returns the number of written values or an error.

Possible errors:

  • RbError::Empty

Fills the given slice with values or, if the buffer is empty, does not modify it. Returns the number of written values or an error.

Possible errors:

  • RbError::Empty

Works analog to read but blocks until it can read elements to fill the given buffer slice. The number of blocks read is not necessarily equal to the length of the given buffer slice, the exact number is returned in the Option value.

Returns None if the given slice has zero length.

Implementors