在我的 Rust 项目中,我需要一个全局保持、静态数组或 vec,它在模块可以注册值或函数的地方初始化一次。我想,使用lazy_static!-crate 可以做到这一点,但似乎并非如此。
这就是我想要实现的目标:
- 模块
a
用一些数据初始化一个数组/向量。 - 然后模块
b
(或更多模块)将此数组/vec 扩展为更多数据。 - 所有这些都应该只在程序启动时完成一次,并且在程序执行期间不会修改数组。它只是一个全局保存的查找表,但曾经由多个模块创建。
这是我的初稿,它不起作用游乐场链接
mod a
{
use lazy_static::lazy_static; // 1.4.0
lazy_static!{
#[derive(Debug)]
pub static ref TEST: Vec<u32> = vec![1, 2, 3];
}
}
mod b // when module b is removed, it works.
{
use lazy_static::lazy_static; // 1.4.0
use crate::a::TEST;
lazy_static!{
TEST.extend(vec![4, 5, 6]);
}
}
use a::TEST;
fn main() {
for i in 0..TEST.len() {
println!("{}", TEST[i]);
}
}
有人可以帮忙吗?