我有一个模块中的一组函数需要访问一些共享的初始化状态。实际上,我想使用类似静态可变向量的方式来对其进行建模,例如:
static mut defs: Vec<String> = vec![];
fn initialize() {
defs.push("One".to_string());
defs.push("Two".to_string());
}
(示例:http://is.gd/TyNQVv,出现“不允许可变静态变量具有析构函数”错误。)
我的问题类似于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