[][src]Module smol::channel

An async multi-producer multi-consumer channel.

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.

RecvError

An error returned from Receiver::recv().

SendError

An error returned from Sender::send().

Sender

The sending side of a channel.

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.