2016-11-26 25 views
2

我有一個全局靜態數組,我聲明爲Rust中的查找表。由於某些奇怪的原因,我無法將值分配給元素。它看起來像這樣:在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); 
     } 
    } 
} 

出於某種原因,這並不工作,我不斷收到錯誤:

error: cannot assign to immutable indexed content 

有誰知道爲什麼這是怎麼回事?

回答

1

我剛想出答案。我還必須聲明數組內的變量是可變的。我這樣做的改變:

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

到:

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

我希望這個答案是誰在今後發生類似問題的人非常有用。如果其他人能夠擴展這個,那會很棒! :D

+0

我會通過**「展開」不要這樣做**。全局變量是一個糟糕的想法。如果你打算這樣做,那麼你可以用[線程安全的方式]來執行它(http://stackoverflow.com/q/27791532/155423)。 – Shepmaster

+0

你到處都是! –