【发布时间】:2015-03-03 05:51:31
【问题描述】:
我在一个模块中有一组函数需要访问一些共享的初始化时间状态。实际上,我想用静态可变向量对此进行建模,例如:
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);
}
有没有办法访问在初始化时填充并在运行时可见的静态(“全局”)向量?
我是否应该考虑其他模式来支持此用例?传递对状态向量的显式引用是可能的,但会混淆大量需要访问此状态的函数签名。
【问题讨论】:
标签: static rust mutability