1 //! Tools for working with tasks.
2 
3 #![cfg_attr(not(feature = "std"), no_std)]
4 #![warn(missing_debug_implementations, missing_docs, rust_2018_idioms, unreachable_pub)]
5 // It cannot be included in the published code because this lints have false positives in the minimum required version.
6 #![cfg_attr(test, warn(single_use_lifetimes))]
7 #![doc(test(
8     no_crate_inject,
9     attr(
10         deny(warnings, rust_2018_idioms, single_use_lifetimes),
11         allow(dead_code, unused_assignments, unused_variables)
12     )
13 ))]
14 
15 #[cfg(feature = "alloc")]
16 extern crate alloc;
17 
18 mod spawn;
19 pub use crate::spawn::{LocalSpawn, Spawn, SpawnError};
20 
21 #[cfg(not(futures_no_atomic_cas))]
22 #[cfg(feature = "alloc")]
23 mod arc_wake;
24 #[cfg(not(futures_no_atomic_cas))]
25 #[cfg(feature = "alloc")]
26 pub use crate::arc_wake::ArcWake;
27 
28 #[cfg(not(futures_no_atomic_cas))]
29 #[cfg(feature = "alloc")]
30 mod waker;
31 #[cfg(not(futures_no_atomic_cas))]
32 #[cfg(feature = "alloc")]
33 pub use crate::waker::waker;
34 
35 #[cfg(not(futures_no_atomic_cas))]
36 #[cfg(feature = "alloc")]
37 mod waker_ref;
38 #[cfg(not(futures_no_atomic_cas))]
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