futures_channel/
lib.rs

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#![no_std]
15#![doc(test(
16    no_crate_inject,
17    attr(
18        deny(warnings, rust_2018_idioms, single_use_lifetimes),
19        allow(dead_code, unused_assignments, unused_variables)
20    )
21))]
22#![warn(missing_docs, unsafe_op_in_unsafe_fn)]
23
24#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))]
25#[cfg(feature = "alloc")]
26extern crate alloc;
27#[cfg(feature = "std")]
28extern crate std;
29
30#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))]
31#[cfg(feature = "alloc")]
32mod lock;
33#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))]
34#[cfg(feature = "std")]
35pub mod mpsc;
36#[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))]
37#[cfg(feature = "alloc")]
38pub mod oneshot;