summaryrefslogtreecommitdiffstats
path: root/src/executor.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2020-02-06 03:56:21 +0100
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2020-02-06 03:56:21 +0100
commitad500441afc355f0b8ca2a463248d350d74f0f20 (patch)
tree66d58de7d3ab822db12118e22554ad883da3cc30 /src/executor.rs
parente8316b208705910958152b2ef6c4c5d7110b4e6c (diff)
downloadiced-ad500441afc355f0b8ca2a463248d350d74f0f20.tar.gz
iced-ad500441afc355f0b8ca2a463248d350d74f0f20.tar.bz2
iced-ad500441afc355f0b8ca2a463248d350d74f0f20.zip
Allow switching `executor::Default` with features
Diffstat (limited to 'src/executor.rs')
-rw-r--r--src/executor.rs31
1 files changed, 21 insertions, 10 deletions
diff --git a/src/executor.rs b/src/executor.rs
index 539bfd5d..e31bd93d 100644
--- a/src/executor.rs
+++ b/src/executor.rs
@@ -5,38 +5,49 @@ pub use platform::Default;
#[cfg(not(target_arch = "wasm32"))]
mod platform {
- use iced_winit::{executor::ThreadPool, futures, Executor};
+ use iced_futures::{executor, futures};
+
+ #[cfg(feature = "tokio")]
+ type Executor = executor::Tokio;
+
+ #[cfg(all(not(feature = "tokio"), feature = "async-std"))]
+ type Executor = executor::AsyncStd;
+
+ #[cfg(not(any(feature = "tokio", feature = "async-std")))]
+ type Executor = executor::ThreadPool;
/// A default cross-platform executor.
///
- /// - On native platforms, it will use a
- /// `iced_futures::executor::ThreadPool`.
+ /// - 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(ThreadPool);
+ pub struct Default(Executor);
- impl Executor for Default {
+ impl super::Executor for Default {
fn new() -> Result<Self, futures::io::Error> {
- Ok(Default(ThreadPool::new()?))
+ Ok(Default(Executor::new()?))
}
fn spawn(
&self,
future: impl futures::Future<Output = ()> + Send + 'static,
) {
- self.0.spawn(future);
+ let _ = self.0.spawn(future);
}
}
}
#[cfg(target_arch = "wasm32")]
mod platform {
- use iced_web::{executor::WasmBindgen, futures, Executor};
+ use iced_futures::{executor::WasmBindgen, futures, Executor};
/// A default cross-platform executor.
///
- /// - On native platforms, it will use a
- /// `iced_futures::executor::ThreadPool`.
+ /// - On native platforms, it will use `iced_futures::executor::ThreadPool`.
/// - On the Web, it will use `iced_futures::executor::WasmBindgen`.
#[derive(Debug)]
pub struct Default(WasmBindgen);