我正在学习 Rust(具有 C++ 背景),并且很难声明具有静态生命周期的向量。
基本上,我尝试过...
let v : 'static Vec<u16> = vec![1, 2, 3];
...但是得到
lifetime in trait object type must be followed by
+``
我认为我的语法不对,但找不到问题所在。
lazy_static
crate,并将您的向量声明为:
lazy_static {
ref V: Vec<u16> = vec![1, 2, 3];
}
它在函数内部和顶层都有效,并且是与函数内部 C++ 的
static std::vector<short> v = ...
最接近的等效项。与 C++ 不同,向量是不可变的,因此您可能需要将其包装在 Mutex
或 RwLock
中。