Operator Expressions
This section is a work-in-progress experiment about making the book executable.
Syntax
OperatorExpression:
| e=BorrowExpression =>
| e=DereferenceExpression =>
| e=ArithmeticOrLogicalExpression =>
| e=AssignmentExpression =>
| e=BorrowExpression =>
OperatorExpression::Borrow(e)| e=DereferenceExpression =>
OperatorExpression::Dereference(e)| e=ArithmeticOrLogicalExpression =>
e| e=AssignmentExpression =>
eBorrowExpression: & mutability=Mutability expression=Expression
=>
#[prec = `&`] =>
BorrowExpression { mutability, expression: Box::new(expression) }DereferenceExpression: * expression=Expression
=>
#[prec = `*`] =>
DereferenceExpression { expression: Box::new(expression) }
pub enum OperatorExpression {
Borrow(BorrowExpression),
Dereference(DereferenceExpression),
Add(Expression, Expression),
Assignment(Expression, Expression),
}
The & (shared borrow) and &mut (mutable borrow) operators are unary prefix operators.
[expr
pub struct BorrowExpression {
pub mutability: Mutability,
pub expression: Box<Expression>,
}
The * dereference operator is applied to a pointer and denotes the pointed-to location.
[expr
pub struct DereferenceExpression {
pub expression: Box<Expression>,
}