summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2022-01-28 18:24:07 +0700
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2022-01-28 21:37:17 +0700
commit167be45a7db7c1f60a79116766bdf38300429c6a (patch)
tree5af48807c8d90a73775fef68a51ae549880aa388 /src
parent5dab5a327ef643ee38ac3e42ab35212fff445631 (diff)
downloadiced-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.rs94
-rw-r--r--src/sandbox.rs2
-rw-r--r--src/time.rs12
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::*;