我的文件结构如下所示(是的,这是为了代码的出现):
days.rs
days/
day01.rs
day02.rs
...
我在
days.in
中生成了一个 build.rs
文件,看起来像这样:
pub mod day01;
pub mod day02;
...
然后我
include!
这个文件在days.rs
:
include!(concat!(env!("OUT_DIR"), "/days.in"));
当我
cargo run
或cargo build
时,我每天都会重复这个错误:
error[E0583]: file not found for module `day01`
--> D:\Projects\advent-of-code-2024\target\debug\build\advent-of-code-2024-59c0dcca155b0f0e\out\days.in:1:1
|
1 | pub mod day01;
| ^^^^^^^^^^^^^^
|
= help: to create the module `day01`, create file "D:\Projects\advent-of-code-2024\target\debug\build\advent-of-code-2024-59c0dcca155b0f0e\out\day01.rs" or "D:\Projects\advent-of-code-2024\target\debug\build\advent-of-code-2024-59c0dcca155b0f0e\out\day01\mod.rs"
= note: if there is a `mod day01` elsewhere in the crate already, import it with `use crate::...` instead
我注意到错误位于
days.in
,而我希望它位于 days.rs
。
我怀疑这可能是我误解了什么。
include!
不就是直接“复制粘贴”目标文件的内容来代替宏吗?
当我手动包含该文件时,只需复制
days.in
的内容并用它替换 include!
,它就可以正常工作!