我正在努力声明具有静态生命周期的
Vec
。基本上,我尝试了这个语法但得到了一个错误:
let v: 'static Vec<u16> = vec![1, 2, 3];
error: lifetime in trait object type must be followed by `+`
--> src/main.rs:2:12
|
2 | let v: 'static Vec<u16> = vec![1, 2, 3];
| ^^^^^^^
error: expected one of `+`, `;`, or `=`, found `Vec`
--> src/main.rs:2:20
|
2 | let v: 'static Vec<u16> = vec![1, 2, 3];
| - ^^^ expected one of `+`, `;`, or `=`
| |
| while parsing the type for `v`
我认为我的语法不对,但找不到问题所在。
lazy_static
crate,并将您的向量声明为:
lazy_static {
ref V: Vec<u16> = vec![1, 2, 3];
}
它既可以在函数内部工作,也可以在顶层工作,并且是与 C++ 在函数内部的
static std::vector<short> v = ...
最接近的等效项。与 C++ 不同,向量是不可变的,因此您可能需要将其包装在 Mutex
或 RwLock
中。