pub enum BooleanExpr<V>where
V: Clone,{
Show 23 variants
Const(bool),
Var(V),
Rand(FloatExpr<V>),
And(Vec<BooleanExpr<V>>),
Or(Vec<BooleanExpr<V>>),
Implies(Box<(BooleanExpr<V>, BooleanExpr<V>)>),
Not(Box<BooleanExpr<V>>),
NatEqual(NaturalExpr<V>, NaturalExpr<V>),
IntEqual(IntegerExpr<V>, IntegerExpr<V>),
FloatEqual(FloatExpr<V>, FloatExpr<V>),
NatGreater(NaturalExpr<V>, NaturalExpr<V>),
IntGreater(IntegerExpr<V>, IntegerExpr<V>),
FloatGreater(FloatExpr<V>, FloatExpr<V>),
NatGreaterEq(NaturalExpr<V>, NaturalExpr<V>),
IntGreaterEq(IntegerExpr<V>, IntegerExpr<V>),
FloatGreaterEq(FloatExpr<V>, FloatExpr<V>),
NatLess(NaturalExpr<V>, NaturalExpr<V>),
IntLess(IntegerExpr<V>, IntegerExpr<V>),
FloatLess(FloatExpr<V>, FloatExpr<V>),
NatLessEq(NaturalExpr<V>, NaturalExpr<V>),
IntLessEq(IntegerExpr<V>, IntegerExpr<V>),
FloatLessEq(FloatExpr<V>, FloatExpr<V>),
Ite(Box<(BooleanExpr<V>, BooleanExpr<V>, BooleanExpr<V>)>),
}Expand description
Boolean expressions.
Variants§
Const(bool)
A Boolean constant (true or false).
Var(V)
A Boolean variable.
Rand(FloatExpr<V>)
A Bernoulli distribution with the given probability.
And(Vec<BooleanExpr<V>>)
n-ary logical conjunction.
Or(Vec<BooleanExpr<V>>)
n-ary logical disjunction.
Implies(Box<(BooleanExpr<V>, BooleanExpr<V>)>)
Logical implication.
Not(Box<BooleanExpr<V>>)
Logical negation.
NatEqual(NaturalExpr<V>, NaturalExpr<V>)
Equality of Natural expressions.
IntEqual(IntegerExpr<V>, IntegerExpr<V>)
Equality of Integer expressions.
FloatEqual(FloatExpr<V>, FloatExpr<V>)
Equality of Float expressions.
NatGreater(NaturalExpr<V>, NaturalExpr<V>)
Inequality of Natural expressions: LHS greater than RHS.
IntGreater(IntegerExpr<V>, IntegerExpr<V>)
Inequality of Integer expressions: LHS greater than RHS.
FloatGreater(FloatExpr<V>, FloatExpr<V>)
Inequality of Float expressions: LHS greater than RHS.
NatGreaterEq(NaturalExpr<V>, NaturalExpr<V>)
Inequality of Natural expressions: LHS greater than, or equal to, RHS.
IntGreaterEq(IntegerExpr<V>, IntegerExpr<V>)
Inequality of Integer expressions: LHS greater than, or equal to, RHS.
FloatGreaterEq(FloatExpr<V>, FloatExpr<V>)
Inequality of Float expressions: LHS greater than, or equal to, RHS.
NatLess(NaturalExpr<V>, NaturalExpr<V>)
Inequality of Natural expressions: LHS less than RHS.
IntLess(IntegerExpr<V>, IntegerExpr<V>)
Inequality of Integer expressions: LHS less than RHS.
FloatLess(FloatExpr<V>, FloatExpr<V>)
Inequality of Float expressions: LHS less than RHS.
NatLessEq(NaturalExpr<V>, NaturalExpr<V>)
Inequality of Natural expressions: LHS less than, or equal to, RHS.
IntLessEq(IntegerExpr<V>, IntegerExpr<V>)
Inequality of Integer expressions: LHS less than, or equal to, RHS.
FloatLessEq(FloatExpr<V>, FloatExpr<V>)
Inequality of Float expressions: LHS less than, or equal to, RHS.
Ite(Box<(BooleanExpr<V>, BooleanExpr<V>, BooleanExpr<V>)>)
If-Then-Else construct, where If must be a boolean expression, Then and Else must have the same type, and this is also the type of the whole expression.
Implementations§
Source§impl<V> BooleanExpr<V>where
V: Clone,
impl<V> BooleanExpr<V>where
V: Clone,
Sourcepub fn is_constant(&self) -> bool
pub fn is_constant(&self) -> bool
Returns true if the expression is constant, i.e., it contains no variables, and false otherwise.
Sourcepub fn eval<R: Rng>(&self, vars: &dyn Fn(&V) -> Val, rng: &mut R) -> bool
pub fn eval<R: Rng>(&self, vars: &dyn Fn(&V) -> Val, rng: &mut R) -> bool
Returns the Boolean value computed from the expression, given the variable evaluation. It panics if the evaluation is not possible, including:
- If a variable is not included in the evaluation;
- If a variable included in the evaluation is not of Boolean type.
Trait Implementations§
Source§impl<V> BitAnd for BooleanExpr<V>where
V: Clone,
impl<V> BitAnd for BooleanExpr<V>where
V: Clone,
Source§impl<V> BitOr for BooleanExpr<V>where
V: Clone,
impl<V> BitOr for BooleanExpr<V>where
V: Clone,
Source§impl<V> Clone for BooleanExpr<V>
impl<V> Clone for BooleanExpr<V>
Source§fn clone(&self) -> BooleanExpr<V>
fn clone(&self) -> BooleanExpr<V>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<V> Debug for BooleanExpr<V>
impl<V> Debug for BooleanExpr<V>
Source§impl<V> Not for BooleanExpr<V>where
V: Clone,
impl<V> Not for BooleanExpr<V>where
V: Clone,
Auto Trait Implementations§
impl<V> Freeze for BooleanExpr<V>where
V: Freeze,
impl<V> RefUnwindSafe for BooleanExpr<V>where
V: RefUnwindSafe,
impl<V> Send for BooleanExpr<V>where
V: Send,
impl<V> Sync for BooleanExpr<V>where
V: Sync,
impl<V> Unpin for BooleanExpr<V>where
V: Unpin,
impl<V> UnsafeUnpin for BooleanExpr<V>where
V: UnsafeUnpin,
impl<V> UnwindSafe for BooleanExpr<V>where
V: UnwindSafe,
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more