这个问题在这里已有答案:
我希望在我的库中有一个可扩展的字典 Object
和 &'static str
. HashMap
似乎是正确的数据结构,但我如何使其全局化,在声明和可变的情况下初始化?
所以像这样:
use std::collections::HashMap;
enum Object { A, B, C }
const OBJECT_STR: &'static [&'static str] = &[ "a", "b", "c" ];
static mut word_map: HashMap<&'static str, Object> = {
let mut m = HashMap::new();
m.insert(OBJECT_STR[0], Object::A);
m.insert(OBJECT_STR[1], Object::B);
m.insert(OBJECT_STR[2], Object::C);
m
};
impl Object {
...
}
1 回答
使用lazy_static箱可以实现这一点 . 如他们的例子所示 . 由于访问静态变量的可变性是不安全的,因此需要将其包装成Mutex . 我建议不要将
HashMap
公开,而是提供一组锁定方法,并提供对HashMap
的访问权限 . See this answer关于制作一个全局可变的单身人士 .