02-变量

变量 — The Rust Reference

译文 · 基于 The Rust Reference

原文链接: https://doc.rust-lang.org/reference/variables.html

r[variable]

变量

r[variable.intro] 变量是栈帧的组成部分,可以是具名函数参数、匿名临时值,或具名局部变量。

r[variable.local] 局部变量(或栈局部分配)直接持有一个值,分配在栈的内存中。该值是栈帧的一部分。

r[variable.local-mut] 除非另行声明,局部变量是不可变的。例如:let mut x = ...。

r[variable.param-mut] 除非用 mut 声明,函数参数是不可变的。mut 关键字仅作用于紧随其后的参数。例如:|mut x, y| 与 fn f(mut x: Box<i32>, y: Box<i32>) 声明一个可变变量 x 与一个不可变变量 y。

r[variable.init] 局部变量在分配时不会被初始化。相反,在进入栈帧时,该帧中的全部局部变量以未初始化状态分配。函数内后续语句可能初始化也可能不初始化这些局部变量。只有在所有可达控制流路径上都已初始化之后,局部变量才能被使用。

在下一个例子中,init_after_if 在 if 表达式之后已初始化,而 uninit_after_if 则未初始化,因为它在 else 分支中未被初始化。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
## fn random_bool() -> bool { true }
fn initialization_example() {
    let init_after_if: ();
    let uninit_after_if: ();

    if random_bool() {
        init_after_if = ();
        uninit_after_if = ();
    } else {
        init_after_if = ();
    }

    init_after_if; // 可以
    // uninit_after_if; // 错误:使用可能未初始化的 `uninit_after_if`
}
最后修改 August 21, 2026: 更新 (76fc81a2e)