for循环的基本使用
for 循环是 Rust 中用来遍历集合(如数组、向量、哈希映射等)的一种方法。它使得迭代集合中的元素变得非常直观和简洁。
示例:使用 for 循环遍历数组
fn main() {
let numbers = [1, 2, 3, 4, 5];
for num in numbers.iter() {
println!("当前数字是 {}", num);
}
}在这个例子中,我们定义了一个名为 numbers 的数组,并使用 for 循环来遍历数组的每一个元素。iter() 方法返回一个迭代器,允许我们逐个访问数组中的每个元素。
使用范围进行迭代
除了遍历数组,for 循环还可以与范围一起使用,这在处理数字序列时特别有用。
示例:从 1 到 5 的数字序列
// www.javascriptcn.com code example
fn main() {
for i in 1..6 {
println!("数字是 {}", i);
}
}
// 输出:
// 数字是 1
// 数字是 2
// 数字是 3
// 数字是 4
// 数字是 5这里,1..6 创建了一个从 1 到 5 的半开区间(不包括结束值)。for 循环会依次取出这些数字并执行循环体内的代码。
使用 enumerate() 进行索引和值的迭代
当你需要同时获取集合中的元素及其索引时,可以使用 enumerate() 方法。
示例:获取数组元素及其索引
// www.javascriptcn.com code example
fn main() {
let animals = ["Dog", "Cat", "Bird"];
for (index, animal) in animals.iter().enumerate() {
println!("动物 {} 的索引是 {}", animal, index);
}
}
// 输出:
// 动物 Dog 的索引是 0
// 动物 Cat 的索引是 1
// 动物 Bird 的索引是 2enumerate() 返回一个迭代器,每次迭代时会生成一个元组,其中第一个元素是当前项的索引,第二个元素是该项的实际值。
控制循环流程
使用 break 提前退出循环
你可以使用 break 关键字提前终止循环。这在某些条件下提前退出循环很有用。
示例:找到数组中的第一个偶数
// www.javascriptcn.com code example
fn main() {
let numbers = [1, 3, 5, 8, 9];
for num in numbers.iter() {
if num % 2 == 0 {
println!("找到的第一个偶数是 {}", num);
break;
}
}
}
// 输出:
// 找到的第一个偶数是 8使用 continue 跳过当前迭代
如果想跳过循环中的某些迭代,可以使用 continue 关键字。
示例:跳过奇数
// www.javascriptcn.com code example
fn main() {
let numbers = [1, 2, 3, 4, 5];
for num in numbers.iter() {
if num % 2 != 0 {
continue;
}
println!("当前偶数是 {}", num);
}
}
// 输出:
// 当前偶数是 2
// 当前偶数是 4使用 loop 和 while 控制复杂循环逻辑
虽然 for 循环适用于简单的迭代场景,但有时你可能需要更复杂的控制流,这时可以考虑使用 loop 或 while 循环。
示例:使用 loop 创建无限循环
// www.javascriptcn.com code example
fn main() {
let mut count = 0;
loop {
println!("计数器:{}", count);
// 设置条件以防止无限循环
if count == 10 {
break;
}
count += 1;
}
}
// 输出:
// 计数器:0
// 计数器:1
// 计数器:2
// ...
// 计数器:10通过结合使用 loop 和 break,你可以创建有明确退出条件的循环结构。
示例:使用 while 循环
// www.javascriptcn.com code example
fn main() {
let mut count = 0;
while count < 10 {
println!("计数器:{}", count);
count += 1;
}
}
// 输出:
// 计数器:0
// 计数器:1
// 计数器:2
// ...
// 计数器:9while 循环会在给定条件为真时继续执行循环体内的代码。
循环中的模式匹配
Rust 支持在循环中使用模式匹配,这使得处理复杂数据结构变得更加灵活。
示例:模式匹配与循环结合
// www.javascriptcn.com code example
fn main() {
let numbers = vec![Some(1), None, Some(3)];
for num in numbers.iter() {
match num {
Some(n) => println!("数字是 {}", n),
None => println!("这是一个空值"),
}
}
}
// 输出:
// 数字是 1
// 这是一个空值
// 数字是 3在这个例子中,我们使用了 match 表达式来处理数组中的 Option 类型值。根据不同的情况输出不同的信息。
以上就是关于 Rust 中 for 循环的一些基本介绍及使用示例。掌握了这些基础知识后,你可以进一步探索更多高级用法和技巧。