| 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 | |