pub struct RuleMatcher<'a, T: Matchable> {
pub mode: ConditionMode,
pub conditions: Vec<Condition<'a, T>>,
}Expand description
A rule-based matcher built from programmatic conditions.
Use MatcherBuilder for a fluent construction API.
§Example
use condition_matcher::{RuleMatcher, MatcherMode, Condition, ConditionSelector, ConditionOperator, Matcher};
let mut matcher: RuleMatcher<i32> = RuleMatcher::new(MatcherMode::AND);
matcher.add_condition(Condition {
selector: ConditionSelector::Value(42),
operator: ConditionOperator::Equals,
});
assert!(matcher.matches(&42));Fields§
§mode: ConditionModeThe logical combination mode (AND, OR, XOR).
conditions: Vec<Condition<'a, T>>The conditions to evaluate.
Implementations§
Source§impl<'a, T: Matchable + 'static> RuleMatcher<'a, T>
impl<'a, T: Matchable + 'static> RuleMatcher<'a, T>
Sourcepub fn new(mode: ConditionMode) -> Self
pub fn new(mode: ConditionMode) -> Self
Create a new matcher with the specified mode.
Sourcepub fn add_condition(&mut self, condition: Condition<'a, T>) -> &mut Self
pub fn add_condition(&mut self, condition: Condition<'a, T>) -> &mut Self
Add a condition to this matcher.
Sourcepub fn add_conditions(
&mut self,
conditions: impl IntoIterator<Item = Condition<'a, T>>,
) -> &mut Self
pub fn add_conditions( &mut self, conditions: impl IntoIterator<Item = Condition<'a, T>>, ) -> &mut Self
Add multiple conditions at once.
Trait Implementations§
Source§impl<'a, T: Matchable + 'static> Evaluate<T> for RuleMatcher<'a, T>
impl<'a, T: Matchable + 'static> Evaluate<T> for RuleMatcher<'a, T>
Source§type Output = MatchResult
type Output = MatchResult
The result type for detailed evaluation.
Source§fn evaluate(&self, value: &T) -> MatchResult
fn evaluate(&self, value: &T) -> MatchResult
Evaluate with full details (field values, errors, descriptions).
Auto Trait Implementations§
impl<'a, T> Freeze for RuleMatcher<'a, T>
impl<'a, T> !RefUnwindSafe for RuleMatcher<'a, T>
impl<'a, T> !Send for RuleMatcher<'a, T>
impl<'a, T> !Sync for RuleMatcher<'a, T>
impl<'a, T> Unpin for RuleMatcher<'a, T>where
T: Unpin,
impl<'a, T> !UnwindSafe for RuleMatcher<'a, T>
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