如何引用我的板条箱中的非 Rust(配置)文件?

问题描述 投票:0回答:1

我的包中的 config/ 目录中列出了许多配置文件,我将它们包含在我的 Cargo.toml 中:

include = ["src/**/*", "README.md", "config/**/*"]

当我导入我的板条箱时,我可以看到配置文件被包含在内。但在我的代码中,我将它们称为

config/file.config
。这在我的项目中有效,但当将板条箱导入到不同的项目中时会中断。

我认为文件路径必须包含其他内容,但我找不到什么。有什么建议吗?

我可以轻松找到所有与导入

.rs
文件或使用
include_str
宏将文件捆绑在可执行文件中相关的线程,但我这里有一个板条箱,而不是可执行文件。我有大约 83 个配置文件(一个用于一个国家,83 个国家),所以我不想像这样逐个包含它们。

当我在测试中引用该文件时,它按预期工作,并且我可以从文件中读取数据。当在另一个项目中使用我的板条箱时,它失败,因为找不到该文件。

到目前为止,我已经尝试了路径的几种变体,包括

CARGO_MANIFEST_DIR
env var 作为前缀,但没有骰子。我还认为出于很多很多原因,做像
target/build/...package/config
这样的事情也不是一个好主意。

rust rust-cargo
1个回答
0
投票

我认为最好的想法是将它们包含在二进制文件中。您不必将它们一一包含在内;

include_dir
板条箱可以满足您的需求。

如果您坚持不这样做,我相信您最好的选择是使用构建脚本将文件复制到目标目录。 [构建脚本的当前目录将是包的目录] (https://doc.rust-lang.org/cargo/reference/build-scripts.html#inputs-to-the-build-script),以及 它可以通过

OUT_DIR
环境变量访问目标目录。您可以只复制文件,但请记住通过
cargo:rerun-if-changed
设置 Cargo 来跟踪更改(您可以立即查看整个目录)。

© www.soinside.com 2019 - 2024. All rights reserved.