diff options
| author | 2021-11-14 11:03:15 -0500 | |
|---|---|---|
| committer | 2021-11-14 11:03:15 -0500 | |
| commit | 55eaeceec8520e008260c8b5630b53d6d5ecdfb6 (patch) | |
| tree | 6d9e39cef74d0d536ce4d282bebefd9f09b11d2c /futures | |
| parent | 4cb3820a4eba06210ca694262b8a220a38f47395 (diff) | |
| download | iced-55eaeceec8520e008260c8b5630b53d6d5ecdfb6.tar.gz iced-55eaeceec8520e008260c8b5630b53d6d5ecdfb6.tar.bz2 iced-55eaeceec8520e008260c8b5630b53d6d5ecdfb6.zip | |
Collect the platform-specific concrete future implementations into mods.
Diffstat (limited to '')
| -rw-r--r-- | futures/src/lib.rs | 69 | 
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) +    } +} | 
