summaryrefslogtreecommitdiffstats
path: root/futures/src/executor
diff options
context:
space:
mode:
authorLibravatar Jayce Fayne <jayce.fayne@mailbox.org>2021-01-13 01:48:35 +0100
committerLibravatar Jayce Fayne <jayce.fayne@mailbox.org>2021-01-14 12:28:02 +0100
commitb2415eee61063d5c2b220d7b7a513d1952ce2be1 (patch)
tree2a0429981aa745132cb103d9d9bb75972e0c27b6 /futures/src/executor
parent92d647d1a6145e19ef9f540e02faef6a892f51fa (diff)
downloadiced-b2415eee61063d5c2b220d7b7a513d1952ce2be1.tar.gz
iced-b2415eee61063d5c2b220d7b7a513d1952ce2be1.tar.bz2
iced-b2415eee61063d5c2b220d7b7a513d1952ce2be1.zip
Add `smol` async runtime
Diffstat (limited to '')
-rw-r--r--futures/src/executor.rs6
-rw-r--r--futures/src/executor/smol.rs18
2 files changed, 24 insertions, 0 deletions
diff --git a/futures/src/executor.rs b/futures/src/executor.rs
index fa87216a..b35b5bc1 100644
--- a/futures/src/executor.rs
+++ b/futures/src/executor.rs
@@ -13,6 +13,9 @@ mod tokio_old;
#[cfg(all(not(target_arch = "wasm32"), feature = "async-std"))]
mod async_std;
+#[cfg(all(not(target_arch = "wasm32"), feature = "smol"))]
+mod smol;
+
#[cfg(target_arch = "wasm32")]
mod wasm_bindgen;
@@ -30,6 +33,9 @@ pub use self::tokio_old::TokioOld;
#[cfg(all(not(target_arch = "wasm32"), feature = "async-std"))]
pub use self::async_std::AsyncStd;
+#[cfg(all(not(target_arch = "wasm32"), feature = "smol"))]
+pub use self::smol::Smol;
+
#[cfg(target_arch = "wasm32")]
pub use wasm_bindgen::WasmBindgen;
diff --git a/futures/src/executor/smol.rs b/futures/src/executor/smol.rs
new file mode 100644
index 00000000..deafd43a
--- /dev/null
+++ b/futures/src/executor/smol.rs
@@ -0,0 +1,18 @@
+use crate::Executor;
+
+use futures::Future;
+
+/// A `smol` runtime.
+#[cfg_attr(docsrs, doc(cfg(feature = "smol")))]
+#[derive(Debug)]
+pub struct Smol;
+
+impl Executor for Smol {
+ fn new() -> Result<Self, futures::io::Error> {
+ Ok(Self)
+ }
+
+ fn spawn(&self, future: impl Future<Output = ()> + Send + 'static) {
+ smol::spawn(future).detach();
+ }
+}