Rust - 循环
现代 Rust 中的循环
Section titled “现代 Rust 中的循环”循环是编程中的一个基本概念,它允许你重复执行一段代码块。Rust 提供了三种强大且安全的循环结构来处理任何迭代需求:loop、while 和惯用的 for。
无限 loop 循环
Section titled “无限 loop 循环”loop 关键字创建一个无限循环,它会永远运行,直到你使用 break 关键字明确告诉它停止。这对于服务器监听连接或程序等待用户输入等场景非常有用。
示例:一个简单计数器
Section titled “示例:一个简单计数器”fn main() { let mut counter = 0;
loop { counter += 1; println!("Counter is at: {}", counter);
if counter == 5 { break; // 当 counter 达到 5 时退出循环 } }}小贴士: loop 还可以用于从循环中返回值,方法是将值放在 break 语句之后。这对于重试逻辑非常有用。
fn main() { let mut counter = 0;
let result = loop { counter += 1; if counter == 10 { break counter * 2; // 退出并返回 20 } };
println!("The result is {}", result); // 打印:结果是 20}while 条件循环
Section titled “while 条件循环”while 循环在条件为 true 时一直运行。条件在每次迭代开始时检查。
示例:倒计时
Section titled “示例:倒计时”fn main() { let mut number = 3;
while number != 0 { println!("{}!", number); number -= 1; }
println!("LIFTOFF!!!");}3!2!1!LIFTOFF!!!while 循环虽然有用,但如果条件管理不慎,有时也容易出错。对于遍历集合,Rust 提供了一种更安全、更简洁的替代方案。
for 循环的惯用迭代
Section titled “for 循环的惯用迭代”for 循环是 Rust 中最常用和最惯用的循环。它用于迭代任何实现了 Iterator trait 的类型,例如数组(arrays)、向量(vectors)或范围(ranges)。它比手动 while 循环更安全、更简洁,因为它为你处理了迭代逻辑,从而防止了常见的差一错误(off-by-one errors)。
示例:遍历集合
Section titled “示例:遍历集合”fn main() { let fruits = ["Apple", "Banana", "Cherry"];
for fruit in fruits.iter() { // .iter() 借用每个元素 println!("I like {}s", fruit); }}示例:遍历范围
Section titled “示例:遍历范围”你也可以遍历一个数字范围。请注意,1..=3 用于表示一个包含末端的范围(inclusive range)。
fn main() { // 范围 1..4 是不包含末端的(1, 2, 3) // 范围 1..=3 是包含末端的(1, 2, 3) for number in 1..=3 { println!("{}", number); } println!("Ready!");}如前所述,break 会立即退出当前循环。
continue
Section titled “continue”continue 关键字跳过当前迭代的剩余部分,并进入下一次迭代。这对于在循环中过滤项目很有用。
示例:跳过偶数
Section titled “示例:跳过偶数”fn main() { for number in 0..10 { // 范围从 0 到 9 if number % 2 == 0 { continue; // 跳过偶数的 println! } println!("Found an odd number: {}", number); }}Found an odd number: 1Found an odd number: 3Found an odd number: 5Found an odd number: 7Found an odd number: 9