Skip to content

Commit

Permalink
Merge pull request #595 from valbendan/master
Browse files Browse the repository at this point in the history
upgrade tokio to latest version(v0.3)
  • Loading branch information
hecrj authored Nov 25, 2020
2 parents 8f081ba + 782dd2f commit 87c9df2
Show file tree
Hide file tree
Showing 12 changed files with 72 additions and 13 deletions.
2 changes: 2 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ glow_default_system_font = ["iced_glow/default_system_font"]
debug = ["iced_winit/debug"]
# Enables `tokio` as the `executor::Default` on native platforms
tokio = ["iced_futures/tokio"]
# Enables old `tokio` (0.2) as the `executor::Default` on native platforms
tokio_old = ["iced_futures/tokio_old"]
# Enables `async-std` as the `executor::Default` on native platforms
async-std = ["iced_futures/async-std"]
# Enables advanced color conversion via `palette`
Expand Down
2 changes: 1 addition & 1 deletion examples/download_progress/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ edition = "2018"
publish = false

[dependencies]
iced = { path = "../..", features = ["tokio"] }
iced = { path = "../..", features = ["tokio_old"] }
iced_native = { path = "../../native" }
iced_futures = { path = "../../futures" }
reqwest = "0.10"
2 changes: 1 addition & 1 deletion examples/game_of_life/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@ publish = false

[dependencies]
iced = { path = "../..", features = ["canvas", "tokio", "debug"] }
tokio = { version = "0.2", features = ["blocking"] }
tokio = { version = "0.3", features = ["sync"] }
itertools = "0.9"
rustc-hash = "1.1"
2 changes: 1 addition & 1 deletion examples/pokedex/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ edition = "2018"
publish = false

[dependencies]
iced = { path = "../..", features = ["image", "debug", "tokio"] }
iced = { path = "../..", features = ["image", "debug", "tokio_old"] }
serde_json = "1.0"

[dependencies.serde]
Expand Down
8 changes: 7 additions & 1 deletion futures/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,17 @@ log = "0.4"
[dependencies.futures]
version = "0.3"

[target.'cfg(not(target_arch = "wasm32"))'.dependencies.tokio]
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.tokio_old]
package = "tokio"
version = "0.2"
optional = true
features = ["rt-core", "rt-threaded", "time", "stream"]

[target.'cfg(not(target_arch = "wasm32"))'.dependencies.tokio]
version = "0.3"
optional = true
features = ["rt-multi-thread", "time", "stream"]

[target.'cfg(not(target_arch = "wasm32"))'.dependencies.async-std]
version = "1.0"
optional = true
Expand Down
6 changes: 6 additions & 0 deletions futures/src/executor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ mod thread_pool;
#[cfg(all(not(target_arch = "wasm32"), feature = "tokio"))]
mod tokio;

#[cfg(all(not(target_arch = "wasm32"), feature = "tokio_old"))]
mod tokio_old;

#[cfg(all(not(target_arch = "wasm32"), feature = "async-std"))]
mod async_std;

Expand All @@ -21,6 +24,9 @@ pub use thread_pool::ThreadPool;
#[cfg(all(not(target_arch = "wasm32"), feature = "tokio"))]
pub use self::tokio::Tokio;

#[cfg(all(not(target_arch = "wasm32"), feature = "tokio_old"))]
pub use self::tokio_old::TokioOld;

#[cfg(all(not(target_arch = "wasm32"), feature = "async-std"))]
pub use self::async_std::AsyncStd;

Expand Down
3 changes: 2 additions & 1 deletion futures/src/executor/tokio.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ impl Executor for Tokio {
}

fn enter<R>(&self, f: impl FnOnce() -> R) -> R {
tokio::runtime::Runtime::enter(self, f)
let _guard = tokio::runtime::Runtime::enter(self);
f()
}
}
21 changes: 21 additions & 0 deletions futures/src/executor/tokio_old.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
use crate::Executor;

use futures::Future;

/// An old `tokio` runtime.
#[cfg_attr(docsrs, doc(cfg(feature = "tokio_old")))]
pub type TokioOld = tokio_old::runtime::Runtime;

impl Executor for TokioOld {
fn new() -> Result<Self, futures::io::Error> {
tokio_old::runtime::Runtime::new()
}

fn spawn(&self, future: impl Future<Output = ()> + Send + 'static) {
let _ = tokio_old::runtime::Runtime::spawn(self, future);
}

fn enter<R>(&self, f: impl FnOnce() -> R) -> R {
tokio_old::runtime::Runtime::enter(self, f)
}
}
2 changes: 1 addition & 1 deletion futures/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ pub mod executor;
pub mod subscription;

#[cfg(all(
any(feature = "tokio", feature = "async-std"),
any(feature = "tokio", feature = "tokio_old", feature = "async-std"),
not(target_arch = "wasm32")
))]
#[cfg_attr(docsrs, doc(cfg(any(feature = "tokio", feature = "async-std"))))]
Expand Down
8 changes: 7 additions & 1 deletion futures/src/time.rs
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,10 @@ where
}
}

#[cfg(all(feature = "tokio", not(feature = "async-std")))]
#[cfg(all(
any(feature = "tokio", feature = "tokio_old"),
not(feature = "async-std")
))]
impl<H, E> subscription::Recipe<H, E> for Every
where
H: std::hash::Hasher,
Expand All @@ -61,6 +64,9 @@ where
) -> futures::stream::BoxStream<'static, Self::Output> {
use futures::stream::StreamExt;

#[cfg(feature = "tokio_old")]
use tokio_old as tokio;

let start = tokio::time::Instant::now() + self.0;

tokio::time::interval_at(start, self.0)
Expand Down
18 changes: 14 additions & 4 deletions src/executor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,23 @@ pub use platform::Default;
mod platform {
use iced_futures::{executor, futures};

#[cfg(feature = "tokio")]
#[cfg(feature = "tokio_old")]
type Executor = executor::TokioOld;

#[cfg(all(not(feature = "tokio_old"), feature = "tokio"))]
type Executor = executor::Tokio;

#[cfg(all(not(feature = "tokio"), feature = "async-std"))]
#[cfg(all(
not(any(feature = "tokio_old", feature = "tokio")),
feature = "async-std"
))]
type Executor = executor::AsyncStd;

#[cfg(not(any(feature = "tokio", feature = "async-std")))]
#[cfg(not(any(
feature = "tokio_old",
feature = "tokio",
feature = "async-std"
)))]
type Executor = executor::ThreadPool;

/// A default cross-platform executor.
Expand All @@ -40,7 +50,7 @@ mod platform {
}

fn enter<R>(&self, f: impl FnOnce() -> R) -> R {
self.0.enter(f)
super::Executor::enter(&self.0, f)
}
}
}
Expand Down
11 changes: 9 additions & 2 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -193,10 +193,17 @@ pub mod widget;
pub mod window;

#[cfg(all(
any(feature = "tokio", feature = "async-std"),
any(feature = "tokio", feature = "tokio_old", feature = "async-std"),
not(target_arch = "wasm32")
))]
#[cfg_attr(docsrs, doc(cfg(any(feature = "tokio", feature = "async-std"))))]
#[cfg_attr(
docsrs,
doc(cfg(any(
feature = "tokio",
feature = "tokio_old",
feature = "async-std"
)))
)]
pub mod time;

#[cfg(all(
Expand Down

0 comments on commit 87c9df2

Please sign in to comment.