2017-06-27 18 views
-1

Ich möchte einen bool von einem Vec<bool> nehmen und ihn in einer if-Anweisung vergleichen. Wie löse ich den folgenden Fehler?Erwarteter Typ `bool`, gefundener Typ` & bool`

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

if cell.clone() funktioniert bei mir aber scheint ein wenig hackisch.

+5

Sie können dereferenzieren den Wert mit '*' siehe [Rost durch Beispiel] (https://rustbyexample.com/flow_control/match/destrukturing/destruction_pointers.html) für die Besonderheiten. – asteriskTheServer

Antwort

5

nehmen bool von einem Vec<bool>

genau das tun:

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

boolCopy implementiert, so dass die Array-Indizierung wird der Wert abschreiben.

Wenn Sie einen Verweis auf die boolean innerhalb des Vektors hatte, werden Sie brauchen dereferenzieren:

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

Oder

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