我想賦值給一個全局變量,但它一直有一個編譯器錯誤:如何將字符串分配給可變靜態變量?
static mut NameArr: [&'static str; 20] = ["\0"; 20];
fn main() {
unsafe {
static mut S1 :String = "".to_string();
S1.push('\0');
NameArr[0] = S1.as_slice();
}
}
錯誤:
a.rs:7:29: 7:43 error: mutable statics are not allowed to have destructors
a.rs:7 static mut S1 :String = "".to_string();
^~~~~~~~~~~~~~
a.rs:7:29: 7:43 error: static contains unimplemented expression type [E0019]
a.rs:7 static mut S1 :String = "".to_string();
^~~~~~~~~~~~~~
error: aborting due to 2 previous errors
爲什麼你想有一個全局可變變量?這強烈推動*一切*魯斯特想鼓勵。基本上你的整個程序必須使用'unsafe'這一事實表明你確實想要做一些尷尬的事情。 – Shepmaster
你實際上試圖做什麼(與之不同)?從你的代碼示例來看,我一點也不清楚。 –
爲什麼在應用程序生命週期中有全局的'&'static str'?如果永遠不會得到解除分配,並可能導致內存泄漏IIUC。 –