评估借用的布尔值

xgr*_*eed 3 rust

有什么解决办法吗?

是否可以评估借用的布尔值?我对 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)

use*_*968 5

您可以简单地取消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()所有迭代器提供的方法中。