summaryrefslogtreecommitdiffstats
path: root/futures
diff options
context:
space:
mode:
authorLibravatar Tanner Rogalsky <tanner@tannerrogalsky.com>2021-11-14 11:03:15 -0500
committerLibravatar Tanner Rogalsky <tanner@tannerrogalsky.com>2021-11-14 11:03:15 -0500
commit55eaeceec8520e008260c8b5630b53d6d5ecdfb6 (patch)
tree6d9e39cef74d0d536ce4d282bebefd9f09b11d2c /futures
parent4cb3820a4eba06210ca694262b8a220a38f47395 (diff)
downloadiced-55eaeceec8520e008260c8b5630b53d6d5ecdfb6.tar.gz
iced-55eaeceec8520e008260c8b5630b53d6d5ecdfb6.tar.bz2
iced-55eaeceec8520e008260c8b5630b53d6d5ecdfb6.zip
Collect the platform-specific concrete future implementations into mods.
Diffstat (limited to 'futures')
-rw-r--r--futures/src/lib.rs69
1 files changed, 47 insertions, 22 deletions
diff --git a/futures/src/lib.rs b/futures/src/lib.rs
index 01cf5c89..ba7c558b 100644
--- a/futures/src/lib.rs
+++ b/futures/src/lib.rs
@@ -37,33 +37,58 @@ pub mod time;
pub use command::Command;
pub use executor::Executor;
+pub use platform::*;
pub use runtime::Runtime;
pub use subscription::Subscription;
-/// A boxed static future.
-///
-/// - On native platforms, it needs a `Send` requirement.
-/// - On the Web platform, it does not need a `Send` requirement.
#[cfg(not(target_arch = "wasm32"))]
-pub type BoxFuture<T> = futures::future::BoxFuture<'static, T>;
+mod platform {
+ /// A boxed static future.
+ ///
+ /// - On native platforms, it needs a `Send` requirement.
+ /// - On the Web platform, it does not need a `Send` requirement.
+ pub type BoxFuture<T> = futures::future::BoxFuture<'static, T>;
-/// A boxed static future.
-///
-/// - On native platforms, it needs a `Send` requirement.
-/// - On the Web platform, it does not need a `Send` requirement.
-#[cfg(target_arch = "wasm32")]
-pub type BoxFuture<T> = futures::future::LocalBoxFuture<'static, T>;
+ /// A boxed static stream.
+ ///
+ /// - On native platforms, it needs a `Send` requirement.
+ /// - On the Web platform, it does not need a `Send` requirement.
+ pub type BoxStream<T> = futures::stream::BoxStream<'static, T>;
-/// A boxed static stream.
-///
-/// - On native platforms, it needs a `Send` requirement.
-/// - On the Web platform, it does not need a `Send` requirement.
-#[cfg(not(target_arch = "wasm32"))]
-pub type BoxStream<T> = futures::stream::BoxStream<'static, T>;
+ /// Boxes a stream.
+ ///
+ /// - On native platforms, it needs a `Send` requirement.
+ /// - On the Web platform, it does not need a `Send` requirement.
+ pub fn boxed_stream<T, S>(stream: S) -> BoxStream<T>
+ where
+ S: futures::Stream<Item = T> + Send + 'static,
+ {
+ futures::stream::StreamExt::boxed(stream)
+ }
+}
-/// A boxed static stream.
-///
-/// - On native platforms, it needs a `Send` requirement.
-/// - On the Web platform, it does not need a `Send` requirement.
#[cfg(target_arch = "wasm32")]
-pub type BoxStream<T> = futures::stream::LocalBoxStream<'static, T>;
+mod platform {
+ /// A boxed static future.
+ ///
+ /// - On native platforms, it needs a `Send` requirement.
+ /// - On the Web platform, it does not need a `Send` requirement.
+ pub type BoxFuture<T> = futures::future::LocalBoxFuture<'static, T>;
+
+ /// A boxed static stream.
+ ///
+ /// - On native platforms, it needs a `Send` requirement.
+ /// - On the Web platform, it does not need a `Send` requirement.
+ pub type BoxStream<T> = futures::stream::LocalBoxStream<'static, T>;
+
+ /// Boxes a stream.
+ ///
+ /// - On native platforms, it needs a `Send` requirement.
+ /// - On the Web platform, it does not need a `Send` requirement.
+ pub fn boxed_stream<T, S>(stream: S) -> BoxStream<T>
+ where
+ S: futures::Stream<Item = T> + 'static,
+ {
+ futures::stream::StreamExt::boxed_local(stream)
+ }
+}