| lib.rs |
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][`bounded()`] channel with limited capacity.
2. [Unbounded][`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 [`Sender`]s or all [`Receiver`]s 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
```
# futures_lite::future::block_on(async {
let (s, r) = async_channel::unbounded();
assert_eq!(s.send("Hello").await, Ok(()));
assert_eq!(r.recv().await, Ok("Hello"));
# });
``` |
39842 |
- |