Rust 变量与可变性

不可变变量

在 Rust 中变量默认是不可变的
使用 let 定义 x = 5, 然后将 6 赋值给 x,这样是不能通过编译的。

src/main.rs

fn main() {
    let x = 5;
    x = 6;
}

执行 rustc main.rs 会得到如下错误:

error[E0384]: cannot assign twice to immutable variable `x`
 --> main.rs:3:5
  |
2 |     let x = 5;
  |         -
  |         |
  |         first assignment to `x`
  |         help: make this binding mutable: `mut x`
3 |     x = 6;
  |     ^^^^^ cannot assign twice to immutable variable

error: aborting due to previous error

For more information about this error, try `rustc --explain E0384`.

遮蔽 (shadowing)

可以再次使用 let 遮蔽同名变量

src/main.rs

fn main() {
    let x = 5;
    let x = 6;
    let x = "";
}

可变变量

要声明可变变量则需要使用 mut 关键字

fn main() {
    let mut x = 5;
    x = 6;
}

常量

使用 const 关键字可以声明常量

fn main() {
    const MAX_POINTS: u32 = 100_000;
}

不可变变量和常量的区别如下:

  • 常量必须指定类型
  • 常量不能和 mut 关键字一起使用
  • 常量不能被遮蔽

推荐阅读更多精彩内容

  • 一 创建项目 二 变量可变性的实例错误代码 vim ./src/main.rs 三 编译查看错误提示 cargo ...
    剑有偏锋阅读 171评论 0 0
  • 这里来聊一下Rust的变量声明,以及基本的数据类型。 可变性 与其他编程语言很不同的一点是,Rust 的变量默认是...
    一个游戏开发者阅读 111评论 0 0
  • 基础部分(The Basics) 当推断浮点数的类型时,Swift 总是会选择Double而不是Float。 结合...
    gamper阅读 665评论 0 7
  • 场景:这个伟大的领袖,小时候有过住贫民窟的经历。 造句:When he was young, he lived i...
    梦想_9bd9阅读 45评论 0 0
  • 这两天心情很郁闷。 昨天,下午三点中做完兼职,可是被人叫去搬行李。我以为只是帮她把东西从四楼搬下二楼,应该不回...
    和你相遇17阅读 206评论 0 0