跳转到主要内容
模块 2 · 第 1 课(共 2)课程中的3/14~12 min
模块课程(1/2)

条件和循环

Rust 中的控制流围绕两个主要结构:决定采用哪个执行路径的条件表达式,以及重复指令的循环结构。

条件:if 作为表达式

在 Rust 中,if 语句是一个表达式,意味着它返回一个值。我们可以使用 if 直接给变量赋值:

Rust
let condition = true;
let number = if condition { 5 } else { 6 }; // if/else as an expression

循环和迭代

Rust 提供了三种类型的本机循环:loop、while 和 for。

1.loop(无限循环)

loop 关键字创建一个无限循环,该循环将持续到您明确告诉它停止使用 break 为止:

Code
let mut count = 0;
loop {
    count += 1;
    if count == 10 {
        break; // Exit the loop
    }
}

此外,您可以通过将 loop 放在 break 后面来返回一个值:

Rust
let result = loop {
    count += 1;
    if count == 10 {
        break count * 2; // Returns 20
    }
};

2. while(条件循环)

只要布尔条件保持为真,就运行代码块:

Rust
let mut number = 3;
while number != 0 {
    println!("{}!", number);
    number -= 1;
}

3. for(集合和范围的迭代)

for 循环是用于迭代集合或数字范围中的元素的最常见和最安全的工具:

Rust
// Iterates over numbers 1 through 3 (excluding 4)
for number in 1..4 {
    println!("Valore: {}", number);
}

// Iterates including the right boundary using '='
for number in 1..=3 {
    println!("Valore: {}", number); // Prints 1, 2 and 3
}

循环标签

处理嵌套循环时,break 和 continue 语句默认应用于最内层循环。 Rust 允许您使用 循环标签 (写为 'label_name:)来显式终止或继续外循环:

Rust
let mut count = 0;
'outer: loop {
    loop {
        if count == 5 {
            break 'outer; // Exits the outer loop directly
        }
        count += 1;
    }
}

自己尝试一下

锻炼#rust.m2.l1.e1
尝试:0加载中...

声明一个名为 number 的变量,其值为 7。接下来,如果 number 大于 5,则使用 if/else 表达式将值“greater”分配给变量 message,否则为“smaller”。最后,使用 println! 打印消息。

正在加载编辑器...
显示提示

编写 `let message = if number > 5 { 'greater' } else { 'smaller' };` 并将其传递给 `println!`。

3 次尝试后可用的解决方案

锻炼#rust.m2.l1.e2
尝试:0加载中...

编写一个 for 循环,使用 println! 打印从 1 到 5(包括 1、2、3、4、5)的数字!在每次迭代时。

正在加载编辑器...
显示提示

使用包含范围语法“for i in 1..=5”并在块内运行“println!('{}', i);”。

3 次尝试后可用的解决方案

锻炼#rust.m2.l1.e3
尝试:0加载中...

编写一个循环,从 0 开始递增可变变量计数器。当计数器达到 10 时,使用break语句退出返回计数器乘以 5 的循环,将此值分配给不可变变量结果。最后打印结果。

正在加载编辑器...
显示提示

使用 `let result = Loop { ... };`。在循环内增加 `counter` 并添加条件 `if counter == 10 { break counter * 5; }`。

3 次尝试后可用的解决方案