pub enum Expression {
Boolean(bool),
Var(String),
LayerVar {
layer: String,
var: String,
},
PhaseQualifiedVar {
phase: String,
layer: String,
var: String,
},
PhaseConstraint {
phase: String,
constraint: Box<Expression>,
},
CrossPhaseRelation {
phase1: String,
expr1: Box<Expression>,
phase2: String,
expr2: Box<Expression>,
op: BinaryOp,
},
Int(i128),
BinaryOp {
left: Box<Expression>,
op: BinaryOp,
right: Box<Expression>,
},
Logical {
left: Box<Expression>,
op: LogicalOp,
right: Box<Expression>,
},
Not(Box<Expression>),
FunctionCall {
name: String,
args: Vec<Expression>,
},
Tuple(Vec<Expression>),
}Expand description
An expression tree representing invariant conditions.
Variants§
Boolean(bool)
Boolean literal.
Var(String)
Variable reference.
LayerVar
Layer-qualified variable reference (e.g., bundler::nonce).
Fields
PhaseQualifiedVar
Phase-qualified variable reference (e.g., validation::account::balance). Checks state at a specific execution phase (validation, execution, settlement).
Fields
PhaseConstraint
Phase constraint: ensures a condition holds during a specific phase.
Example: ensure account::balance >= min_required during validation phase.
Fields
constraint: Box<Expression>The constraint expression to hold in this phase.
CrossPhaseRelation
Cross-phase relation: relates variable values across two phases.
Example: validation::account::balance >= execution::account::balance
used to track state changes across phases.
Fields
expr1: Box<Expression>First phase expression.
expr2: Box<Expression>Second phase expression.
Int(i128)
Integer constant.
BinaryOp
Comparison: left op right.
Logical
Logical operation: &&, ||.
Not(Box<Expression>)
Logical negation.
FunctionCall
Function call.
Tuple(Vec<Expression>)
Tuple of expressions.
Trait Implementations§
Source§impl Clone for Expression
impl Clone for Expression
Source§fn clone(&self) -> Expression
fn clone(&self) -> Expression
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for Expression
impl Debug for Expression
Source§impl<'de> Deserialize<'de> for Expression
impl<'de> Deserialize<'de> for Expression
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<Expression, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<Expression, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl Display for Expression
impl Display for Expression
Source§impl PartialEq for Expression
impl PartialEq for Expression
Source§impl Serialize for Expression
impl Serialize for Expression
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl Eq for Expression
impl StructuralPartialEq for Expression
Auto Trait Implementations§
impl Freeze for Expression
impl RefUnwindSafe for Expression
impl Send for Expression
impl Sync for Expression
impl Unpin for Expression
impl UnsafeUnpin for Expression
impl UnwindSafe for Expression
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<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.