📅  最后修改于: 2023-12-03 15:19:52.952000             🧑  作者: Mango
在 Rust 中,Range Step 用于创建一个范围,并指定步长。步长可以是任意整数。
该特性可以方便地创建自定义的迭代器,也可以用于直接生成某个区间的数组/向量等,并且在一些算法中也非常有用。
通过 ..=
运算符可以创建一个包含两端点的范围(包含右端点)。
let range = 0..=10; // 包含 0 和 10
创建 Range Step 可以在 Range 后加上步长。
let range = (0..=10).step_by(2); // 包含 0 2 4 6 8 10 的迭代器
Range Step 可以生成一个包含指定元素的数组或向量。
let arr: Vec<i32> = (0..=10).step_by(2).collect(); // 包含 0 2 4 6 8 10 的 Vec
可以通过 for in
进行迭代,也可以使用 Iterator
接口中提供的各种方法进行操作。
let range = (0..=10).step_by(2); // 包含 0 2 4 6 8 10 的迭代器
for n in range {
println!("{}", n); // 输出每一个元素
}
let sum: i32 = (0..=10).step_by(2).sum(); // 求 0 2 4 6 8 10 元素之和
let max = (0..=10).step_by(2).max(); // 找出 0 2 4 6 8 10 中最大的元素
let any_odd = (0..=10).step_by(2).any(|x| x % 2 != 0); // 判断是否有任何奇数
下面是一段计算 Fibonacci 数列的示例代码。使用 Step Range 可以只取偶数项,并用它们计算和。
fn main() {
let (mut a, mut b, mut sum) = (0, 1, 0);
while b <= 4000000 {
if b % 2 == 0 {
sum += b;
}
let c = a + b;
a = b;
b = c;
}
println!("{}", sum); // 输出 4613732
}