Add Predicate
trait to allow combination + fallbacks
#1228
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Converts predicates from a
Fn(&K -> Option<u64>)
to a traitPredicate
that is implemented by fns of the same signature.In controller-runtime terminology; this allows us to "or" predicates through
Predicate::fallback
, and allows us to "and" predicates throughPredicate::combine
.Have decided to go for
Fallback
/Combine
rather thanOr
/And
because it feels confusing to useor
on a fn returningOption
(and i don't think it's the logical relation maps to the fallback/combination sufficiently well as touched on in #1225).Usage with controllers:
This is a minor change to an unstable feature. The signature of predicates is preserved, but the stream interface now takes an
impl Predicate
rather than a function of typeFn(&K -> Option<u64>)
- but these functions get a blanket impl of Predicate so this should not be noticeable for users.