我有一組模塊內需要訪問一些共享的初始化時間狀態的功能。有效地我想要像一個靜態可變矢量模型如下:解析數據到模塊級別的可變靜態變量
static mut defs: Vec<String> = vec![];
fn initialize() {
defs.push("One".to_string());
defs.push("Two".to_string());
}
(例如:http://is.gd/TyNQVv,失敗,「可變靜不準析構函數」。)
我的問題是相似的Is it possible to use global variables in Rust?,但使用Vec
(即具有析構函數的類型),因此該問題的基於Option
的解決方案似乎不適用。也就是說,這個失敗,相同的錯誤我第一次嘗試:
static mut defs: Option<Vec<String>> = None;
fn initialize() {
let init_defs = vec![];
init_defs.push("One".to_string());
init_defs.push("Two".to_string());
defs = Some(init_defs);
}
是否有一種方式來獲得訪問靜態是在初始化時填充,可見在運行時(「全局」)向量?
我還有其他應該考慮支持這種用例的模式嗎?傳遞狀態向量的顯式引用是可能的,但會混淆大量需要訪問此狀態的函數簽名。
謝謝!這非常清楚地回答了我的兩個問題。我特別喜歡上下文結構模式,使用'impl''方法。這感覺更習慣。 – Bosh 2015-03-03 21:01:48