aboutsummaryrefslogtreecommitdiff

Crossbeam Channel

Build Status License Cargo Documentation Rust 1.60+ chat

This crate provides multi-producer multi-consumer channels for message passing. It is an alternative to [std::sync::mpsc] with more features and better performance.

Some highlights:

  • [Sender]s and [Receiver]s can be cloned and shared among threads.
  • Two main kinds of channels are [bounded] and [unbounded].
  • Convenient extra channels like [after], [never], and [tick].
  • The [select!] macro can block on multiple channel operations.
  • [Select] can select over a dynamically built list of channel operations.
  • Channels use locks very sparingly for maximum performance.

Usage

Add this to your Cargo.toml:

[dependencies]
crossbeam-channel = "0.5"

Compatibility

Crossbeam Channel supports stable Rust releases going back at least six months, and every time the minimum supported Rust version is increased, a new minor version is released. Currently, the minimum supported Rust version is 1.60.

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.

Third party software

This product includes copies and modifications of software developed by third parties:

  • examples/matching.rs includes matching.go by Stefan Nilsson, licensed under Creative Commons Attribution 3.0 Unported License.

  • tests/mpsc.rs includes modifications of code from The Rust Programming Language, licensed under the MIT License and the Apache License, Version 2.0.

  • tests/golang.rs is based on code from The Go Programming Language, licensed under the 3-Clause BSD License.

See the source code files for more details.

Copies of third party licenses can be found in LICENSE-THIRD-PARTY.