diff options
author | 2020-03-26 19:33:00 +0100 | |
---|---|---|
committer | 2020-03-26 19:33:00 +0100 | |
commit | 9ef1801ed647868b624f1e1999141e74a292b980 (patch) | |
tree | 7028f6e3c6f28c3d14392e5d1b3bb07586955c28 /futures/src/subscription.rs | |
parent | 643fa18cae19fa1418a23b652b6b4b8bf8ef79fc (diff) | |
parent | 338fff35ac821e6b03d68bd94418de500fb50f77 (diff) | |
download | iced-9ef1801ed647868b624f1e1999141e74a292b980.tar.gz iced-9ef1801ed647868b624f1e1999141e74a292b980.tar.bz2 iced-9ef1801ed647868b624f1e1999141e74a292b980.zip |
Merge pull request #234 from hecrj/improvement/subscription-send-requirement
Improve compatibility of `iced_futures`
Diffstat (limited to 'futures/src/subscription.rs')
-rw-r--r-- | futures/src/subscription.rs | 34 |
1 files changed, 15 insertions, 19 deletions
diff --git a/futures/src/subscription.rs b/futures/src/subscription.rs index 8eccb7be..ab333a20 100644 --- a/futures/src/subscription.rs +++ b/futures/src/subscription.rs @@ -3,7 +3,7 @@ mod tracker; pub use tracker::Tracker; -use futures::stream::BoxStream; +use crate::BoxStream; /// A request to listen to external events. /// @@ -168,8 +168,8 @@ pub trait Recipe<Hasher: std::hash::Hasher, Event> { /// [`Recipe`]: trait.Recipe.html fn stream( self: Box<Self>, - input: BoxStream<'static, Event>, - ) -> BoxStream<'static, Self::Output>; + input: BoxStream<Event>, + ) -> BoxStream<Self::Output>; } struct Map<Hasher, Event, A, B> { @@ -201,18 +201,16 @@ where self.recipe.hash(state); } - fn stream( - self: Box<Self>, - input: BoxStream<'static, E>, - ) -> futures::stream::BoxStream<'static, Self::Output> { + fn stream(self: Box<Self>, input: BoxStream<E>) -> BoxStream<Self::Output> { use futures::StreamExt; let mapper = self.mapper; - self.recipe - .stream(input) - .map(move |element| mapper(element)) - .boxed() + Box::pin( + self.recipe + .stream(input) + .map(move |element| mapper(element)), + ) } } @@ -243,17 +241,15 @@ where self.recipe.hash(state); } - fn stream( - self: Box<Self>, - input: BoxStream<'static, E>, - ) -> futures::stream::BoxStream<'static, Self::Output> { + fn stream(self: Box<Self>, input: BoxStream<E>) -> BoxStream<Self::Output> { use futures::StreamExt; let value = self.value; - self.recipe - .stream(input) - .map(move |element| (value.clone(), element)) - .boxed() + Box::pin( + self.recipe + .stream(input) + .map(move |element| (value.clone(), element)), + ) } } |