我是 Rust 的新手。我正在尝试在库中创建一个静态变量DATA
,Vec<u8>
以便在编译库后对其进行初始化。然后我将 lib 包含在主代码中,希望DATA
直接使用而无需再次调用init_data()
。这是我尝试过的:
my_lib.rs:
use lazy_static::lazy_static;
pub fn init_data() -> Vec<u8> {
// some expensive calculations
}
lazy_static! {
pub static ref DATA: Vec<u8> = init_data(); // supposed to call init_data() only once during compilation
}
main.rs:
use my_lib::DATA;
call1(&DATA); // use DATA here without calling init_data()
call2(&DATA);
但事实证明,init_data()
仍然在调用中main.rs
。这段代码有什么问题?
更新:正如 Ivan C 指出的那样,lazy_static
它不在编译时运行。那么,“预加载”数据的正确选择是什么?