预期类型`bool`,找到类型`& bool`

时间:2017-06-27 19:07:41

标签: boolean rust

我想从bool中取一个Vec<bool>并在if语句中进行比较。如何解决以下错误?

  |
7 |             if cell {
  |                ^^^^ expected bool, found &bool
  |
  = note: expected type `bool`
             found type `&bool`

if cell.clone()对我有用,但似乎有点蠢蠢。

1 个答案:

答案 0 :(得分:5)

  

bool

获取Vec<bool>

就这样做:

let foo = vec![true];
if foo[0] { /* ... */ }

bool实现Copy,因此索引数组会将值复制出来。

如果您在向量中引用了布尔值,则需要取消引用它:

let foo = vec![true];
if let Some(val) = foo.last() {
    if *val { /* ... */ }
}

或者

let foo = vec![true];
if let Some(&val) = foo.last() {
    if val { /* ... */ }
}