Rust 计算借用的布尔值

Rust 计算借用的布尔值,rust,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

这方面有什么工作吗

可以计算借用的布尔值吗?我对生锈还很陌生,所以我可能没有使用正确的术语

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
,这是编译器所期望的

控件的较短版本为

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

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

您可以简单地取消引用
n
,就像
中的那样,如果*n{
将被编译。
n
&bool
在您的示例中,
*n
给您一个编译器期望的
bool

控件的较短版本为

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

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

请包含来自编译器的完整错误消息。是否要询问是否可以计算借用的布尔值或修复您的代码?其关系如何?@KamilCuk更多的是了解为什么不能或如何使其成为可能。请包含来自com的完整错误消息piler。你想问是否可以计算借用的布尔值或修复你的代码?它是如何关联的?@KamilCuk更多的是关于理解为什么不这样做或如何使之成为可能。谢谢你的回答!你能解释引用的含义吗?谢谢你的回答!你能解释引用的含义吗?