diff options
author | 2020-02-06 03:56:21 +0100 | |
---|---|---|
committer | 2020-02-06 03:56:21 +0100 | |
commit | ad500441afc355f0b8ca2a463248d350d74f0f20 (patch) | |
tree | 66d58de7d3ab822db12118e22554ad883da3cc30 /src/executor.rs | |
parent | e8316b208705910958152b2ef6c4c5d7110b4e6c (diff) | |
download | iced-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.rs | 31 |
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); |