Rust 是强类型语言,但具有自动判断变量类型的能力
声明变量:let a = 123;
在这句声明语句之后,以下三行代码都是被禁止的:
a = "abc";
a = 4.56;
a = 456;
Rust 语言为了高并发安全而做的设计:在语言层面尽量少的让变量的值可以改变。
所以 a 的值不可变。
但这不意味着 a 不是"变量"(英文中的 variable),官方文档称 a 这种变量为"不可变变量"。
如果我们编写的程序的一部分在假设值永远不会改变的情况下运行,而我们代码的另一部分在改变该值,那么代码的第一部分可能就不会按照设计的意图去运转。
由于这种原因造成的错误很难在事后找到。这是 Rust 语言设计这种机制的原因。
使变量变得"可变"(mutable)只需一个 mut 关键字。
let mut a = 123;
a = 456;
既然不可变变量是不可变的,那不就是常量吗?为什么叫变量?
变量和常量还是有区别的。在 Rust 中,以下程序是合法的:
let a = 123;
let a = 456;
但是如果 a 是常量就不合法:
const a: i32 = 123;
let a = 456;
变量的值可以"重新绑定",但在"重新绑定"以前不能私自被改变,这样可以确保在每一次"绑定"之后的区域里编译器可以充分的推理程序逻辑。