diff options
author | 2023-02-22 21:23:04 +0100 | |
---|---|---|
committer | 2023-02-22 21:23:04 +0100 | |
commit | 4f41927155e7d4bc38497b0e298a0b23ccea6ca1 (patch) | |
tree | 70b7dbc1afdc62dfeaf42f0c62e8f4c01e407729 /native/src/subscription.rs | |
parent | a35d6d2e4d59f71309f31c87ea5150959d639185 (diff) | |
parent | 666f3cd143047e49a010f0c97eabc7136f92aa35 (diff) | |
download | iced-4f41927155e7d4bc38497b0e298a0b23ccea6ca1.tar.gz iced-4f41927155e7d4bc38497b0e298a0b23ccea6ca1.tar.bz2 iced-4f41927155e7d4bc38497b0e298a0b23ccea6ca1.zip |
Merge branch 'iced-rs:master' into master
Diffstat (limited to 'native/src/subscription.rs')
-rw-r--r-- | native/src/subscription.rs | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/native/src/subscription.rs b/native/src/subscription.rs index 8c92efad..16e78e82 100644 --- a/native/src/subscription.rs +++ b/native/src/subscription.rs @@ -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, @@ -184,7 +197,7 @@ where /// Check out the [`websocket`] example, which showcases this pattern to maintain a WebSocket /// connection open. /// -/// [`websocket`]: https://github.com/iced-rs/iced/tree/0.7/examples/websocket +/// [`websocket`]: https://github.com/iced-rs/iced/tree/0.8/examples/websocket pub fn unfold<I, T, Fut, Message>( id: I, initial: T, @@ -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), |