pub enum EvalOp<'arena> {
Show 13 variants
Eval {
expr: &'arena AstExpr<'arena>,
ctx_id: usize,
},
ApplyUnary {
op: UnaryOp,
},
CompleteBinary {
op: BinaryOp,
},
ShortCircuitAnd {
right_expr: &'arena AstExpr<'arena>,
ctx_id: usize,
},
ShortCircuitOr {
right_expr: &'arena AstExpr<'arena>,
ctx_id: usize,
},
CompleteAnd,
CompleteOr,
ApplyFunction {
name: FunctionName,
arg_count: usize,
ctx_id: usize,
},
TernaryCondition {
true_branch: &'arena AstExpr<'arena>,
false_branch: &'arena AstExpr<'arena>,
ctx_id: usize,
},
LookupVariable {
name: HString,
ctx_id: usize,
},
AccessArray {
array_name: HString,
ctx_id: usize,
},
AccessAttribute {
object_name: HString,
attr_name: HString,
ctx_id: usize,
},
RestoreFunctionParams {
params: Option<&'arena [(HString, Real)]>,
},
}Expand description
Operations that can be pushed onto the evaluation stack
Variants§
Eval
Push an expression to evaluate
ApplyUnary
Apply a unary operation
CompleteBinary
Apply a binary operation after both operands are evaluated
ShortCircuitAnd
Short-circuit AND operation
ShortCircuitOr
Short-circuit OR operation
CompleteAnd
Complete AND operation (when not short-circuited)
CompleteOr
Complete OR operation (when not short-circuited)
ApplyFunction
Apply a function with N arguments from the value stack
TernaryCondition
Handle ternary operator - condition already evaluated
LookupVariable
Variable lookup
AccessArray
Array access - index already evaluated
AccessAttribute
Attribute access
RestoreFunctionParams
Restore after expression function completes
Trait Implementations§
Auto Trait Implementations§
impl<'arena> Freeze for EvalOp<'arena>
impl<'arena> RefUnwindSafe for EvalOp<'arena>
impl<'arena> Send for EvalOp<'arena>
impl<'arena> Sync for EvalOp<'arena>
impl<'arena> Unpin for EvalOp<'arena>
impl<'arena> UnwindSafe for EvalOp<'arena>
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§unsafe fn clone_to_uninit(&self, dest: *mut u8)
unsafe fn clone_to_uninit(&self, dest: *mut u8)
🔬This is a nightly-only experimental API. (
clone_to_uninit)