diff options
Diffstat (limited to '')
| -rw-r--r-- | native/src/subscription.rs | 42 | 
1 files changed, 40 insertions, 2 deletions
| diff --git a/native/src/subscription.rs b/native/src/subscription.rs index 63834654..4fb7e760 100644 --- a/native/src/subscription.rs +++ b/native/src/subscription.rs @@ -7,6 +7,37 @@ use iced_futures::BoxStream;  use std::hash::Hash; +#[cfg(not(target_arch = "wasm32"))] +mod trait_aliases { +    use super::*; + +    /// Wrapper type +    pub trait RunnerStream<Message>: +        Stream<Item = Message> + Send + 'static +    { +    } + +    impl<T, Message> RunnerStream<Message> for T where +        T: Stream<Item = Message> + Send + 'static +    { +    } +} + +#[cfg(target_arch = "wasm32")] +mod trait_aliases { +    use super::*; + +    /// Wrapper type +    pub trait RunnerStream<Message>: Stream<Item = Message> + 'static {} + +    impl<T, Message> RunnerStream<Message> for T where +        T: Stream<Item = Message> + 'static +    { +    } +} + +pub use trait_aliases::RunnerStream; +  /// A request to listen to external events.  ///  /// Besides performing async actions on demand with [`Command`], most @@ -191,7 +222,7 @@ impl<I, S, F, Message> Recipe<Hasher, (Event, event::Status)>  where      I: Hash + 'static,      F: FnOnce(EventStream) -> S, -    S: Stream<Item = Message> + Send + 'static, +    S: RunnerStream<Message>,  {      type Output = Message; @@ -203,6 +234,13 @@ where      fn stream(self: Box<Self>, input: EventStream) -> BoxStream<Self::Output> {          use futures::stream::StreamExt; -        (self.spawn)(input).boxed() +        #[cfg(target_arch = "wasm32")] +        { +            (self.spawn)(input).boxed_local() +        } +        #[cfg(not(target_arch = "wasm32"))] +        { +            (self.spawn)(input).boxed() +        }      }  } | 
