1  //! Tools for working with tasks.
2  
3  #![no_std]
4  #![doc(test(
5      no_crate_inject,
6      attr(
7          deny(warnings, rust_2018_idioms, single_use_lifetimes),
8          allow(dead_code, unused_assignments, unused_variables)
9      )
10  ))]
11  #![warn(missing_docs, unsafe_op_in_unsafe_fn)]
12  
13  #[cfg(feature = "alloc")]
14  extern crate alloc;
15  #[cfg(feature = "std")]
16  extern crate std;
17  
18  mod spawn;
19  pub use crate::spawn::{LocalSpawn, Spawn, SpawnError};
20  
21  #[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))]
22  #[cfg(feature = "alloc")]
23  mod arc_wake;
24  #[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))]
25  #[cfg(feature = "alloc")]
26  pub use crate::arc_wake::ArcWake;
27  
28  #[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))]
29  #[cfg(feature = "alloc")]
30  mod waker;
31  #[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))]
32  #[cfg(feature = "alloc")]
33  pub use crate::waker::waker;
34  
35  #[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))]
36  #[cfg(feature = "alloc")]
37  mod waker_ref;
38  #[cfg_attr(target_os = "none", cfg(target_has_atomic = "ptr"))]
39  #[cfg(feature = "alloc")]
40  pub use crate::waker_ref::{waker_ref, WakerRef};
41  
42  mod future_obj;
43  pub use crate::future_obj::{FutureObj, LocalFutureObj, UnsafeFutureObj};
44  
45  mod noop_waker;
46  pub use crate::noop_waker::noop_waker;
47  pub use crate::noop_waker::noop_waker_ref;
48  
49  #[doc(no_inline)]
50  pub use core::task::{Context, Poll, RawWaker, RawWakerVTable, Waker};
51