From 0c528be2ea74f9aae1d4ac80b282ba9c16674649 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Tue, 11 Feb 2025 03:39:42 +0100 Subject: Introduce `with` helper and use `sipper` in `gallery` example --- runtime/src/task.rs | 46 +--------------------------------------------- 1 file changed, 1 insertion(+), 45 deletions(-) (limited to 'runtime/src/task.rs') diff --git a/runtime/src/task.rs b/runtime/src/task.rs index 1a1ef699..022483f7 100644 --- a/runtime/src/task.rs +++ b/runtime/src/task.rs @@ -63,7 +63,7 @@ impl Task { /// progress with the first closure and the output with the second one. pub fn sip( sipper: S, - on_progress: impl Fn(S::Progress) -> T + MaybeSend + 'static, + on_progress: impl FnMut(S::Progress) -> T + MaybeSend + 'static, on_output: impl FnOnce(::Output) -> T + MaybeSend + 'static, ) -> Self where @@ -98,50 +98,6 @@ impl Task { self.then(move |output| Task::done(f(output))) } - /// Combines a prefix value with the result of the [`Task`] using - /// the provided closure. - /// - /// Sometimes you will want to identify the source or target - /// of some [`Task`] in your UI. This can be achieved through - /// normal means by using [`map`]: - /// - /// ```rust - /// # use iced_runtime::Task; - /// # let task = Task::none(); - /// # enum Message { TaskCompleted(u32, ()) } - /// let id = 123; - /// - /// # let _ = { - /// task.map(move |result| Message::TaskCompleted(id, result)) - /// # }; - /// ``` - /// - /// Quite a mouthful. [`map_with`] lets you write: - /// - /// ```rust - /// # use iced_runtime::Task; - /// # let task = Task::none(); - /// # enum Message { TaskCompleted(u32, ()) } - /// # let id = 123; - /// # let _ = { - /// task.map_with(id, Message::TaskCompleted) - /// # }; - /// ``` - /// - /// Much nicer! - pub fn map_with( - self, - prefix: P, - mut f: impl FnMut(P, T) -> O + MaybeSend + 'static, - ) -> Task - where - T: MaybeSend + 'static, - P: MaybeSend + Clone + 'static, - O: MaybeSend + 'static, - { - self.map(move |result| f(prefix.clone(), result)) - } - /// Performs a new [`Task`] for every output of the current [`Task`] using the /// given closure. /// -- cgit