pub enum Expr {
Show 15 variants
Int(i64, Span),
Float(f64, Span),
Str(String, Span),
Bool(bool, Span),
Ident(String, Span),
Array(Vec<Expr>, Span),
Unary {
op: UnOp,
rhs: Box<Expr>,
span: Span,
},
Binary {
op: BinOp,
lhs: Box<Expr>,
rhs: Box<Expr>,
span: Span,
},
Index {
base: Box<Expr>,
index: Box<Expr>,
span: Span,
},
Range {
start: Box<Expr>,
end: Box<Expr>,
span: Span,
},
Call {
name: String,
args: Vec<Expr>,
span: Span,
},
StructLit {
name: String,
fields: Vec<(String, Expr)>,
span: Span,
},
EnumLit {
enum_name: String,
variant: String,
fields: Vec<(String, Expr)>,
span: Span,
},
Field {
base: Box<Expr>,
field: String,
span: Span,
},
Match {
scrutinee: Box<Expr>,
arms: Vec<MatchArm>,
span: Span,
},
}Variants§
Int(i64, Span)
Float(f64, Span)
Str(String, Span)
Bool(bool, Span)
Ident(String, Span)
Array(Vec<Expr>, Span)
An array literal: [2, 3, 5].
Unary
Binary
Index
Reading an element by position: xs[0].
Range
A half-open range: 0..5 means 0, 1, 2, 3, 4.
Call
A function call. Built-ins (print, string, int, float, length) and user-defined functions share this node.
StructLit
Building a struct by naming its fields: Point(x: 0, y: 0).
EnumLit
Building an enum case: Shape.circle(radius: 2.0). A payload-less case
like Shape.dot parses as a Field and is resolved at run time.
Field
Reading a struct field with a dot: origin.x.
Match
match scrutinee { pattern => expr ... }. An expression: it evaluates to
the body of the one arm that matches.
Implementations§
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Expr
impl RefUnwindSafe for Expr
impl Send for Expr
impl Sync for Expr
impl Unpin for Expr
impl UnsafeUnpin for Expr
impl UnwindSafe for Expr
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