diff options
author | 2022-01-28 18:24:07 +0700 | |
---|---|---|
committer | 2022-01-28 21:37:17 +0700 | |
commit | 167be45a7db7c1f60a79116766bdf38300429c6a (patch) | |
tree | 5af48807c8d90a73775fef68a51ae549880aa388 /src | |
parent | 5dab5a327ef643ee38ac3e42ab35212fff445631 (diff) | |
download | iced-167be45a7db7c1f60a79116766bdf38300429c6a.tar.gz iced-167be45a7db7c1f60a79116766bdf38300429c6a.tar.bz2 iced-167be45a7db7c1f60a79116766bdf38300429c6a.zip |
Split `iced_futures` into different `backend` implementations
Diffstat (limited to 'src')
-rw-r--r-- | src/executor.rs | 94 | ||||
-rw-r--r-- | src/sandbox.rs | 2 | ||||
-rw-r--r-- | src/time.rs | 12 |
3 files changed, 13 insertions, 95 deletions
diff --git a/src/executor.rs b/src/executor.rs index c7166c68..36ae274e 100644 --- a/src/executor.rs +++ b/src/executor.rs @@ -1,86 +1,14 @@ //! Choose your preferred executor to power your application. pub use crate::runtime::Executor; -pub use platform::Default; - -#[cfg(not(target_arch = "wasm32"))] -mod platform { - use iced_futures::{executor, futures}; - - #[cfg(feature = "tokio")] - type Executor = executor::Tokio; - - #[cfg(all(feature = "async-std", not(feature = "tokio"),))] - type Executor = executor::AsyncStd; - - #[cfg(all( - feature = "smol", - not(any(feature = "tokio", feature = "async-std")), - ))] - type Executor = executor::Smol; - - #[cfg(not(any( - feature = "tokio", - feature = "async-std", - feature = "smol", - )))] - type Executor = executor::ThreadPool; - - /// A default cross-platform executor. - /// - /// - On native platforms, it will use: - /// - `iced_futures::executor::Tokio` when the `tokio` feature is enabled. - /// - `iced_futures::executor::AsyncStd` when the `async-std` feature is - /// enabled. - /// - `iced_futures::executor::ThreadPool` otherwise. - /// - On the Web, it will use `iced_futures::executor::WasmBindgen`. - #[derive(Debug)] - pub struct Default(Executor); - - impl super::Executor for Default { - fn new() -> Result<Self, futures::io::Error> { - Ok(Default(Executor::new()?)) - } - - fn spawn( - &self, - future: impl futures::Future<Output = ()> + Send + 'static, - ) { - let _ = self.0.spawn(future); - } - - fn enter<R>(&self, f: impl FnOnce() -> R) -> R { - super::Executor::enter(&self.0, f) - } - } -} - -#[cfg(target_arch = "wasm32")] -mod platform { - use iced_futures::{executor::WasmBindgen, futures, Executor}; - - /// A default cross-platform executor. - /// - /// - On native platforms, it will use: - /// - `iced_futures::executor::Tokio` when the `tokio` feature is enabled. - /// - `iced_futures::executor::AsyncStd` when the `async-std` feature is - /// enabled. - /// - `iced_futures::executor::ThreadPool` otherwise. - /// - On the Web, it will use `iced_futures::executor::WasmBindgen`. - #[derive(Debug)] - pub struct Default(WasmBindgen); - - impl Executor for Default { - fn new() -> Result<Self, futures::io::Error> { - Ok(Default(WasmBindgen::new()?)) - } - - fn spawn(&self, future: impl futures::Future<Output = ()> + 'static) { - self.0.spawn(future); - } - - fn enter<R>(&self, f: impl FnOnce() -> R) -> R { - self.0.enter(f) - } - } -} +/// A default cross-platform executor. +/// +/// - On native platforms, it will use: +/// - `iced_futures::backend::native::tokio` when the `tokio` feature is enabled. +/// - `iced_futures::backend::native::async-std` when the `async-std` feature is +/// enabled. +/// - `iced_futures::backend::native::smol` when the `smol` feature is enabled. +/// - `iced_futures::backend::native::thread_pool` otherwise. +/// +/// - On Wasm, it will use `iced_futures::backend::wasm::wasm_bindgen`. +pub type Default = iced_futures::backend::default::Executor; diff --git a/src/sandbox.rs b/src/sandbox.rs index aabfb9c7..2306c650 100644 --- a/src/sandbox.rs +++ b/src/sandbox.rs @@ -156,7 +156,7 @@ impl<T> Application for T where T: Sandbox, { - type Executor = crate::runtime::executor::Null; + type Executor = iced_futures::backend::null::Executor; type Flags = (); type Message = T::Message; diff --git a/src/time.rs b/src/time.rs index 943aa42f..4f831171 100644 --- a/src/time.rs +++ b/src/time.rs @@ -1,12 +1,2 @@ //! Listen and react to time. -pub use crate::runtime::time::{Duration, Instant}; - -use crate::Subscription; - -/// Returns a [`Subscription`] that produces messages at a set interval. -/// -/// The first message is produced after a `duration`, and then continues to -/// produce more messages every `duration` after that. -pub fn every(duration: Duration) -> Subscription<Instant> { - iced_futures::time::every(duration) -} +pub use iced_futures::backend::default::time::*; |