message: Collect the platform-specific concrete future implementations into mods.
diff: @@ -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;
  +#[cfg(not(target_arch = "wasm32"))]
  +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.
  -#[cfg(not(target_arch = "wasm32"))]
  pub type BoxFuture<T> = futures::future::BoxFuture<'static, T>;
  -/// A boxed static future.
  + /// 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>;
  +
  + /// 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)
  + }
  +}
  +
  #[cfg(target_arch = "wasm32")]
  +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.
  -#[cfg(not(target_arch = "wasm32"))]
  -pub type BoxStream<T> = futures::stream::BoxStream<'static, T>;
  + pub type BoxStream<T> = futures::stream::LocalBoxStream<'static, T>;
  -/// A boxed static stream.
  + /// Boxes a 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>;
  + pub fn boxed_stream<T, S>(stream: S) -> BoxStream<T>
  + where
  + S: futures::Stream<Item = T> + 'static,
  + {
  + futures::stream::StreamExt::boxed_local(stream)
  + }
  +}
  