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