diff options
Diffstat (limited to 'futures/src/subscription')
| -rw-r--r-- | futures/src/subscription/tracker.rs | 18 | 
1 files changed, 8 insertions, 10 deletions
| diff --git a/futures/src/subscription/tracker.rs b/futures/src/subscription/tracker.rs index cfa36170..43222b5b 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. @@ -26,8 +26,6 @@ where      Event: 'static + Send + Clone,  {      /// Creates a new empty [`Tracker`]. -    /// -    /// [`Tracker`]: struct.Tracker.html      pub fn new() -> Self {          Self {              subscriptions: HashMap::new(), @@ -52,14 +50,12 @@ where      /// It returns a list of futures that need to be spawned to materialize      /// the [`Tracker`] changes.      /// -    /// [`Tracker`]: struct.Tracker.html -    /// [`Subscription`]: struct.Subscription.html -    /// [`Recipe`]: trait.Recipe.html +    /// [`Recipe`]: crate::subscription::Recipe      pub fn update<Message, Receiver>(          &mut self,          subscription: Subscription<Hasher, Event, Message>,          receiver: Receiver, -    ) -> Vec<BoxFuture<'static, ()>> +    ) -> Vec<BoxFuture<()>>      where          Message: 'static + Send,          Receiver: 'static @@ -70,7 +66,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 +111,7 @@ where                  },              ); -            futures.push(future.boxed()); +            futures.push(Box::pin(future));          }          self.subscriptions.retain(|id, _| alive.contains(&id)); @@ -131,6 +127,8 @@ where      ///      /// This method publishes the given event to all the subscription streams      /// currently open. +    /// +    /// [`Recipe::stream`]: crate::subscription::Recipe::stream      pub fn broadcast(&mut self, event: Event) {          self.subscriptions              .values_mut() | 
