2014-05-09 21 views
6

Voglio creare una struttura mutevole nello stack e mutarlo dalle funzioni di aiuto.Come posso passare un riferimento a dati mutabili in Rust?

#[deriving(Show)] 
struct Game { 
     score: u32, 
} 

fn addPoint (game: &mut Game) { 
     game.score += 1; 
} 

fn main() { 
     let mut game = Game { score: 0 }; 

     println!("Initial game: {}", game); 

     // This works: 
     game.score += 1; 

     // This gives a compile error: 
     addPoint(&game); 

     println!("Final game: {}", game); 
} 

Cercando di compilare questo dà:

rustc mutable.rs 
mutable.rs:19:18: 19:23 error: cannot borrow immutable dereference of `&`-pointer as mutable 
mutable.rs:19   addPoint(&game); 
           ^~~~~ 
error: aborting due to previous error 

Che cosa sto facendo di sbagliato?

+0

Prova 'addPoint (& gioco mut)'. –

+2

FYI: la convenzione avrebbe 'pn add_point (gioco: e mut Game)' piuttosto che 'fn addPoint (gioco: & mut Game)'. –

+0

@ChrisMorgan Adoro l'uomo della ruggine, anche quello, l'hanno capito bene (per i miei gusti alla fine) –

risposta

5

Il puntatore preso in prestito deve essere contrassegnato come mutabile troppo:

addPoint(&mut game); 
+0

hai dimenticato di mettere lì il mut – Arjan