Expand description

An async multi-producer multi-consumer channel, where each message can be received by only one of all existing consumers.

There are two kinds of channels:

  1. Bounded channel with limited capacity.
  2. Unbounded channel with unlimited capacity.

A channel has the Sender and Receiver side. Both sides are cloneable and can be shared among multiple threads.

When all Senders or all Receivers are dropped, the channel becomes closed. When a channel is closed, no more messages can be sent, but remaining messages can still be received.

The channel can also be closed manually by calling Sender::close() or Receiver::close().

Examples

let (s, r) = async_channel::unbounded();

assert_eq!(s.send("Hello").await, Ok(()));
assert_eq!(r.recv().await, Ok("Hello"));

Structs

The receiving side of a channel.

A future returned by Receiver::recv().

An error returned from Receiver::recv().

A future returned by Sender::send().

An error returned from Sender::send().

The sending side of a channel.

Enums

An error returned from Receiver::try_recv().

An error returned from Sender::try_send().

Functions

Creates a bounded channel.

Creates an unbounded channel.