14 Rust编程语言教程:控制流之循环
在上一篇,我们讨论了 Rust 中的控制流条件语句,它们让程序能够根据不同的条件执行不同的代码块。本篇将继续探讨 Rust 的控制流结构,这次的焦点是循环。我们将涵盖 Rust 中提供的几种循环结构,并通过案例理解它们的用法。
for
循环
for
循环是 Rust 中最常用的循环之一,主要用于遍历集合(如数组或迭代器)。其语法包括关键字 for
,一个可迭代对象,以及一个闭包或语句块。
示例代码
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
时持续执行。
示例代码
fn main() {
let mut count = 0;
while count < 5 {
println!("Count: {}", count);
count += 1;
}
}
在上面的例子中,我们定义了一个可变变量 count
,并使用 while
循环打印出 count
的值。只要 count
小于 5
,循环就会持续执行。
loop
循环
loop
是一个无限循环,除非在其中使用了极与 break
关键字,否则它会一直执行。
示例代码
fn main() {
let mut counter = 0;
loop {
if counter >= 5 {
break;
}
println!("Counter: {}", counter);
counter += 1;
}
}
在这个示例中,loop
循环会一直执行,直到 counter
达到 5
,这时通过 break
关键字跳出循环。loop
循环适合用于不知道确切迭代次数的场景。
循环控制:break
和 continue
在 Rust 中,break
和 continue
用于控制循环的执行流。
break
:立即终止整个循环。continue
:跳过当前循环的剩余部分,直接进入下一次迭代。
示例代码
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
方法。
示例代码
fn main() {
let fruits = ["apple", "banana", "orange"];
for (index, fruit) in fruits.iter().enumerate() {
println!("Fruit {}: {}", index, fruit);
}
}
在这个例子中,enumerate
方法返回一个迭代器,它提供元素的索引和值,让我们能够同时访问这两者。
小结
本篇教程对 Rust 中的各种循环结构进行了详细探讨,包括 for
循环、while
循环以及无限循环 loop
。我们还讨论了循环控制关键字 break
和 continue
及其用法。通过案例示例,我们对循环的运用有了更深入的理解。
在下一篇中,我们将深入探讨 Rust 中的模式匹配,继续展示 Rust 灵活强大的控制流特性。通过这些机制,Rust 使得我们在编程时能更有效地处理各种情形和数据结构。