评估借用的布尔值

  • 本文关键字:布尔值 评估 rust
  • 更新时间 :
  • 英文 :


有什么解决办法吗?

是否可以评估借用的布尔值?我对铁锈还很陌生,所以我可能没有使用正确的术语。

fn control(map: &[bool;5]) -> bool {
let mut hold = false;
for n in map.iter() {
if n {
hold = true;
break;
}
}
hold
}

您可以像在if *n {中那样简单地取消引用n,它就会编译。在您的示例中,n&bool*n为您提供了编译器所期望的bool

control的较短版本是

fn control(map: &[bool]) -> bool {
map.iter().any(|e| *e)
}

以上采用借用切片(&[bool](而不是固定大小的数组作为输入参数;严格来说,这更强大,因为所有数组都可以作为切片借用。您的版本中的循环被折叠到所有迭代器提供的any()方法中。

最新更新