• Rust中的不可变变量、常量、静态变量的区别
  • 发布于 2个月前
  • 277 热度
    0 评论
Rust 中的常量使用 const 修饰。常量就像 c/c++ 的预定义语句,编译的时候会直接内联到代码中,所以它通常可以被用来代替代码中的“魔法数”。
pub const MY_TEMPERATURE: f64 = 38.5;
理解 Rust 常量的精髓在于理解它是“编译期可确定的”,常量甚至可以是函数计算的结果,只要它能在编译期被确定即可。

静态变量使用 static 修饰,它就是生命周期为 'static 的变量。在你的程序运行之前,它们便已被设置好,并一直存在到程序结束。它主要在当你想借用一个常量值时使用。const 不可用 mut 修饰,而  static 却可以:
static mut MY_TEMPERATURE: f64 = 38.5;
只不过在 safe code 范围内,Rust 不允许访问 mut 修饰的 static 变量:
println!("我的体温是:{}", MY_TEMPERATURE);  // error: use of mutable static
最后说一下不可变变量。Rust 中直接用 let 声明的变量默认就是不可变的,let 变量有的不可变有的可变,变不变的,靠的只是编译器的检查规则而已。当到了运行期,它就是一个变量,就是函数栈帧中的普通变量。

用户评论