Rust的表达式

Rust的表达式

表达式主要用于计算求值。

Rust 编译器在解析代码时:

  • 如果遇到分号,就会继续往后面执行
  • 如果遇到语句,就会执行语句
  • 如果遇到表达式,就会对表达式求值
  • 如果分号后面什么都没有,就会补上单元值()
  • 当遇到函数时,就会将函数体的花括号识别为块表达式。

块表达式

块表达式是由一对花括号和一系列表达式组成的,它总是返回块中最后一个表达式的值。

位置表达式

位置表达式(Place Expression)一般叫做左值,是表示内存位置的表达式,有以下几类:

  • 本地变量
  • 静态变量
  • 解引用 (* express)
  • 数组索引 (expr[expr])
  • 字段引用 (expr.field)
  • 位置表达式组合

通过位置表达式可以对某个数据单元的内存进行读写。位置表达式可以用于赋值。

值表达式

值表达式(Value Expression)一般叫做右值,值表达式引用了某个存储单元地址中的数据。它相当于数据,只能进行读操作。

从语义角度来说,位置表达式代表了持久性数据,值表达式代表了临时数据。位置表达式一般有持久的状态,值表达式要不是字面量,要不就是表达式求值过程中创建的临时值。