diff options
Diffstat (limited to '')
| -rw-r--r-- | futures/src/backend/native/thread_pool.rs (renamed from futures/src/executor/thread_pool.rs) | 7 | ||||
| -rw-r--r-- | futures/src/backend/null.rs (renamed from futures/src/executor/null.rs) | 7 | ||||
| -rw-r--r-- | futures/src/executor.rs | 42 | ||||
| -rw-r--r-- | futures/src/executor/async_std.rs | 18 | ||||
| -rw-r--r-- | futures/src/executor/smol.rs | 18 | ||||
| -rw-r--r-- | futures/src/executor/tokio.rs | 22 | ||||
| -rw-r--r-- | futures/src/executor/wasm_bindgen.rs | 15 |
7 files changed, 8 insertions, 121 deletions
diff --git a/futures/src/executor/thread_pool.rs b/futures/src/backend/native/thread_pool.rs index a6c6168e..6e791533 100644 --- a/futures/src/executor/thread_pool.rs +++ b/futures/src/backend/native/thread_pool.rs @@ -1,12 +1,11 @@ -use crate::Executor; - +//! A `ThreadPool` backend. use futures::Future; -/// A thread pool runtime for futures. +/// A thread pool executor for futures. #[cfg_attr(docsrs, doc(cfg(feature = "thread-pool")))] pub type ThreadPool = futures::executor::ThreadPool; -impl Executor for futures::executor::ThreadPool { +impl crate::Executor for futures::executor::ThreadPool { fn new() -> Result<Self, futures::io::Error> { futures::executor::ThreadPool::new() } diff --git a/futures/src/executor/null.rs b/futures/src/backend/null.rs index 65e2e2df..e22e7921 100644 --- a/futures/src/executor/null.rs +++ b/futures/src/backend/null.rs @@ -1,12 +1,11 @@ -use crate::Executor; - +//! A backend that does nothing! use futures::Future; /// An executor that drops all the futures, instead of spawning them. #[derive(Debug)] -pub struct Null; +pub struct Executor; -impl Executor for Null { +impl crate::Executor for Executor { fn new() -> Result<Self, futures::io::Error> { Ok(Self) } diff --git a/futures/src/executor.rs b/futures/src/executor.rs index 23682f32..5ac76081 100644 --- a/futures/src/executor.rs +++ b/futures/src/executor.rs @@ -1,38 +1,5 @@ //! Choose your preferred executor to power a runtime. -mod null; - -#[cfg(all(not(target_arch = "wasm32"), feature = "thread-pool"))] -mod thread_pool; - -#[cfg(all(not(target_arch = "wasm32"), feature = "tokio"))] -mod tokio; - -#[cfg(all(not(target_arch = "wasm32"), feature = "async-std"))] -mod async_std; - -#[cfg(all(not(target_arch = "wasm32"), feature = "smol"))] -mod smol; - -#[cfg(target_arch = "wasm32")] -mod wasm_bindgen; - -pub use null::Null; - -#[cfg(all(not(target_arch = "wasm32"), feature = "thread-pool"))] -pub use thread_pool::ThreadPool; - -#[cfg(all(not(target_arch = "wasm32"), feature = "tokio"))] -pub use self::tokio::Tokio; - -#[cfg(all(not(target_arch = "wasm32"), feature = "async-std"))] -pub use self::async_std::AsyncStd; - -#[cfg(all(not(target_arch = "wasm32"), feature = "smol"))] -pub use self::smol::Smol; - -#[cfg(target_arch = "wasm32")] -pub use wasm_bindgen::WasmBindgen; - +use crate::MaybeSend; use futures::Future; /// A type that can run futures. @@ -43,12 +10,7 @@ pub trait Executor: Sized { Self: Sized; /// Spawns a future in the [`Executor`]. - #[cfg(not(target_arch = "wasm32"))] - fn spawn(&self, future: impl Future<Output = ()> + Send + 'static); - - /// Spawns a local future in the [`Executor`]. - #[cfg(target_arch = "wasm32")] - fn spawn(&self, future: impl Future<Output = ()> + 'static); + fn spawn(&self, future: impl Future<Output = ()> + MaybeSend + 'static); /// Runs the given closure inside the [`Executor`]. /// diff --git a/futures/src/executor/async_std.rs b/futures/src/executor/async_std.rs deleted file mode 100644 index 471be369..00000000 --- a/futures/src/executor/async_std.rs +++ /dev/null @@ -1,18 +0,0 @@ -use crate::Executor; - -use futures::Future; - -/// An `async-std` runtime. -#[cfg_attr(docsrs, doc(cfg(feature = "async-std")))] -#[derive(Debug)] -pub struct AsyncStd; - -impl Executor for AsyncStd { - fn new() -> Result<Self, futures::io::Error> { - Ok(Self) - } - - fn spawn(&self, future: impl Future<Output = ()> + Send + 'static) { - let _ = async_std::task::spawn(future); - } -} diff --git a/futures/src/executor/smol.rs b/futures/src/executor/smol.rs deleted file mode 100644 index deafd43a..00000000 --- a/futures/src/executor/smol.rs +++ /dev/null @@ -1,18 +0,0 @@ -use crate::Executor; - -use futures::Future; - -/// A `smol` runtime. -#[cfg_attr(docsrs, doc(cfg(feature = "smol")))] -#[derive(Debug)] -pub struct Smol; - -impl Executor for Smol { - fn new() -> Result<Self, futures::io::Error> { - Ok(Self) - } - - fn spawn(&self, future: impl Future<Output = ()> + Send + 'static) { - smol::spawn(future).detach(); - } -} diff --git a/futures/src/executor/tokio.rs b/futures/src/executor/tokio.rs deleted file mode 100644 index c6a21cec..00000000 --- a/futures/src/executor/tokio.rs +++ /dev/null @@ -1,22 +0,0 @@ -use crate::Executor; - -use futures::Future; - -/// A `tokio` runtime. -#[cfg_attr(docsrs, doc(cfg(feature = "tokio")))] -pub type Tokio = tokio::runtime::Runtime; - -impl Executor for Tokio { - fn new() -> Result<Self, futures::io::Error> { - tokio::runtime::Runtime::new() - } - - fn spawn(&self, future: impl Future<Output = ()> + Send + 'static) { - let _ = tokio::runtime::Runtime::spawn(self, future); - } - - fn enter<R>(&self, f: impl FnOnce() -> R) -> R { - let _guard = tokio::runtime::Runtime::enter(self); - f() - } -} diff --git a/futures/src/executor/wasm_bindgen.rs b/futures/src/executor/wasm_bindgen.rs deleted file mode 100644 index 94d694c8..00000000 --- a/futures/src/executor/wasm_bindgen.rs +++ /dev/null @@ -1,15 +0,0 @@ -use crate::Executor; - -/// A `wasm-bindgen-futures` runtime. -#[derive(Debug)] -pub struct WasmBindgen; - -impl Executor for WasmBindgen { - fn new() -> Result<Self, futures::io::Error> { - Ok(Self) - } - - fn spawn(&self, future: impl futures::Future<Output = ()> + 'static) { - wasm_bindgen_futures::spawn_local(future); - } -} |
