pub struct Channel<'a, M: RawMutex, T> { /* private fields */ }
Expand description

A bounded zero-copy channel for communicating between asynchronous tasks with backpressure.

The channel will buffer up to the provided number of messages. Once the buffer is full, attempts to send new messages will wait until a message is received from the channel.

All data sent will become available in the same order as it was sent.

The channel requires a buffer of recyclable elements. Writing to the channel is done through an &mut T.

Implementations§

source§

impl<'a, M: RawMutex, T> Channel<'a, M, T>

source

pub fn new(buf: &'a mut [T]) -> Self

Initialize a new Channel.

The provided buffer will be used and reused by the channel’s logic, and thus dictates the channel’s capacity.

source

pub fn split(&mut self) -> (Sender<'_, M, T>, Receiver<'_, M, T>)

Creates a Sender and Receiver from an existing channel.

Further Senders and Receivers can be created through Sender::borrow and Receiver::borrow respectively.

Auto Trait Implementations§

§

impl<'a, M, T> !RefUnwindSafe for Channel<'a, M, T>

§

impl<'a, M, T> !Send for Channel<'a, M, T>

§

impl<'a, M, T> !Sync for Channel<'a, M, T>

§

impl<'a, M, T> Unpin for Channel<'a, M, T>where M: Unpin,

§

impl<'a, M, T> !UnwindSafe for Channel<'a, M, T>

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. 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 Twhere 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, U> TryFrom<U> for Twhere U: Into<T>,

§

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 Twhere U: TryFrom<T>,

§

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.