From 90690702e1e4abab804ec91e8ff4183824bec436 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Mon, 20 Jan 2020 04:47:36 +0100 Subject: Add `Application::Executor` associated type --- futures/src/executor.rs | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 futures/src/executor.rs (limited to 'futures/src/executor.rs') diff --git a/futures/src/executor.rs b/futures/src/executor.rs new file mode 100644 index 00000000..144a41f8 --- /dev/null +++ b/futures/src/executor.rs @@ -0,0 +1,36 @@ +//! Choose your preferred executor to power a runtime. +mod null; + +#[cfg(feature = "thread-pool")] +mod thread_pool; + +#[cfg(feature = "thread-pool")] +pub use thread_pool::ThreadPool; + +#[cfg(feature = "tokio")] +mod tokio; + +#[cfg(feature = "async-std")] +mod async_std; + +pub use null::Null; + +#[cfg(feature = "tokio")] +pub use self::tokio::Tokio; + +#[cfg(feature = "async-std")] +pub use self::async_std::AsyncStd; + +use futures::Future; + +pub trait Executor: Sized { + fn new() -> Result + where + Self: Sized; + + fn spawn(&self, future: impl Future + Send + 'static); + + fn enter(&self, f: impl FnOnce() -> R) -> R { + f() + } +} -- cgit From 04086a90c9e933ebfb42de378054e1115b33529d Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Mon, 20 Jan 2020 05:43:09 +0100 Subject: Implement `WasmBindgen` executor and reorganize --- futures/src/executor.rs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'futures/src/executor.rs') diff --git a/futures/src/executor.rs b/futures/src/executor.rs index 144a41f8..b2ff043e 100644 --- a/futures/src/executor.rs +++ b/futures/src/executor.rs @@ -4,23 +4,29 @@ mod null; #[cfg(feature = "thread-pool")] mod thread_pool; -#[cfg(feature = "thread-pool")] -pub use thread_pool::ThreadPool; - #[cfg(feature = "tokio")] mod tokio; #[cfg(feature = "async-std")] mod async_std; +#[cfg(target_arch = "wasm32")] +mod wasm_bindgen; + pub use null::Null; +#[cfg(feature = "thread-pool")] +pub use thread_pool::ThreadPool; + #[cfg(feature = "tokio")] pub use self::tokio::Tokio; #[cfg(feature = "async-std")] pub use self::async_std::AsyncStd; +#[cfg(target_arch = "wasm32")] +pub use wasm_bindgen::WasmBindgen; + use futures::Future; pub trait Executor: Sized { -- cgit From f14009601e270e43bdf29b8f4842cf136fbbd8b9 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Mon, 20 Jan 2020 09:49:17 +0100 Subject: Write documentation for `iced_futures` --- futures/src/executor.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'futures/src/executor.rs') diff --git a/futures/src/executor.rs b/futures/src/executor.rs index b2ff043e..c2b9cc72 100644 --- a/futures/src/executor.rs +++ b/futures/src/executor.rs @@ -29,13 +29,26 @@ pub use wasm_bindgen::WasmBindgen; use futures::Future; +/// A type that can run futures. pub trait Executor: Sized { + /// Creates a new [`Executor`]. + /// + /// [`Executor`]: trait.Executor.html fn new() -> Result where Self: Sized; + /// Spawns a future in the [`Executor`]. + /// + /// [`Executor`]: trait.Executor.html fn spawn(&self, future: impl Future + Send + 'static); + /// Runs the given closure inside the [`Executor`]. + /// + /// Some executors, like `tokio`, require some global state to be in place + /// before creating futures. This method can be leveraged to set up this + /// global state, call a function, restore the state, and obtain the result + /// of the call. fn enter(&self, f: impl FnOnce() -> R) -> R { f() } -- cgit