Crate smol::channel

source ·
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().


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

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


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.


An error returned from Receiver::try_recv().
An error returned from Sender::try_send().


Creates a bounded channel.
Creates an unbounded channel.