• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //! Asynchronous channels.
2 //!
3 //! Like threads, concurrent tasks sometimes need to communicate with each
4 //! other. This module contains two basic abstractions for doing so:
5 //!
6 //! - [oneshot], a way of sending a single value from one task to another.
7 //! - [mpsc], a multi-producer, single-consumer channel for sending values
8 //!   between tasks, analogous to the similarly-named structure in the standard
9 //!   library.
10 //!
11 //! All items are only available when the `std` or `alloc` feature of this
12 //! library is activated, and it is activated by default.
13 
14 #![cfg_attr(not(feature = "std"), no_std)]
15 #![warn(
16     missing_debug_implementations,
17     missing_docs,
18     rust_2018_idioms,
19     single_use_lifetimes,
20     unreachable_pub
21 )]
22 #![doc(test(
23     no_crate_inject,
24     attr(
25         deny(warnings, rust_2018_idioms, single_use_lifetimes),
26         allow(dead_code, unused_assignments, unused_variables)
27     )
28 ))]
29 
30 #[cfg(not(futures_no_atomic_cas))]
31 #[cfg(feature = "alloc")]
32 extern crate alloc;
33 
34 #[cfg(not(futures_no_atomic_cas))]
35 #[cfg(feature = "alloc")]
36 mod lock;
37 #[cfg(not(futures_no_atomic_cas))]
38 #[cfg(feature = "std")]
39 pub mod mpsc;
40 #[cfg(not(futures_no_atomic_cas))]
41 #[cfg(feature = "alloc")]
42 pub mod oneshot;
43