Avatar ·

在Rust中,不可变变量与常量有什么区别?

const 和不可变的 let 变量之间的关键区别

你好!我开始学习 Rust,但在一个基本概念上感到困惑。文档中说,变量默认是不可变的(immutable),要改变它们需要使用 mut。但还有一个关键字 const。它们之间有什么区别?

我尝试写了这样的代码:

const MAX_POINTS: u32 = 100_000;
let x = 5;
x = 6; // 错误!

看起来似乎 MAX_POINTS 和 x 在初始化后都不能被修改。但编译器对 x = 6 报错,而对常量则没有。为什么?如果我能通过 let 声明不可变变量,那为什么还需要常量?在什么情况下使用 const,什么情况下使用 let?

我还注意到常量必须始终标注类型,而变量则不一定。这是否与它们的本质有关?如果能有详细的解释和示例,一次性搞清楚这个话题,我将非常感激。