1 | //! Tools for working with tasks. |
2 | //! |
3 | //! This module contains: |
4 | //! |
5 | //! - [`Spawn`], a trait for spawning new tasks. |
6 | //! - [`Context`], a context of an asynchronous task, |
7 | //! including a handle for waking up the task. |
8 | //! - [`Waker`], a handle for waking up a task. |
9 | //! |
10 | //! The remaining types and traits in the module are used for implementing |
11 | //! executors or dealing with synchronization issues around task wakeup. |
12 | |
13 | #[doc (no_inline)] |
14 | pub use core::task::{Context, Poll, RawWaker, RawWakerVTable, Waker}; |
15 | |
16 | pub use futures_task::{FutureObj, LocalFutureObj, LocalSpawn, Spawn, SpawnError, UnsafeFutureObj}; |
17 | |
18 | pub use futures_task::noop_waker; |
19 | pub use futures_task::noop_waker_ref; |
20 | |
21 | #[cfg (not(futures_no_atomic_cas))] |
22 | #[cfg (feature = "alloc" )] |
23 | pub use futures_task::ArcWake; |
24 | |
25 | #[cfg (not(futures_no_atomic_cas))] |
26 | #[cfg (feature = "alloc" )] |
27 | pub use futures_task::waker; |
28 | |
29 | #[cfg (not(futures_no_atomic_cas))] |
30 | #[cfg (feature = "alloc" )] |
31 | pub use futures_task::{waker_ref, WakerRef}; |
32 | |
33 | #[cfg (not(futures_no_atomic_cas))] |
34 | pub use futures_core::task::__internal::AtomicWaker; |
35 | |
36 | mod spawn; |
37 | pub use self::spawn::{LocalSpawnExt, SpawnExt}; |
38 | |