Skip to content

Commit

Permalink
Merge pull request #1723 from iced-rs/subscription-run
Browse files Browse the repository at this point in the history
Change `subscription::run` to take a function pointer
  • Loading branch information
hecrj authored Feb 21, 2023
2 parents 8c83d40 + 1fb413f commit 666f3cd
Showing 1 changed file with 15 additions and 2 deletions.
17 changes: 15 additions & 2 deletions native/src/subscription.rs
Original file line number Diff line number Diff line change
Expand Up @@ -100,11 +100,24 @@ where
})
}

/// Returns a [`Subscription`] that will call the given function to create and
/// asynchronously run the given [`Stream`].
pub fn run<S, Message>(builder: fn() -> S) -> Subscription<Message>
where
S: Stream<Item = Message> + MaybeSend + 'static,
Message: 'static,
{
Subscription::from_recipe(Runner {
id: builder,
spawn: move |_| builder(),
})
}

/// Returns a [`Subscription`] that will create and asynchronously run the
/// given [`Stream`].
///
/// The `id` will be used to uniquely identify the [`Subscription`].
pub fn run<I, S, Message>(id: I, stream: S) -> Subscription<Message>
pub fn run_with_id<I, S, Message>(id: I, stream: S) -> Subscription<Message>
where
I: Hash + 'static,
S: Stream<Item = Message> + MaybeSend + 'static,
Expand Down Expand Up @@ -199,7 +212,7 @@ where
use futures::future::{self, FutureExt};
use futures::stream::StreamExt;

run(
run_with_id(
id,
futures::stream::unfold(initial, move |state| f(state).map(Some))
.filter_map(future::ready),
Expand Down

0 comments on commit 666f3cd

Please sign in to comment.