有没有办法从数组构造条件?

  • 本文关键字:条件 数组 有没有 rust
  • 更新时间 :
  • 英文 :


给定以下两个数组,有没有办法构造一个条件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::anyIterator::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);
}

最新更新