我在一个模块中有一组函数需要访问一些共享的初始化时间状态。实际上,我想用静态可变向量对此进行建模,例如:
static mut defs: Vec<String> = vec![];
fn initialize() {
defs.push("One".to_string());
defs.push("Two".to_string());
}
(例如:http://is.gd/TyNQVv,失败,“可变静态不允许有析构函数”。)
我的问题类似于是否可以在 Rust 中使用全局变量?,但使用 a 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);
}
有没有办法访问在初始化时填充并在运行时可见的静态(“全局”)向量?
我应该考虑其他模式来支持这个用例吗?传递对状态向量的显式引用是可能的,但会混淆大量需要访问此状态的函数签名。