有什么解决办法吗?
是否可以评估借用的布尔值?我对 Rust 还很陌生,所以我可能没有使用正确的术语。
fn control(map: &[bool;5]) -> bool {
let mut hold = false;
for n in map.iter() {
if n {
hold = true;
break;
}
}
hold
}
Run Code Online (Sandbox Code Playgroud)
您可以简单地取消n引用if *n {,它就会编译。在您的示例中n是 a ,为您提供编译器期望的 a 。&bool*nbool
的较短版本control是
fn control(map: &[bool]) -> bool {
map.iter().any(|e| *e)
}
Run Code Online (Sandbox Code Playgroud)
上面使用借用的切片(&[bool])而不是固定大小的数组作为输入参数;这实际上更强大,因为所有数组都可以作为切片借用。您版本中的循环被折叠到any()所有迭代器提供的方法中。