pub struct FirstMatch<T: ?Sized, Decision> { /* private fields */ }Expand description
Ordered, typed decisions selected by the first matching specification.
Rules are evaluated in insertion order. The first satisfied rule wins and later rules are not evaluated.
Implementations§
Source§impl<T: ?Sized, Decision> FirstMatch<T, Decision>
impl<T: ?Sized, Decision> FirstMatch<T, Decision>
Sourcepub fn push<Concrete>(&mut self, specification: Concrete, decision: Decision)where
Concrete: Specification<T> + 'static,
pub fn push<Concrete>(&mut self, specification: Concrete, decision: Decision)where
Concrete: Specification<T> + 'static,
Appends a rule and its decision, preserving evaluation order.
Sourcepub fn decide_or<'decision>(
&'decision self,
candidate: &T,
fallback: &'decision Decision,
) -> &'decision Decision
pub fn decide_or<'decision>( &'decision self, candidate: &T, fallback: &'decision Decision, ) -> &'decision Decision
Returns the first matching decision or fallback when no rule matches.
Trait Implementations§
Source§impl<T: ?Sized, Decision> DecisionSpecification<T> for FirstMatch<T, Decision>
impl<T: ?Sized, Decision> DecisionSpecification<T> for FirstMatch<T, Decision>
Auto Trait Implementations§
impl<T, Decision> !RefUnwindSafe for FirstMatch<T, Decision>
impl<T, Decision> !Send for FirstMatch<T, Decision>
impl<T, Decision> !Sync for FirstMatch<T, Decision>
impl<T, Decision> !UnwindSafe for FirstMatch<T, Decision>
impl<T, Decision> Freeze for FirstMatch<T, Decision>where
T: ?Sized,
impl<T, Decision> Unpin for FirstMatch<T, Decision>
impl<T, Decision> UnsafeUnpin for FirstMatch<T, Decision>where
T: ?Sized,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more