summaryrefslogtreecommitdiffstats
path: root/futures/src/subscription
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón <hector0193@gmail.com>2020-03-26 19:33:00 +0100
committerLibravatar GitHub <noreply@github.com>2020-03-26 19:33:00 +0100
commit9ef1801ed647868b624f1e1999141e74a292b980 (patch)
tree7028f6e3c6f28c3d14392e5d1b3bb07586955c28 /futures/src/subscription
parent643fa18cae19fa1418a23b652b6b4b8bf8ef79fc (diff)
parent338fff35ac821e6b03d68bd94418de500fb50f77 (diff)
downloadiced-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 '')
-rw-r--r--futures/src/subscription.rs34
-rw-r--r--futures/src/subscription/tracker.rs10
2 files changed, 20 insertions, 24 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)),
+ )
}
}
diff --git a/futures/src/subscription/tracker.rs b/futures/src/subscription/tracker.rs
index cfa36170..efb464b5 100644
--- a/futures/src/subscription/tracker.rs
+++ b/futures/src/subscription/tracker.rs
@@ -1,6 +1,6 @@
-use crate::Subscription;
+use crate::{BoxFuture, Subscription};
-use futures::{channel::mpsc, future::BoxFuture, sink::Sink};
+use futures::{channel::mpsc, sink::Sink};
use std::{collections::HashMap, marker::PhantomData};
/// A registry of subscription streams.
@@ -59,7 +59,7 @@ where
&mut self,
subscription: Subscription<Hasher, Event, Message>,
receiver: Receiver,
- ) -> Vec<BoxFuture<'static, ()>>
+ ) -> Vec<BoxFuture<()>>
where
Message: 'static + Send,
Receiver: 'static
@@ -70,7 +70,7 @@ where
{
use futures::{future::FutureExt, stream::StreamExt};
- let mut futures = Vec::new();
+ let mut futures: Vec<BoxFuture<()>> = Vec::new();
let recipes = subscription.recipes();
let mut alive = std::collections::HashSet::new();
@@ -115,7 +115,7 @@ where
},
);
- futures.push(future.boxed());
+ futures.push(Box::pin(future));
}
self.subscriptions.retain(|id, _| alive.contains(&id));