第一章(上):变量--默认的“偏执”

Unknown Author 独酌
2025-11-16 Rust, Book

作为前端开发者,我们习惯了这样的思维模式:

  • const声明不会被重新赋值的变量。
  • let声明被修改的变量。

在 Rust 里,这个直觉会被稍微颠覆一下。

1. let的“谎言”

在 JavaScript 中,let 代表 “Let me change this later”(允许我稍后修改它)。 但在 Rust 中,let 默认居然是**不可变(Immutable)**的!

看看这段代码:

1
2
3
4
5
fn main() {
let salary = 10000; // 定义薪水
salary = 15000; // 涨薪!
println!("现在的薪水是: {}", salary);
}

如果你尝试运行这段代码,Rust 编译器会直接给你一个红色的报错。它会告诉你:“你不能对不可变变量salary赋值两次。”

2. mut–开启“修改权限”

如果你真的想让变量像 JS 的 let 一样可以修改,你需要显式地告诉编译器:“嘿,这个变量我要改。”

你需要加上 mut (mutable) 关键字:

1
2
3
4
5
fn main() {
let mut salary = 10000; // 注意这里的 mut
salary = 15000; // ✅ 编译器:好的,这很合理。
println!("现在的薪水是: {}", salary);
}

🧠 随堂小测验

为了确认你掌握了这个核心思维转换,请看下面这段简单的 Rust 代码(假设这是个计算器应用的一部分):

1
2
3
4
5
6
7
8
fn main() {
let result = 0;
let factor = 2;

result = 10 * factor;

println!("结果是: {}", result);
}

问题: 这段代码会报错吗?如果是,哪一行会报错?你应该添加什么关键字来修复它?

答案

会报错,报错在第5行。你需要添加 mut 关键字来修复它:

1
2
3
4
5
6
7
8
fn main() {
let mut result = 0;
let factor = 2;

result = 10 * factor;

println!("结果是: {}", result);
}

加上 mut 关键字后,result就获得了“可变性”权限。这在Rust中是一个显式的决定,而在JS中是let默认赋予的。

独酌

独酌

小镇码农

相关文章