23 stable releases
2.3.1 | May 16, 2024 |
---|---|
2.2.1 | Apr 14, 2024 |
2.2.0 | Feb 8, 2024 |
2.1.1 | Nov 24, 2023 |
0.1.0 | May 6, 2019 |
#6 in Concurrency
5,158,423 downloads per month
Used in 6,787 crates
(468 directly)
41KB
568 lines
async-channel
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:
- Bounded channel with limited capacity.
- 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
let (s, r) = async_channel::unbounded();
assert_eq!(s.send("Hello").await, Ok(()));
assert_eq!(r.recv().await, Ok("Hello"));
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Dependencies
~400KB