summaryrefslogtreecommitdiffstats
path: root/futures/src/executor
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2020-01-20 04:47:36 +0100
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2020-01-20 04:47:36 +0100
commit90690702e1e4abab804ec91e8ff4183824bec436 (patch)
treed3f989047f4ac5166bc5baed9febcc10af2d63a6 /futures/src/executor
parent35760ac68f06e783e64e9048aff0fff6df1c09cf (diff)
downloadiced-90690702e1e4abab804ec91e8ff4183824bec436.tar.gz
iced-90690702e1e4abab804ec91e8ff4183824bec436.tar.bz2
iced-90690702e1e4abab804ec91e8ff4183824bec436.zip
Add `Application::Executor` associated type
Diffstat (limited to 'futures/src/executor')
-rw-r--r--futures/src/executor/async_std.rs15
-rw-r--r--futures/src/executor/null.rs13
-rw-r--r--futures/src/executor/thread_pool.rs15
-rw-r--r--futures/src/executor/tokio.rs19
4 files changed, 62 insertions, 0 deletions
diff --git a/futures/src/executor/async_std.rs b/futures/src/executor/async_std.rs
new file mode 100644
index 00000000..b056b23d
--- /dev/null
+++ b/futures/src/executor/async_std.rs
@@ -0,0 +1,15 @@
+use crate::Executor;
+
+use futures::Future;
+
+pub struct AsyncStd;
+
+impl Executor for AsyncStd {
+ fn new() -> Result<Self, futures::io::Error> {
+ Ok(Self)
+ }
+
+ fn spawn(&self, future: impl Future<Output = ()> + Send + 'static) {
+ let _ = async_std::task::spawn(future);
+ }
+}
diff --git a/futures/src/executor/null.rs b/futures/src/executor/null.rs
new file mode 100644
index 00000000..722073bb
--- /dev/null
+++ b/futures/src/executor/null.rs
@@ -0,0 +1,13 @@
+use crate::Executor;
+
+use futures::Future;
+
+pub struct Null;
+
+impl Executor for Null {
+ fn new() -> Result<Self, futures::io::Error> {
+ Ok(Self)
+ }
+
+ fn spawn(&self, _future: impl Future<Output = ()> + Send + 'static) {}
+}
diff --git a/futures/src/executor/thread_pool.rs b/futures/src/executor/thread_pool.rs
new file mode 100644
index 00000000..6393d0d5
--- /dev/null
+++ b/futures/src/executor/thread_pool.rs
@@ -0,0 +1,15 @@
+use crate::Executor;
+
+use futures::Future;
+
+pub type ThreadPool = futures::executor::ThreadPool;
+
+impl Executor for futures::executor::ThreadPool {
+ fn new() -> Result<Self, futures::io::Error> {
+ futures::executor::ThreadPool::new()
+ }
+
+ fn spawn(&self, future: impl Future<Output = ()> + Send + 'static) {
+ self.spawn_ok(future);
+ }
+}
diff --git a/futures/src/executor/tokio.rs b/futures/src/executor/tokio.rs
new file mode 100644
index 00000000..aafa7e7b
--- /dev/null
+++ b/futures/src/executor/tokio.rs
@@ -0,0 +1,19 @@
+use crate::Executor;
+
+use futures::Future;
+
+pub type Tokio = tokio::runtime::Runtime;
+
+impl Executor for Tokio {
+ fn new() -> Result<Self, futures::io::Error> {
+ tokio::runtime::Runtime::new()
+ }
+
+ fn spawn(&self, future: impl Future<Output = ()> + Send + 'static) {
+ let _ = tokio::runtime::Runtime::spawn(self, future);
+ }
+
+ fn enter<R>(&self, f: impl FnOnce() -> R) -> R {
+ tokio::runtime::Runtime::enter(self, f)
+ }
+}