0Pricing
Learn Rust Coding · 课时

let 与可变性

绑定与可变性

let 与可变性 是 CoddyKit 上的免费 Learn Rust Coding 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Learn Rust Coding 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Learn Rust Coding 课程共包含 4 节课。

使用 let 绑定值

在 Rust 中,您可以使用 let 关键字创建变量。这会将一个名称绑定到某个值。

默认情况下,每个绑定都是不可变的——一旦为它赋值,就不能再更改。

fn main() {
    let x = 5;
    println!("The value of x is: {}", x);
}

默认不可变

Rust 有意将变量设为不可变。这可以防止意外更改,也让代码更容易理解和推理。

尝试为不可变绑定重新赋值会导致编译错误,而不是运行时崩溃。

  • 先写 let x = 5;,再写 x = 6; 将无法通过编译。
fn main() {
    let x = 5;
    // x = 6; // this would cause a compile error
    println!("x stays {}", x);
}

让变量可变

需要更改值时,请添加 mut 关键字。它会将绑定标记为可变的。

现在,您可以根据需要多次为它重新赋值。

fn main() {
    let mut count = 0;
    count = count + 1;
    count += 1;
    println!("count is {}", count);
}

类型推断

Rust 通常可以根据变量的值推断其类型。这称为类型推断。

let x = 5; 会自动将 x 的类型设为 i32。

fn main() {
    let n = 42;      // inferred as i32
    let pi = 3.14;   // inferred as f64
    println!("{} and {}", n, pi);
}

类型注解

您也可以使用冒号和类型名称显式声明类型。这称为类型注解。

当编译器无法推断类型,或为了提高代码清晰度时,类型注解非常有用。

fn main() {
    let age: u32 = 30;
    let price: f64 = 9.99;
    println!("age {} price {}", age, price);
}

常量

const 始终不可变,并且必须带有类型注解。它的值必须在编译时已知。

按照惯例,常量使用大写蛇形命名法。

fn main() {
    const MAX_POINTS: u32 = 100_000;
    println!("Max is {}", MAX_POINTS);
}

const 与 let

const 和 let 的主要区别:

  • const 永远不能是 mut。
  • const 要求提供类型注解。
  • const 必须是编译时常量表达式。
  • let 的值可以在运行时计算。
fn main() {
    const SECONDS_PER_HOUR: u32 = 60 * 60;
    let hours = 3;
    println!("{} seconds", SECONDS_PER_HOUR * hours);
}

在循环中修改值

在值随时间不断累加的循环中,可变变量很常见。

这里我们使用一个 mut 累加器来计算数字之和。

fn main() {
    let mut total = 0;
    for i in 1..=5 {
        total += i;
    }
    println!("Sum is {}", total);
}

使用下划线表示未使用

如果您绑定了一个值却从未使用它,Rust 会发出警告。在名称前加上下划线即可屏蔽该警告。

  • let _unused = 10; 会告诉编译器这是有意为之。
fn main() {
    let _temp = 99;
    let used = 1;
    println!("{}", used);
}

多个绑定

您可以在不同的行上声明多个变量,每个变量都使用自己的 let。

每个绑定彼此独立,除非标记为 mut,否则都是不可变的。

fn main() {
    let name = "Rust";
    let year = 2010;
    let mut version = 1;
    version += 1;
    println!("{} born {} v{}", name, year, version);
}

不可变性的好处

不可变性是一项安全特性。当编译器知道某个值不会改变时,就能提供更强的保证,并防止整类错误。

只有在确实需要修改值时,才使用 mut。

fn main() {
    let config = "production";
    // config is guaranteed not to change
    println!("Running in {}", config);
}

快速检查

哪个关键字可以让 Rust 变量变得可修改?

回顾

您已经学习了 Rust 中绑定的基础知识:

  • let 将名称绑定到值,默认不可变。
  • mut 会让绑定变得可变。
  • Rust 会推断类型,但您可以使用 : 添加注解。
  • const 在编译时确定,始终不可变,并且需要指定类型。
fn main() {
    let mut score: u32 = 0;
    const BONUS: u32 = 10;
    score += BONUS;
    println!("Final score: {}", score);
}

常见问题解答

「let 与可变性」课时是免费的吗?

是的 — 「let 与可变性」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Learn Rust Coding 课程的其余内容,请升级到 CoddyKit PRO。 Learn Rust Coding 课程共包含 4 节课。

「let 与可变性」这节课中我会学到什么?

绑定与可变性 你通过在浏览器中直接运行的动手代码来练习 Learn Rust Coding,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Learn Rust Coding 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Learn Rust Coding 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「let 与可变性」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Learn Rust Coding 课中编写并运行代码吗?

能。每节 Learn Rust Coding 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. let 与可变性
  2. 标量类型
  3. 复合类型
  4. 遮蔽
← 返回 Learn Rust Coding