summaryrefslogtreecommitdiffstats
path: root/futures
diff options
context:
space:
mode:
Diffstat (limited to 'futures')
-rw-r--r--futures/src/event.rs2
-rw-r--r--futures/src/executor.rs3
-rw-r--r--futures/src/keyboard.rs2
-rw-r--r--futures/src/lib.rs2
-rw-r--r--futures/src/maybe.rs35
-rw-r--r--futures/src/runtime.rs3
-rw-r--r--futures/src/subscription.rs3
-rw-r--r--futures/src/subscription/tracker.rs3
8 files changed, 44 insertions, 9 deletions
diff --git a/futures/src/event.rs b/futures/src/event.rs
index ab895fcd..72ea78ad 100644
--- a/futures/src/event.rs
+++ b/futures/src/event.rs
@@ -1,8 +1,8 @@
//! Listen to runtime events.
use crate::core::event::{self, Event};
use crate::core::window;
-use crate::core::MaybeSend;
use crate::subscription::{self, Subscription};
+use crate::MaybeSend;
/// Returns a [`Subscription`] to all the ignored runtime events.
///
diff --git a/futures/src/executor.rs b/futures/src/executor.rs
index a9dde465..3b0d4af1 100644
--- a/futures/src/executor.rs
+++ b/futures/src/executor.rs
@@ -1,5 +1,6 @@
//! Choose your preferred executor to power a runtime.
-use crate::core::MaybeSend;
+use crate::MaybeSend;
+
use futures::Future;
/// A type that can run futures.
diff --git a/futures/src/keyboard.rs b/futures/src/keyboard.rs
index c86e2169..f0d7d757 100644
--- a/futures/src/keyboard.rs
+++ b/futures/src/keyboard.rs
@@ -2,8 +2,8 @@
use crate::core;
use crate::core::event;
use crate::core::keyboard::{Event, Key, Modifiers};
-use crate::core::MaybeSend;
use crate::subscription::{self, Subscription};
+use crate::MaybeSend;
/// Listens to keyboard key presses and calls the given function
/// map them into actual messages.
diff --git a/futures/src/lib.rs b/futures/src/lib.rs
index 01b56306..a874a618 100644
--- a/futures/src/lib.rs
+++ b/futures/src/lib.rs
@@ -8,6 +8,7 @@
pub use futures;
pub use iced_core as core;
+mod maybe;
mod runtime;
pub mod backend;
@@ -17,6 +18,7 @@ pub mod keyboard;
pub mod subscription;
pub use executor::Executor;
+pub use maybe::{MaybeSend, MaybeSync};
pub use platform::*;
pub use runtime::Runtime;
pub use subscription::Subscription;
diff --git a/futures/src/maybe.rs b/futures/src/maybe.rs
new file mode 100644
index 00000000..c6a507c1
--- /dev/null
+++ b/futures/src/maybe.rs
@@ -0,0 +1,35 @@
+#[cfg(not(target_arch = "wasm32"))]
+mod platform {
+ /// An extension trait that enforces `Send` only on native platforms.
+ ///
+ /// Useful for writing cross-platform async code!
+ pub trait MaybeSend: Send {}
+
+ impl<T> MaybeSend for T where T: Send {}
+
+ /// An extension trait that enforces `Sync` only on native platforms.
+ ///
+ /// Useful for writing cross-platform async code!
+ pub trait MaybeSync: Sync {}
+
+ impl<T> MaybeSync for T where T: Sync {}
+}
+
+#[cfg(target_arch = "wasm32")]
+mod platform {
+ /// An extension trait that enforces `Send` only on native platforms.
+ ///
+ /// Useful for writing cross-platform async code!
+ pub trait MaybeSend {}
+
+ impl<T> MaybeSend for T {}
+
+ /// An extension trait that enforces `Sync` only on native platforms.
+ ///
+ /// Useful for writing cross-platform async code!
+ pub trait MaybeSync {}
+
+ impl<T> MaybeSync for T {}
+}
+
+pub use platform::{MaybeSend, MaybeSync};
diff --git a/futures/src/runtime.rs b/futures/src/runtime.rs
index 045fde6c..157e2c67 100644
--- a/futures/src/runtime.rs
+++ b/futures/src/runtime.rs
@@ -1,7 +1,6 @@
//! Run commands and keep track of subscriptions.
-use crate::core::MaybeSend;
use crate::subscription;
-use crate::{BoxFuture, BoxStream, Executor};
+use crate::{BoxFuture, BoxStream, Executor, MaybeSend};
use futures::{channel::mpsc, Sink};
use std::marker::PhantomData;
diff --git a/futures/src/subscription.rs b/futures/src/subscription.rs
index 85a8a787..316fc44d 100644
--- a/futures/src/subscription.rs
+++ b/futures/src/subscription.rs
@@ -5,9 +5,8 @@ pub use tracker::Tracker;
use crate::core::event;
use crate::core::window;
-use crate::core::MaybeSend;
use crate::futures::{Future, Stream};
-use crate::BoxStream;
+use crate::{BoxStream, MaybeSend};
use futures::channel::mpsc;
use futures::never::Never;
diff --git a/futures/src/subscription/tracker.rs b/futures/src/subscription/tracker.rs
index c5a7bb99..f17e3ea3 100644
--- a/futures/src/subscription/tracker.rs
+++ b/futures/src/subscription/tracker.rs
@@ -1,6 +1,5 @@
-use crate::core::MaybeSend;
use crate::subscription::{Event, Hasher, Recipe};
-use crate::BoxFuture;
+use crate::{BoxFuture, MaybeSend};
use futures::channel::mpsc;
use futures::sink::{Sink, SinkExt};