《Rust编程入门》5.2 循环(loop、while和for)

5.2 循环(loop、while 和 for) 循环是程序控制流程的核心工具之一,用于反复执行一段代码直到满足某些条件。Rust 提供了三种主要的循环结构:loop、while 和 for。每种循环在不同场景下都有独特的优势。

5.2 循环(loop、while 和 for)

循环是程序控制流程的核心工具之一,用于反复执行一段代码直到满足某些条件。Rust 提供了三种主要的循环结构:loopwhilefor。每种循环在不同场景下都有独特的优势。


5.2.1 无条件循环:loop

loop 是 Rust 中的无限循环,通常用于需要不断运行的场景,比如服务器监听。可以使用 break 关键字退出循环。

基本用法

fn main() {
    let mut count = 0;

    loop {
        count += 1;
        println!("Count: {}", count);

        if count == 5 {
            break; // 退出循环
        }
    }
}

带返回值的 loop

loop 可以通过 break 返回一个值,这在某些情况下非常有用。

fn main() {
    let result = loop {
        let x = 10;
        if x > 5 {
            break x * 2; // 返回 20
        }
    };
    println!("Result: {}", result);
}

5.2.2 条件循环:while

while 循环在每次迭代前检查条件,当条件为 false 时退出循环。

基本用法

fn main() {
    let mut number = 3;

    while number > 0 {
        println!("Number: {}", number);
        number -= 1;
    }
    println!("Liftoff!");
}

常见错误:条件永远为真

注意避免创建条件永远为真的 while 循环,这可能导致程序无限执行。

5.2.3 遍历集合:for

for 循环是 Rust 中最常用的循环结构,用于遍历集合或范围。for 循环的语法简单、安全,不容易出错。

遍历范围

for 循环可以通过 ....= 操作符生成数值范围。

  • start..end:左闭右开区间,包含 start 不包含 end
  • start..=end:左闭右闭区间,包含 startend
fn main() {
    for i in 1..5 {
        println!("Number: {}", i);
    }
    for i in 1..=5 {
        println!("Inclusive Number: {}", i);
    }
}

遍历集合

Rust 提供了强大的迭代器,可以用 for 遍历集合类型,如数组和向量。

fn main() {
    let numbers = [10, 20, 30, 40];

    for number in numbers.iter() {
        println!("Number: {}", number);
    }
}

使用 enumerate

enumerate 方法可以同时获取索引和值。

fn main() {
    let numbers = vec!["one", "two", "three"];

    for (index, value) in numbers.iter().enumerate() {
        println!("Index: {}, Value: {}", index, value);
    }
}

5.2.4 控制循环的执行

1. 跳过本次循环:continue

continue 关键字会跳过当前循环的剩余部分,直接进入下一次迭代。

fn main() {
    for i in 1..=5 {
        if i % 2 == 0 {
            continue; // 跳过偶数
        }
        println!("Odd Number: {}", i);
    }
}

2. 退出循环:break

break 关键字立即终止循环。

3. 标记循环:标签

在嵌套循环中,可以使用标签指定要控制的循环。

fn main() {
    'outer: for i in 1..=3 {
        for j in 1..=3 {
            if i == 2 && j == 2 {
                break 'outer; // 退出外层循环
            }
            println!("i: {}, j: {}", i, j);
        }
    }
}

5.2.5 比较三种循环

特性loopwhilefor
使用场景无限循环,直到明确退出条件控制循环遍历集合或范围
退出方式break条件为假自动退出,无需显式控制
是否简洁灵活,但代码可能较冗长条件明确,代码简洁简单高效,特别适合集合或范围遍历

5.2.6 小结

Rust 提供了灵活的循环结构:

  • 使用 loop 实现无限循环,并通过 break 控制退出。
  • 使用 while 在满足条件时循环执行代码。
  • 使用 for 遍历范围或集合,是 Rust 编程中最安全、最推荐的循环方式。

在下一节中,我们将介绍 Rust 的模式匹配功能,通过 matchif let 提供更强大的流程控制能力。

继续阅读

探索更多技术文章

浏览归档,发现更多关于系统设计、工具链和工程实践的内容。

全部文章 返回首页