2015-07-08 7 views
11

Es ist möglich, die folgende Bindung in Rust zu machen:Let & mut Syntax

let &mut a = &mut 5; 

Aber was es genau bedeutet? Zum Beispiel erzeugt let a = &mut 5 eine unveränderliche Bindung des Typs &mut i32, erzeugt eine veränderbare Bindung vom Typ &mut i32. Was ist mit let &mut?

Antwort

10

Eine einfache Möglichkeit, die Art der etwas zu testen, ist es auf die falsche Art zuzuordnen:

let _:() = a; 

„integraler Variable“ oder eine durch-Wert der Wert ist eine ganze Zahl in diesem Fall. Es ist nicht veränderbar (wie das Testen mit a += 1 zeigt).

Dies ist, weil Sie Destrukturierungssyntax verwenden. Sie sind Muster Ihre &mut 5 gegen einen &mut _ passend, wie viel, wenn Sie

match &mut 5 { &mut a => { 
// rest of code 
} }; 

schrieb So sind Sie eine veränderbare Referenz hinzugefügt und sofort dereferencing es.

auf einen veränderbaren Verweis auf einen Wert zu binden stattdessen Sie

let ref mut a = 5; 

Dies ist nützlich in Destrukturierung tun können Verweise auf mehr inneren Werte zu nehmen.

+0

Danke! Ich habe die Möglichkeit vergessen, die destruktive Syntax in Let Bindings zu verwenden –