在本章中,我们将深入探讨Rust编程语言中的while循环。while循环是一种控制流语句,允许我们重复执行一段代码块,直到特定的条件不再满足为止。理解如何使用while循环是掌握Rust编程的重要一环。
while循环的基本结构
while循环的基本结构非常简单。它由一个条件表达式和一个代码块组成。只要条件表达式的结果为true,代码块就会不断重复执行。一旦条件变为false,程序将跳过循环体,继续执行后续的代码。
let mut count = 0;
while count < 5 {
println!("当前计数: {}", count);
count += 1;
}在这个例子中,count变量被初始化为0,并且每次循环时都会增加1。只要count小于5,循环就会继续执行。
条件表达式的类型
在Rust中,任何可以计算为布尔值(true或false)的表达式都可以作为while循环的条件。这包括但不限于比较运算符(如<, >, ==等)、逻辑运算符(如&&, ||)以及函数调用的结果。
// www.javascriptcn.com code example
fn is_even(n: i32) -> bool {
n % 2 == 0
}
let mut num = 4;
while is_even(num) {
println!("{} 是偶数", num);
num -= 1;
}上述代码定义了一个函数is_even来检查一个数字是否为偶数。然后在while循环中使用这个函数来决定是否继续执行循环。
使用break和continue
在while循环内部,我们可以使用break关键字来立即退出循环,也可以使用continue关键字来跳过当前迭代并开始下一次迭代。
// www.javascriptcn.com code example
let mut i = 0;
while i < 10 {
i += 1;
if i % 2 == 0 {
continue; // 跳过偶数
}
println!("奇数: {}", i);
if i > 7 {
break; // 当i大于7时,跳出循环
}
}在这个例子中,我们打印出所有的奇数,但当数字大于7时,循环会提前结束。
无限循环
如果我们希望创建一个永远不会停止的循环,我们可以使用while true。不过,在实际应用中,通常需要一种方式来退出这种无限循环,比如通过break语句。
// www.javascriptcn.com code example
let mut running = true;
while running {
println!("请输入'exit'来退出循环");
let mut input = String::new();
std::io::stdin().read_line(&mut input).expect("读取失败");
if input.trim() == "exit" {
running = false;
}
}在这个示例中,我们通过用户输入来决定是否退出无限循环。
循环标签
在某些情况下,我们可能需要在一个嵌套循环中跳出多层循环。为了实现这一点,我们可以给循环加上一个标签,然后在break或continue后面指定这个标签。
// www.javascriptcn.com code example
'outer: loop {
println!("进入外层循环");
'inner: loop {
println!("进入内层循环");
break 'outer; // 跳出外层循环
}
println!("此行不会被执行");
}
println!("循环已结束");在这个例子中,当内层循环的break语句指定了outer标签时,它实际上会跳出外层循环。
总结
通过本章的学习,我们了解了Rust中的while循环及其各种应用场景。掌握了这些基本概念后,你就可以更灵活地使用循环来解决实际问题。在接下来的内容中,我们将继续探索其他类型的循环和控制结构。