Crate async_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().

§Examples

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

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

Structs§

Receiver
The receiving side of a channel.
Recv
A future returned by Receiver::recv().
RecvError
An error returned from Receiver::recv().
Send
A future returned by Sender::send().
SendError
An error returned from Sender::send().
Sender
The sending side of a channel.
WeakReceiver
A Receiver that prevents the channel from not being closed.
WeakSender
A Sender that prevents the channel from not being closed.

Enums§

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

Functions§

bounded
Creates a bounded channel.
unbounded
Creates an unbounded channel.