【发布时间】:2021-08-15 19:26:39
【问题描述】:
我的包有一个二进制目标,它使用include_bytes!(…) 将一些预先计算的值的副本捆绑到已编译的二进制文件中。这是一种优化,但并非绝对必要:如果捆绑的数据切片 .is_empty(),程序能够在运行时计算这些值。
程序需要能够在没有这些数据的情况下构建。但是,如果目标文件不存在,include_bytes!("data/computed.bin") 会导致构建错误。
error: couldn't read src/data/computed.bin: No such file or directory (os error 2)
目前,我有一个 Bash 构建脚本,它使用 touch data/computed.bin 来确保文件在构建之前存在。但是,我不想依赖于特定于平台的解决方案,例如 Bash。我希望能够使用cargo build 在任何受支持的平台上构建这个项目。
我的 Rust 程序如何在文件退出时从文件中编写 include_bytes!(…) 或 include_str!(…),但在文件不存在时优雅地回退到替代值或行为,同时仅使用标准 Cargo 构建工具?
【问题讨论】:
标签: rust rust-cargo