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" )] |
26 | extern crate alloc; |
27 | #[cfg (feature = "std" )] |
28 | extern crate std; |
29 | |
30 | #[cfg_attr (target_os = "none" , cfg(target_has_atomic = "ptr" ))] |
31 | #[cfg (feature = "alloc" )] |
32 | mod lock; |
33 | #[cfg_attr (target_os = "none" , cfg(target_has_atomic = "ptr" ))] |
34 | #[cfg (feature = "std" )] |
35 | pub mod mpsc; |
36 | #[cfg_attr (target_os = "none" , cfg(target_has_atomic = "ptr" ))] |
37 | #[cfg (feature = "alloc" )] |
38 | pub mod oneshot; |
39 | |