2016-11-26 58 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

你到处都是! –