pub enum LeafOp<'a> {
FieldAccess {
object: &'a Expr,
field_name: &'a str,
},
MapGet {
map: &'a Expr,
key: &'a Expr,
},
MapSet {
map: &'a Expr,
key: &'a Expr,
value: &'a Expr,
},
VectorNew {
size: &'a Expr,
fill: &'a Expr,
},
VectorSetOrDefaultSameVector {
vector: &'a Expr,
index: &'a Expr,
value: &'a Expr,
},
VectorGetOrDefaultLiteral {
vector: &'a Expr,
index: &'a Expr,
default_literal: &'a Literal,
},
IntModOrDefaultLiteral {
a: &'a Expr,
b: &'a Expr,
default_literal: &'a Literal,
},
ListIndexGet {
list: &'a Expr,
index: &'a Expr,
},
}Expand description
Small expression-shaped leaf operations shared across backends.
These are still semantic plans, not backend instructions: they recognize common Aver expression shapes whose meaning is clearer than the raw AST.
Variants§
FieldAccess
MapGet
MapSet
VectorNew
VectorSetOrDefaultSameVector
VectorGetOrDefaultLiteral
IntModOrDefaultLiteral
Fused Result.withDefault(Int.mod(a, b), literal) → skip Result allocation.
ListIndexGet
Fused Vector.get(Vector.fromList(list), index) → skip AverVector allocation.
Trait Implementations§
impl<'a> Copy for LeafOp<'a>
impl<'a> StructuralPartialEq for LeafOp<'a>
Auto Trait Implementations§
impl<'a> Freeze for LeafOp<'a>
impl<'a> RefUnwindSafe for LeafOp<'a>
impl<'a> Send for LeafOp<'a>
impl<'a> Sync for LeafOp<'a>
impl<'a> Unpin for LeafOp<'a>
impl<'a> UnsafeUnpin for LeafOp<'a>
impl<'a> UnwindSafe for LeafOp<'a>
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