如何创建具有“静态生命周期”的 Vec? [重复]

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

我正在努力声明具有静态生命周期的

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`

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

rust lifetime
1个回答
1
投票

您可能想使用

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.