14 控制流之循环

在上一篇,我们讨论了 Rust 中的控制流条件语句,它们让程序能够根据不同的条件执行不同的代码块。本篇将继续探讨 Rust 的控制流结构,这次的焦点是循环。我们将涵盖 Rust 中提供的几种循环结构,并通过案例理解它们的用法。

for 循环

for 循环是 Rust 中最常用的循环之一,主要用于遍历集合(如数组或迭代器)。其语法包括关键字 for,一个可迭代对象,以及一个闭包或语句块。

示例代码

1
2
3
4
5
6
7
fn main() {
let numbers = [1, 2, 3, 4, 5];

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

在这个例子中,我们定义了一个数组 numbers,然后使用 for 循环遍历这个数组的每一个元素。numbers.iter() 方法返回数组的迭代器,我们使用 for 循环逐个访问元素。

while 循环

while 循环是一种基于条件的循环,它在条件为 true 时持续执行。

示例代码

1
2
3
4
5
6
7
8
fn main() {
let mut count = 0;

while count < 5 {
println!("Count: {}", count);
count += 1;
}
}

在上面的例子中,我们定义了一个可变变量 count,并使用 while 循环打印出 count 的值。只要 count 小于 5,循环就会持续执行。

loop 循环

loop 是一个无限循环,除非在其中使用了极与 break 关键字,否则它会一直执行。

示例代码

1
2
3
4
5
6
7
8
9
10
11
fn main() {
let mut counter = 0;

loop {
if counter >= 5 {
break;
}
println!("Counter: {}", counter);
counter += 1;
}
}

在这个示例中,loop 循环会一直执行,直到 counter 达到 5,这时通过 break 关键字跳出循环。loop 循环适合用于不知道确切迭代次数的场景。

循环控制:breakcontinue

在 Rust 中,breakcontinue 用于控制循环的执行流。

  • break:立即终止整个循环。
  • continue:跳过当前循环的剩余部分,直接进入下一次迭代。

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
fn main() {
for i in 0..10 {
if i == 5 {
println!("Skipping 5");
continue; // 跳过 5
}

if i == 8 {
println!("Breaking at 8");
break; // 在 8 时终止循环
}

println!("Current number: {}", i);
}
}

在这个例子中,当 i 等于 5 时,continue 会使程序跳过对 5 的打印。当 i 等于 8 时,循环会被 break 终止。

结合 enumerate 使用 for 循环

有时候,我们希望同时访问索引和值。在这种情况下,可以使用 enumerate 方法。

示例代码

1
2
3
4
5
6
7
fn main() {
let fruits = ["apple", "banana", "orange"];

for (index, fruit) in fruits.iter().enumerate() {
println!("Fruit {}: {}", index, fruit);
}
}

在这个例子中,enumerate 方法返回一个迭代器,它提供元素的索引和值,让我们能够同时访问这两者。

小结

本篇教程对 Rust 中的各种循环结构进行了详细探讨,包括 for 循环、while 循环以及无限循环 loop。我们还讨论了循环控制关键字 breakcontinue 及其用法。通过案例示例,我们对循环的运用有了更深入的理解。

在下一篇中,我们将深入探讨 Rust 中的模式匹配,继续展示 Rust 灵活强大的控制流特性。通过这些机制,Rust 使得我们在编程时能更有效地处理各种情形和数据结构。

作者

IT教程网(郭震)

发布于

2024-08-15

更新于

2024-08-16

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论