由 Steve Klabnik 和 Carol Nichols,以及来自 Rust 社区贡献者撰写
中文版: https://rustwiki.org/zh-CN/book/
通用编程概念
变量和可变性
默认情况下变量是不可变的(_immutable_)。这是 Rust 众多精妙之处的其中一个,这些特性让你充分利用 Rust 提供的安全性和简单并发性的方式来编写代码。当变量不可变时,这意味着一旦一个值绑定到一个变量名后,就不能更改该值了。
我们可以通过在变量名前加上 mut
使得它们可变。增加 mut
的操作还向以后的读代码的人传达了代码的其他部分将会改变这个变量值。
除了预防 bug 外,还有很多权衡要取舍。例如,在使用大型数据结构的情形下,在同一位置更改实例可能比复制并返回新分配的实例要更快。使用较小的数据结构时,通常创建新的实例并以更具函数式编程的风格来编写程序,可能会更容易理解,所以值得以较低的性能开销来确保代码清晰。
常量
常量(constant)是绑定到一个常量名且不允许更改的值,但是常量和变量之间存在一些差异。
- 首先,常量不允许使用 mut。常量不仅仅默认不可变,而且自始至终不可变。常量使用 const 关键字而不是 let 关键字来声明,并且值的类型必须注明。
- 常量可以在任意作用域内声明,包括全局作用域,这对于代码中很多部分都需要知道一个值的情况特别有用。
- 最后一个不同点是常量只能设置为常量表达式,而不能是函数调用的结果或是只能在运行时计算得到的值。
- Rust 常量的命名约定是全部字母都使用大写,并使用下划线分隔单词。编译器能够在编译时计算一些有限的操作,这让我们可以选择以更容易理解和验证的方式写出这个值,而不是将此常量设置为值 10,800。
const THREE_HOURS_IN_SECONDS: u32 = 60 * 60 * 3;
变量遮蔽
可以声明和前面变量具有相同名称的新变量。Rustacean 说这个是第一个变量被第二个变量遮蔽(_shadow_),这意味着当我们使用变量时我们看到的会是第二个变量的值。我们可以通过使用相同的变量名并重复使用 let
关键字来遮蔽变量。
===> next: 变量和可变性 – Rust 程序设计语言 中文版