2.4 控制流
听
Rust 提供了多种控制流结构,用于根据条件执行不同代码或重复执行某段逻辑。与其他语言不同的是,Rust 中的许多控制结构(如 if 和 match)是表达式,可以返回值,这使得代码更加简洁和函数式。
if 表达式
Rust 的 if 不是语句,而是表达式,因此它可以产生一个值。条件必须是 bool 类型,不能隐式转换整数或其他类型。
let number = 3;
if number < 5 {
println!("condition was true");
} else {
println!("condition was false");
}
由于 if 是表达式,可以将其结果赋给变量:
let x = if condition { 10 } else { 20 };
注意:所有分支必须返回相同类型的值,否则编译器会报错。
循环结构
Rust 提供了三种主要的循环方式:loop、while 和 for。
loop
loop 创建一个无限循环,直到遇到 break 才退出。它也可以返回值:
let mut counter = 0;
let result = loop {
counter += 1;
if counter == 10 {
break counter * 2; // 返回 20
}
};
println!("The result is {}", result);
while
while 在条件为真时重复执行代码块:
let mut number = 3;
while number != 0 {
println!("{}!", number);
number -= 1;
}
这种方式避免了手动管理循环索引和边界检查,比传统 for 循环更安全。
for
for 循环用于遍历集合(如数组、范围等),是最常用且安全的循环形式。例如,遍历一个数组:
let a = [10, 20, 30, 40, 50];
for element in a {
println!("the value is: {}", element);
}
也可以使用 .. 或 ..= 创建数值范围:
for i in 1..4 { // 1, 2, 3(不包括 4)
println!("{}", i);
}
for i in 1..=3 { // 1, 2, 3(包括 3)
println!("{}", i);
}
for 循环在遍历时自动处理引用和所有权问题,避免了越界访问和数据竞争,因此推荐优先使用 for 而非 while 或手动索引。
小结
Rust 的控制流结构兼顾安全性与表达力。if 作为表达式支持值绑定,loop 提供灵活的无限循环并支持返回值,while 适用于条件驱动的重复执行,而 for 则是遍历集合的首选方式。合理使用这些结构,可以写出清晰、高效且内存安全的代码。
#Rust 入门教程
分享于 2 周前
上一篇:2.3 函数定义与调用
下一篇:2.5 注释与文档注释