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 反馈 — 无需本地设置。