diff options
| author | 2020-02-06 03:56:21 +0100 | |
|---|---|---|
| committer | 2020-02-06 03:56:21 +0100 | |
| commit | ad500441afc355f0b8ca2a463248d350d74f0f20 (patch) | |
| tree | 66d58de7d3ab822db12118e22554ad883da3cc30 /src | |
| parent | e8316b208705910958152b2ef6c4c5d7110b4e6c (diff) | |
| download | iced-ad500441afc355f0b8ca2a463248d350d74f0f20.tar.gz iced-ad500441afc355f0b8ca2a463248d350d74f0f20.tar.bz2 iced-ad500441afc355f0b8ca2a463248d350d74f0f20.zip  | |
Allow switching `executor::Default` with features
Diffstat (limited to '')
| -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);  | 
