summaryrefslogtreecommitdiffstats
path: root/futures/src/runtime.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2021-09-01 19:21:49 +0700
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2021-09-02 13:29:34 +0700
commit76698ff2b5753e637b14533650c0d28e681be3c5 (patch)
tree6b3376df6ac84598b03f2885598b7908e993fe4a /futures/src/runtime.rs
parentb7b7741578257bbf6a8b873c360182e2c9b920ab (diff)
downloadiced-76698ff2b5753e637b14533650c0d28e681be3c5.tar.gz
iced-76698ff2b5753e637b14533650c0d28e681be3c5.tar.bz2
iced-76698ff2b5753e637b14533650c0d28e681be3c5.zip
Make `Command` implementations platform-specific
This allows us to introduce a platform-specific `Action` to both `iced_native` and `iced_web` and remove the `Clipboard` from `Application::update` to maintain purity. Additionally, this should let us implement further actions to let users query and modify the shell environment (e.g. window, clipboard, and more!)
Diffstat (limited to '')
-rw-r--r--futures/src/runtime.rs21
1 files changed, 9 insertions, 12 deletions
diff --git a/futures/src/runtime.rs b/futures/src/runtime.rs
index e56a4eb0..7779e235 100644
--- a/futures/src/runtime.rs
+++ b/futures/src/runtime.rs
@@ -1,5 +1,6 @@
//! Run commands and keep track of subscriptions.
-use crate::{subscription, Command, Executor, Subscription};
+use crate::BoxFuture;
+use crate::{subscription, Executor, Subscription};
use futures::{channel::mpsc, Sink};
use std::marker::PhantomData;
@@ -51,22 +52,18 @@ where
///
/// The resulting `Message` will be forwarded to the `Sender` of the
/// [`Runtime`].
- pub fn spawn(&mut self, command: Command<Message>) {
+ pub fn spawn(&mut self, future: BoxFuture<Message>) {
use futures::{FutureExt, SinkExt};
- let futures = command.futures();
+ let mut sender = self.sender.clone();
- for future in futures {
- let mut sender = self.sender.clone();
-
- let future = future.then(|message| async move {
- let _ = sender.send(message).await;
+ let future = future.then(|message| async move {
+ let _ = sender.send(message).await;
- ()
- });
+ ()
+ });
- self.executor.spawn(future);
- }
+ self.executor.spawn(future);
}
/// Tracks a [`Subscription`] in the [`Runtime`].