给定以下两个数组,有没有办法构造一个条件b
以在a
中的值循环中使用,如以下代码?我希望is_divisible
看起来像(i % 3 == 0) || (i % 5 == 0) || (i % 7 == 0)
fn main() {
let a: Vec<u32> = vec![80, 90, 101, 254];
let b: Vec<u32> = vec![3, 5, 7];
let is_divisible = // ???
for i in a {
if is_divisible {
println!("{} is true", i);
}
}
}
您可以创建一个使用b
并执行所需逻辑的闭包。在这种情况下,您可以使用Iterator::any
和Iterator::all
来测试是否所有值都满足某些条件:
let is_divisible = |i| {
b.iter().any(|b| i % b == 0)
};
我通常不会将其编写为单独的变量,我会使用Iterator::filter
而不是if
:
for i in a.iter().filter(|&i| b.iter().any(|&b| i % b == 0)) {
println!("{} is true", i);
}