【发布时间】:2020-04-21 12:28:47
【问题描述】:
我正在使用类似于 this answer 的东西将一些文件数据加载到 Rust 二进制文件中。我希望将这些数据存储在 HashMap 中,这样我就可以在主程序中按键搜索。但是,我不确定如何确保这些数据是不可变的。
根据之前在build.rs 中定义的向量,我假设我可以在main.rs 中执行类似的操作:
const ALL_THE_FILES: &[(&str, &[u8])] = &include!(concat!(env!("OUT_DIR"), "/all_the_files.rs"));
fn main () {
let all_the_files_hashmap: HashMap<&str, &[u8]> = ALL_THE_FILES.iter().cloned().collect();
// ...
}
有没有办法直接从build.rs 构造这个HashMap 并将其加载到main.rs 中的const?如果我用类似 data.insert(<key>,<value>); 的 HashMap 定义替换链接答案中使用的元组向量方法,我可以以同样的方式将其加载到 main.rs 和 include! 中,保持 HashMap 不可变吗?
非常感谢! 问候
【问题讨论】:
-
您可以使用:github.com/sfackler/rust-phf - 这是编译时,而
lazy_static是运行时。
标签: rust hashmap immutability rust-cargo