在 Rust 中使用“静态生命周期”声明 Vec 失败

问题描述 投票:0回答:1

我正在学习 Rust(具有 C++ 背景),并且很难声明具有静态生命周期的向量。

基本上,我尝试过...

let v : 'static Vec<u16> = vec![1, 2, 3];

...但是得到

lifetime in trait object type must be followed by
+``

我认为我的语法不对,但找不到问题所在。

rust lifetime
1个回答
0
投票

您可能想使用

lazy_static
crate,并将您的向量声明为:

lazy_static {
    ref V: Vec<u16> = vec![1, 2, 3];
}

它在函数内部和顶层都有效,并且是与函数内部 C++ 的

static std::vector<short> v = ...
最接近的等效项。与 C++ 不同,向量是不可变的,因此您可能需要将其包装在
Mutex
RwLock
中。

© www.soinside.com 2019 - 2024. All rights reserved.