You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rust中不带mut的let与const的区别是什么?

Rust中不带mut的let与const的区别

虽然不带mut的let和const都无法被修改,但它们在Rust里是完全不同的概念,核心区别如下:

  • 编译期求值 vs 运行期初始化
    const是编译期常量,初始化必须用编译阶段就能计算出结果的表达式,比如字面量、const函数的返回值。而不带mut的let是运行期初始化的变量,它的值可以来自运行时的计算结果,比如读取用户输入、调用普通函数的返回值。

  • 作用域与重定义规则
    const可以定义在全局作用域,也能在函数内部定义,不同作用域里允许出现同名的const。不带mut的let是块级作用域变量,同一作用域内不能重复定义同名变量,就算是不可变也不行(除非用变量遮蔽,那本质是创建了新变量)。

  • 内存特性与使用方式
    const在编译时会被内联到所有引用它的位置,没有固定的内存地址。而不带mut的let变量会在运行时分配内存(通常在栈上),有自己独立的内存地址,你可以获取它的引用&MYINT。

你给出的代码示例里,两者都不能被赋值修改,但背后的逻辑不同:

fn main(){
      let MYINT = 1;
      MYINT = 2; // error:不可变变量无法重新赋值

      const MYINT_ = 1;
      MYINT_ = 1; //error:常量本身就不允许被赋值
}

内容的提问来源于stack exchange,提问作者Farshad Sarmali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 19:15:56