#channel #mpmc #select #golang #message


Multi-producer multi-consumer channels for message passing

22 releases

0.4.2 Feb 22, 2020
0.4.0 Nov 6, 2019
0.3.9 Jul 24, 2019
0.3.8 Jan 29, 2019
0.1.1 Nov 27, 2017

#2 in Concurrency

Download history 91690/week @ 2019-12-14 53304/week @ 2019-12-21 57053/week @ 2019-12-28 91030/week @ 2020-01-04 88266/week @ 2020-01-11 89239/week @ 2020-01-18 91485/week @ 2020-01-25 99125/week @ 2020-02-01 96131/week @ 2020-02-08 98237/week @ 2020-02-15 109559/week @ 2020-02-22 112589/week @ 2020-02-29 107321/week @ 2020-03-07 108246/week @ 2020-03-14 110947/week @ 2020-03-21 103893/week @ 2020-03-28

372,212 downloads per month
Used in 1,327 crates (273 directly)

MIT/Apache-2.0 AND BSD-2-Clause

5.5K SLoC

Crossbeam Channel

Build Status License Cargo Documentation Rust 1.28+ 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:

  • Senders and Receivers 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.


Add this to your Cargo.toml:

crossbeam-channel = "0.4"

Next, add this to your crate:

extern crate crossbeam_channel;


The minimum supported Rust version is 1.28. Any change to this is considered a breaking change.


Licensed under either of

at your option.


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.

  • src/flavors/array.rs is based on Bounded MPMC queue by Dmitry Vyukov, licensed under the Simplified BSD License and the Apache License, Version 2.0.

  • 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.