1. 常量

声明常量使用的关键字是 const

  • 在声明常量时,必须注明值的类型。
  • 常量可以在任何作用域中声明,包括全局作用域。常量在它的作用域中,整个程序生命周期中都有效。
  • 常量只能被设置为常量表达式,而不能是函数调用的结果,或其他任何只能在运行时计算出的值。
  • 将遍布于应用程序中的硬编码值声明为常量,能帮助后来的代码维护人员了解值的意图。如果将来需要修改硬编码值,也只需修改汇聚于一处的硬编码值。
1
const MAX_POINTS: u32 = 100_000;

2. 变量

Rust 中的变量是默认不可变的(immutable),这是推动我们充分利用 Rust 提供的安全性和简单并发性来编写代码的众多方式之一。不过我们仍然可以使用可变变量。声明变量使用的关键字是 let

2.1 不变变量

当变量不可变时,一旦值被绑定一个名称上,就不能改变这个值。定义变量的基本语法如下:

1
let var = <value>;

这种方式定义的变量默认是不可变的。

2.2 可变变量

定义的变量只是默认不可变,我们可以在变量名加上 mut 来使其可变:

1
let mut var = <value>;

这种方式定义的变量就是可变的。

2.3 隐藏变量

Rust 中可以重复定义相同的变量名,这样新变量会隐藏之前的变量。举例如下:

1
2
3
let var = <value>;
let var = var + 1;
let var = var * 2;

如果第二、三行前不加 let,编译是会报错的,因为第一行定义的 var 变量是不可变的。而加上 let 表示隐藏了前面定义的 var 变量。

【注】隐藏和可变是有区别的:

  • 隐藏定义的变量仍然是不可变的,可变变量始终的可变的。
  • 隐藏定义变量实际是创建了一个新变量,因此可以改变值的类型,只是复用同一个变量名;而可变变量的类型是不可改变的。