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;

变量的值可以"重新绑定",但在"重新绑定"以前不能私自被改变,这样可以确保在每一次"绑定"之后的区域里编译器可以充分的推理程序逻辑。