【发布时间】:2015-12-21 07:44:50
【问题描述】:
我正在尝试创建一个库,并且我想在其中包含一些二进制(或文本)文件,这些文件将包含将在运行时解析的数据。
我的目的是控制这些文件,不断更新它们,并在每次更新时更改库的版本。
这可以通过货物实现吗?如果是这样,我如何从我的库中访问这些文件?
我想到的一种解决方法是包含一些带有结构和/或常量的.rs 文件,例如&str,它将存储数据,但我觉得它有点难看。
编辑:
我已将接受的答案更改为更适合我情况的答案,但请查看Shepmaster's answer,因为这可能更适合您的情况。
【问题讨论】:
-
将在运行时解析 => 为什么?由于数据是静态的,将已经解析的数据存储在二进制文件中比在运行时解析它更有效。 Rust 在编译时可以表示的内容相当有限(很不幸),但是您提到维护一个
.rs文件,因此在您的情况下似乎是可能的。如果是这种情况,那么我建议使用build.rs文件,这是 Rust 中的“构建脚本”,它允许您在构建“正确”之前解析源文件并生成.rs文件。 -
更准确地说,这些数据已经被解析并且需要移动到结构体中,比如
HashMap,它不能被初始化(至少不使用lazy_staticcrate)。这就是为什么我需要在运行时“解析”它们。当我想更新数据时,将它们放在二进制(或文本)文件中可以更容易地只替换这个文件。然而,结合使用build.rs和lazy_staticcrate 听起来像是一个更好的选择,我会试一试。感谢您的建议!
标签: rust libraries binaryfiles rust-cargo