Embassy
embassy-sync

Crates

git

Versions

default

Flavors

Struct embassy_sync::zerocopy_channel::Channel

source ·
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> !Freeze for Channel<'a, M, T>

§

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 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> 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, U> TryFrom<U> for T
where 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 T
where 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.