在本章中,我们将探讨 Rust 中的控制流概念。控制流是编程语言中用于决定代码执行顺序的关键特性。通过使用条件语句、循环和其他控制结构,我们可以创建更灵活和功能丰富的程序。
条件语句
条件语句允许我们根据特定条件的真假来执行不同的代码块。在 Rust 中,条件语句主要通过 if 表达式实现。
基础 if 表达式
if 表达式是最基本的条件语句形式,其基本语法如下:
let number = 3;
if number < 5 {
println!("条件为真");
} else {
println!("条件为假");
}注意,if 表达式的分支必须返回相同类型的值。如果分支的类型不同,编译器会报错。
if let 语句
if let 语句提供了一种更简洁的方式来处理模式匹配的情况。它类似于 if 表达式,但专用于模式匹配。
let some_value = Some(5);
if let Some(x) = some_value {
println!("some_value 的值为 {}", x);
}match 表达式
match 表达式是 Rust 中非常强大且灵活的控制流工具,用于模式匹配。它可以用来匹配各种类型的值,包括枚举。
匹配简单值
let number = 6;
match number {
1 => println!("数字为 1"),
2 | 3 | 4 | 5 => println!("数字在 2 到 5 之间"),
6..=9 => println!("数字在 6 到 9 之间"),
_ => println!("其他数字"),
}匹配枚举
假设我们有一个简单的枚举类型:
// www.javascriptcn.com code example
enum Message {
Quit,
Move { x: i32, y: i32 },
Write(String),
ChangeColor(i32, i32, i32),
}
fn process_message(msg: Message) {
match msg {
Message::Quit => println!("退出程序"),
Message::Move { x, y } => println!("移动到 ({}, {})", x, y),
Message::Write(text) => println!("写入文本:{}", text),
Message::ChangeColor(r, g, b) => println!("改变颜色到 RGB({}, {}, {})", r, g, b),
}
}循环
循环允许我们重复执行一段代码直到满足特定条件。Rust 提供了几种循环结构,包括 loop、while 和 for 循环。
loop 循环
loop 循环是一种无限循环,除非使用 break 关键字来终止循环。
// www.javascriptcn.com code example
let mut count = 0;
loop {
count += 1;
println!("计数器:{}", count);
if count == 5 {
break;
}
}while 循环
while 循环在每次迭代时检查条件是否成立。如果条件为真,则执行循环体内的代码。
let mut number = 3;
while number != 0 {
println!("{}", number);
number -= 1;
}
println!("发射!");for 循环
for 循环用于遍历集合中的每个元素。这是遍历数组或向量等数据结构的常用方式。
let a = [10, 20, 30, 40, 50];
for element in a.iter() {
println!("当前元素:{}", element);
}断言与调试
在开发过程中,我们经常需要验证某些条件是否满足。Rust 提供了 assert! 宏来帮助我们进行断言。
// www.javascriptcn.com code example
fn main() {
let condition = true;
let number = if condition {
5
} else {
6
};
assert_eq!(number, 5, "number 应该等于 5,但实际值为 {}", number);
}assert_eq! 和 assert_ne! 宏分别用于断言两个值相等或不相等。
小结
通过学习本章的内容,您应该已经掌握了 Rust 中的基本控制流机制,包括条件语句和循环。这些知识将帮助您编写出更加灵活和功能强大的程序。下一章我们将继续深入探讨 Rust 的其他重要概念。