blog.dopana

Back

Rust入门系列第三篇。在 Rust 中,控制流不仅是选择路径——许多结构是能产生值的表达式。

if 和 else#

let score = 85;

if score >= 90 {
    println!("Grade: A");
} else if score >= 70 {
    println!("Grade: B");
} else {
    println!("Grade: C");
}
rust

条件必须是 bool —— Rust 不会把数字强制转换为布尔值。

if 是表达式#

每个分支都可以返回值,且各分支类型必须相同:

let grade = if score >= 90 { "A" } else { "B" };
println!("{grade}");
rust

这通常比单独赋值更简洁。

loop#

loop 会一直重复,直到遇到 break

let mut counter = 0;
let result = loop {
    counter += 1;
    if counter == 10 {
        break counter * 2;   // break 后面的值成为结果
    }
};
println!("{result}");   // 20
rust

while#

let mut n = 3;
while n > 0 {
    println!("{n}");
    n -= 1;
}
rust

范围 for#

对范围使用 for 是惯用的迭代方式:

for i in 0..5 {
    println!("{i}");
}
rust

0..5 不包含末尾;0..=5 包含末尾。也可以迭代集合:

let names = ["Ada", "Grace", "Linus"];
for name in names {
    println!("{name}");
}
rust

break 和 continue#

  • break 立即退出循环。
  • continue 跳过当前迭代的剩余部分。
for i in 0..10 {
    if i % 2 == 0 {
        continue;
    }
    if i > 7 {
        break;
    }
    println!("{i}");
}
// 输出: 1 3 5 7
rust

结论#

Rust 的控制流表现力强且安全:没有 truthy/falsy 的意外,分支还能产生值。本系列下一篇:函数。

参考资料#