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>
impl<'a, M: RawMutex, T> Channel<'a, M, T>
sourcepub fn new(buf: &'a mut [T]) -> Self
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.
sourcepub fn split(&mut self) -> (Sender<'_, M, T>, Receiver<'_, M, T>)
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> 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