Disclaimer: I mentioned it in a comment, but let me re-iterate here, as it gives me more space to elaborate.
正如Shepmaster所说,可以使用include_bytes!
和include_str!
宏在Rust库/可执行文件中包含文本或二进制逐字记录.
然而,就你的情况而言,我会避免这样做.通过将内容解析推迟到运行时:
- 你允许建造一个有缺陷的人工制品.
- 您会产生(更多)运行时开销(解析时间).
- 您会产生(更多)空间开销(解析代码).
Rust承认这一问题,并为代码生成提供了多种机制,旨在克服这些限制:
- 宏:如果逻辑可以编码到宏中,那么它可以直接包含在源文件中
- 插件:启动宏,可以对任意逻辑进行编码,并生成复杂的代码(见
regex!
)
build.rs
:在编译之前运行的独立"Rust脚本",其作用是生成.rs
个文件
在你的情况下,build.rs
脚本听起来很合适:
- 通过将解析代码移动到那里,可以提供更轻的工件
- 通过提前解析,您可以提供更快的工件
- 通过提前解析,您可以交付正确的工件
解析的结果可以用不同的方式编码,从函数到静态(可能是lazy_static!
),因为build.rs
可以生成任何有效的代码.
你可以看到如何使用build.rs
/the Cargo Documentation;您将在那里找到如何将其与Cargo集成,以及如何创建文件(等等).