pub enum Expression {
Show 23 variants
IntLiteral {
value: i64,
},
BoolLiteral {
value: bool,
},
Null,
Param {
index: u32,
},
FieldAccess {
object: Box<Expression>,
class_name: String,
field_name: String,
},
Eq {
left: Box<Expression>,
right: Box<Expression>,
},
Ne {
left: Box<Expression>,
right: Box<Expression>,
},
Lt {
left: Box<Expression>,
right: Box<Expression>,
},
Le {
left: Box<Expression>,
right: Box<Expression>,
},
Gt {
left: Box<Expression>,
right: Box<Expression>,
},
Ge {
left: Box<Expression>,
right: Box<Expression>,
},
And {
left: Box<Expression>,
right: Box<Expression>,
},
Or {
left: Box<Expression>,
right: Box<Expression>,
},
Not {
operand: Box<Expression>,
},
IsNull {
operand: Box<Expression>,
},
IsNotNull {
operand: Box<Expression>,
},
Add {
left: Box<Expression>,
right: Box<Expression>,
},
Sub {
left: Box<Expression>,
right: Box<Expression>,
},
Mul {
left: Box<Expression>,
right: Box<Expression>,
},
Div {
left: Box<Expression>,
right: Box<Expression>,
},
ListContains {
list: Box<Expression>,
element: Box<Expression>,
},
HostCall {
function_name: String,
args: Vec<Expression>,
},
IfThenElse {
condition: Box<Expression>,
then_branch: Box<Expression>,
else_branch: Box<Expression>,
},
}Expand description
Rich expression tree for constraint predicates
This enum represents a complete expression language for building constraint predicates. Expressions are serializable (via serde) for use across FFI boundaries.
§Example
// Build expression: param(0).employee != null
let expr = Expression::IsNotNull {
operand: Box::new(Expression::FieldAccess {
object: Box::new(Expression::Param { index: 0 }),
class_name: "Shift".into(),
field_name: "employee".into(),
})
};Variants§
IntLiteral
Integer literal (i64)
BoolLiteral
Boolean literal
Null
Null value
Param
Access a function parameter by index Example: param(0) refers to the first parameter
FieldAccess
Access a field on an object Example: param(0).get(“Employee”, “name”)
Eq
Equal comparison (==)
Ne
Not equal comparison (!=)
Lt
Less than comparison (<)
Le
Less than or equal comparison (<=)
Gt
Greater than comparison (>)
Ge
Greater than or equal comparison (>=)
And
Logical AND (&&)
Or
Logical OR (||)
Not
Logical NOT (!)
Fields
operand: Box<Expression>IsNull
Null check (is null)
Fields
operand: Box<Expression>IsNotNull
Not-null check (is not null)
Fields
operand: Box<Expression>Add
Addition (+)
Sub
Subtraction (-)
Mul
Multiplication (*)
Div
Division (/)
ListContains
Check if a list contains an element Example: list.contains(element)
HostCall
Call a host-provided function Example: hstringEquals(left, right)
IfThenElse
If-then-else conditional expression Example: if condition { then_branch } else { else_branch }
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 more