Expected type `bool`, found type `&bool`

2020-04-15 14:55发布

I would like to take a bool from a Vec<bool> and compare it in an if statement. How do I solve the following error?

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

if cell.clone() works for me but seems a bit hackisch.

标签: boolean rust
1条回答
老娘就宠你
2楼-- · 2020-04-15 15:41

take a bool from a Vec<bool>

Just do that:

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

bool implements Copy, so indexing the array will copy the value out.

If you had a reference to the boolean inside the vector, you will need to dereference it:

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

Or

let foo = vec![true];
if let Some(&val) = foo.last() {
    if val { /* ... */ }
}
查看更多
登录 后发表回答