2016-11-26 2 views
2

J'ai un tableau statique global que j'ai déclaré comme table de recherche dans Rust. Pour une raison étrange, je ne peux pas attribuer de valeurs aux éléments. Il ressemble à ceci:Tableau statique mutable ne fonctionnant pas dans Rust

pub static mut WON_TABLE: &'static [u8] = &[0; 1000]; 

fn main() { 
    for mov in 0..1000 { 
     unsafe { 
      WON_TABLE[mov as usize] = some_analyzer_function(mov); 
     } 
    } 
} 

Pour une raison quelconque, cela ne fonctionne pas et je continue à obtenir l'erreur:

error: cannot assign to immutable indexed content 

Est-ce que quelqu'un sait pourquoi ce qui se passe?

Répondre

1

Je viens de trouver la réponse. Je dois également déclarer les variables dans le tableau comme mutable. Je fais cela en changeant:

pub static mut WON_TABLE: &'static [u8] = &[0; 1000]; 

à:

pub static mut WON_TABLE: &'static mut [u8] = &mut [0; 1000]; 

J'espère que cette réponse est utile aux personnes qui ont des problèmes similaires à l'avenir. Si quelqu'un d'autre peut développer ce sujet, ce serait génial! : D

+0

Je "développez" dessus par ** ne le faites pas **. Les variables globales sont une idée * terrible *. Si vous allez le faire, vous pouvez aussi bien le faire de manière sûre pour les threads (http://stackoverflow.com/q/27791532/155423). – Shepmaster

+0

Vous êtes partout! –