问题
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.
回答1:
take a
bool
from aVec<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 { /* ... */ }
}
来源:https://stackoverflow.com/questions/44788026/expected-type-bool-found-type-bool