Rename operation::chain to then
... and make `focus_*` operations generic over the output type.
This commit is contained in:
parent
cfd2e7b116
commit
515772c9f8
2 changed files with 12 additions and 6 deletions
|
|
@ -295,7 +295,7 @@ where
|
||||||
|
|
||||||
/// Chains the output of an [`Operation`] with the provided function to
|
/// Chains the output of an [`Operation`] with the provided function to
|
||||||
/// build a new [`Operation`].
|
/// build a new [`Operation`].
|
||||||
pub fn chain<A, B, O>(
|
pub fn then<A, B, O>(
|
||||||
operation: impl Operation<A> + 'static,
|
operation: impl Operation<A> + 'static,
|
||||||
f: fn(A) -> O,
|
f: fn(A) -> O,
|
||||||
) -> impl Operation<B>
|
) -> impl Operation<B>
|
||||||
|
|
@ -361,7 +361,7 @@ where
|
||||||
Outcome::Chain(Box::new((self.next)(value)))
|
Outcome::Chain(Box::new((self.next)(value)))
|
||||||
}
|
}
|
||||||
Outcome::Chain(operation) => {
|
Outcome::Chain(operation) => {
|
||||||
Outcome::Chain(Box::new(chain(operation, self.next)))
|
Outcome::Chain(Box::new(then(operation, self.next)))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -94,7 +94,10 @@ pub fn count() -> impl Operation<Count> {
|
||||||
/// Produces an [`Operation`] that searches for the current focused widget, and
|
/// Produces an [`Operation`] that searches for the current focused widget, and
|
||||||
/// - if found, focuses the previous focusable widget.
|
/// - if found, focuses the previous focusable widget.
|
||||||
/// - if not found, focuses the last focusable widget.
|
/// - if not found, focuses the last focusable widget.
|
||||||
pub fn focus_previous() -> impl Operation {
|
pub fn focus_previous<T>() -> impl Operation<T>
|
||||||
|
where
|
||||||
|
T: Send + 'static,
|
||||||
|
{
|
||||||
struct FocusPrevious {
|
struct FocusPrevious {
|
||||||
count: Count,
|
count: Count,
|
||||||
current: usize,
|
current: usize,
|
||||||
|
|
@ -128,13 +131,16 @@ pub fn focus_previous() -> impl Operation {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
operation::chain(count(), |count| FocusPrevious { count, current: 0 })
|
operation::then(count(), |count| FocusPrevious { count, current: 0 })
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Produces an [`Operation`] that searches for the current focused widget, and
|
/// Produces an [`Operation`] that searches for the current focused widget, and
|
||||||
/// - if found, focuses the next focusable widget.
|
/// - if found, focuses the next focusable widget.
|
||||||
/// - if not found, focuses the first focusable widget.
|
/// - if not found, focuses the first focusable widget.
|
||||||
pub fn focus_next() -> impl Operation {
|
pub fn focus_next<T>() -> impl Operation<T>
|
||||||
|
where
|
||||||
|
T: Send + 'static,
|
||||||
|
{
|
||||||
struct FocusNext {
|
struct FocusNext {
|
||||||
count: Count,
|
count: Count,
|
||||||
current: usize,
|
current: usize,
|
||||||
|
|
@ -162,7 +168,7 @@ pub fn focus_next() -> impl Operation {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
operation::chain(count(), |count| FocusNext { count, current: 0 })
|
operation::then(count(), |count| FocusNext { count, current: 0 })
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Produces an [`Operation`] that searches for the current focused widget
|
/// Produces an [`Operation`] that searches for the current focused widget
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue