pub enum ConditionExpr {
Ref(u32),
And(Vec<ConditionExpr>),
Or(Vec<ConditionExpr>),
Xor(Box<ConditionExpr>, Box<ConditionExpr>),
Not(Box<ConditionExpr>),
Package {
id: u32,
min: u32,
max: u32,
},
}Expand description
A parsed AHB condition expression tree.
Represents boolean combinations of condition references like [1] ∧ [2] or
([3] ∨ [4]) ⊻ [5].
§Examples
A single condition reference:
use automapper_validation::expr::ConditionExpr;
let expr = ConditionExpr::Ref(931);
assert_eq!(expr.condition_ids(), [931].into());Variants§
Ref(u32)
A leaf reference to a single condition by number, e.g., [931].
And(Vec<ConditionExpr>)
Boolean AND of one or more expressions. All must be true.
Invariant: exprs.len() >= 2.
Or(Vec<ConditionExpr>)
Boolean OR of one or more expressions. At least one must be true.
Invariant: exprs.len() >= 2.
Xor(Box<ConditionExpr>, Box<ConditionExpr>)
Boolean XOR of exactly two expressions. Exactly one must be true.
Not(Box<ConditionExpr>)
Boolean NOT of an expression.
Package
Package cardinality constraint: [NP_min..max]
Implementations§
Source§impl ConditionExpr
impl ConditionExpr
Sourcepub fn condition_ids(&self) -> BTreeSet<u32>
pub fn condition_ids(&self) -> BTreeSet<u32>
Extracts all condition IDs referenced in this expression tree.
Trait Implementations§
Source§impl Clone for ConditionExpr
impl Clone for ConditionExpr
Source§fn clone(&self) -> ConditionExpr
fn clone(&self) -> ConditionExpr
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for ConditionExpr
impl Debug for ConditionExpr
Source§impl Display for ConditionExpr
impl Display for ConditionExpr
Source§impl PartialEq for ConditionExpr
impl PartialEq for ConditionExpr
impl Eq for ConditionExpr
impl StructuralPartialEq for ConditionExpr
Auto Trait Implementations§
impl Freeze for ConditionExpr
impl RefUnwindSafe for ConditionExpr
impl Send for ConditionExpr
impl Sync for ConditionExpr
impl Unpin for ConditionExpr
impl UnsafeUnpin for ConditionExpr
impl UnwindSafe for ConditionExpr
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