Introduce with helper and use sipper in gallery example
This commit is contained in:
parent
9f21eae152
commit
0c528be2ea
8 changed files with 143 additions and 105 deletions
|
|
@ -63,7 +63,7 @@ impl<T> Task<T> {
|
|||
/// progress with the first closure and the output with the second one.
|
||||
pub fn sip<S>(
|
||||
sipper: S,
|
||||
on_progress: impl Fn(S::Progress) -> T + MaybeSend + 'static,
|
||||
on_progress: impl FnMut(S::Progress) -> T + MaybeSend + 'static,
|
||||
on_output: impl FnOnce(<S as Future>::Output) -> T + MaybeSend + 'static,
|
||||
) -> Self
|
||||
where
|
||||
|
|
@ -98,50 +98,6 @@ impl<T> Task<T> {
|
|||
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<P, O>(
|
||||
self,
|
||||
prefix: P,
|
||||
mut f: impl FnMut(P, T) -> O + MaybeSend + 'static,
|
||||
) -> Task<O>
|
||||
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.
|
||||
///
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue