1. 常量
声明常量使用的关键字是 const
。
- 在声明常量时,必须注明值的类型。
- 常量可以在任何作用域中声明,包括全局作用域。常量在它的作用域中,整个程序生命周期中都有效。
- 常量只能被设置为常量表达式,而不能是函数调用的结果,或其他任何只能在运行时计算出的值。
- 将遍布于应用程序中的硬编码值声明为常量,能帮助后来的代码维护人员了解值的意图。如果将来需要修改硬编码值,也只需修改汇聚于一处的硬编码值。
const MAX_POINTS: u32 = 100_000;
2. 变量
Rust 中的变量是默认不可变的(immutable),这是推动我们充分利用 Rust 提供的安全性和简单并发性来编写代码的众多方式之一。不过我们仍然可以使用可变变量。声明变量使用的关键字是 let
。
2.1 不变变量
当变量不可变时,一旦值被绑定一个名称上,就不能改变这个值。定义变量的基本语法如下:
代码语言:javascript复制let var = <value>;
这种方式定义的变量默认是不可变的。
2.2 可变变量
定义的变量只是默认不可变,我们可以在变量名加上 mut
来使其可变:
let mut var = <value>;
这种方式定义的变量就是可变的。
2.3 隐藏变量
Rust 中可以重复定义相同的变量名,这样新变量会隐藏之前的变量。举例如下:
代码语言:javascript复制let var = <value>;
let var = var 1;
let var = var * 2;
如果第二、三行前不加 let
,编译是会报错的,因为第一行定义的 var
变量是不可变的。而加上 let
表示隐藏了前面定义的 var
变量。
【注】隐藏和可变是有区别的:
- 隐藏定义的变量仍然是不可变的,可变变量始终的可变的。
- 隐藏定义变量实际是创建了一个新变量,因此可以改变值的类型,只是复用同一个变量名;而可变变量的类型是不可改变的。