2015-07-08 5 views
11

E 'possibile fare la seguente obbligatorio in Rust:Let & sintassi mut

let &mut a = &mut 5; 

Ma che cosa significa esattamente? Ad esempio, let a = &mut 5 crea un'associazione immutable di tipo &mut i32, let mut a = &mut 5 crea un binding mutabile di tipo &mut i32. Che mi dici di let &mut?

risposta

10

Un modo semplice per verificare il tipo di qualcosa è da assegnare al tipo sbagliato:

let _:() = a; 

In questo caso il valore è "variabile integrale", oppure un numero intero per valore. Non è mutabile (come test con gli spettacoli a += 1).

Questo perché si utilizza la sintassi di destrutturazione . Stai modello combinato disposto con la &mut 5 contro un &mut _, proprio come se hai scritto

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

Così si sta aggiungendo un riferimento mutevole e subito dereferenziazione esso.

Per associare un riferimento mutabile a un valore, invece, si può fare

let ref mut a = 5; 

Questo è utile in destrutturazione di prendere riferimenti a più valori interiori.

+0

Grazie! Ho dimenticato la possibilità di utilizzare la sintassi distruttiva in let binding –