//! Asynchronous channels. //! //! Like threads, concurrent tasks sometimes need to communicate with each //! other. This module contains two basic abstractions for doing so: //! //! - [oneshot], a way of sending a single value from one task to another. //! - [mpsc], a multi-producer, single-consumer channel for sending values //! between tasks, analogous to the similarly-named structure in the standard //! library. //! //! All items are only available when the `std` or `alloc` feature of this //! library is activated, and it is activated by default. #![cfg_attr(not(feature = "std"), no_std)] #![warn( missing_debug_implementations, missing_docs, rust_2018_idioms, single_use_lifetimes, unreachable_pub )] #![doc(test( no_crate_inject, attr( deny(warnings, rust_2018_idioms, single_use_lifetimes), allow(dead_code, unused_assignments, unused_variables) ) ))] #[cfg(not(futures_no_atomic_cas))] #[cfg(feature = "alloc")] extern crate alloc; #[cfg(not(futures_no_atomic_cas))] #[cfg(feature = "alloc")] mod lock; #[cfg(not(futures_no_atomic_cas))] #[cfg(feature = "std")] pub mod mpsc; #[cfg(not(futures_no_atomic_cas))] #[cfg(feature = "alloc")] pub mod oneshot;