pub struct Channel<M, T, const N: usize>where
    M: RawMutex,
{ /* private fields */ }
Expand description

A bounded 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.

Implementations

Establish a new bounded channel. For example, to create one with a NoopMutex:

use embassy_sync::channel::Channel;
use embassy_sync::blocking_mutex::raw::NoopRawMutex;

// Declare a bounded channel of 3 u32s.
let mut channel = Channel::<NoopRawMutex, u32, 3>::new();

Get a sender for this channel.

Get a receiver for this channel.

Send a value, waiting until there is capacity.

Sending completes when the value has been pushed to the channel’s queue. This doesn’t mean the value has been received yet.

Attempt to immediately send a message.

This method differs from send by returning immediately if the channel’s buffer is full, instead of waiting.

Errors

If the channel capacity has been reached, i.e., the channel has n buffered values where n is the argument passed to Channel, then an error is returned.

Receive the next value.

If there are no messages in the channel’s buffer, this method will wait until a message is sent.

Attempt to immediately receive a message.

This method will either receive a message from the channel immediately or return an error if the channel is empty.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

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

The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.