我试图了解如何在 Rust 中将代码拆分为多个文件。
执行时cargo run
我得到这个:
error[E0432]: unresolved import `super::path`
--> util/message.rs:1:5
|
1 | use super::path;
| ^^^^^^^^^^^ no `path` in `util`
文件布局和内容如下:
./util/path.rs
pub const PATHFILE_PATH:&str = "~/.PATH";
./util/message.rs
use super::path;
pub fn display_message() {
println!("{}", path.PATHFILE_PATH);
}
./main.rs
mod util;
fn main() {
util::message::display_message();
}
./util.rs
pub mod message;
据我所知,我正在做预期的事情。以前的 答案以及这本书似乎都证实我正在做正确的事情,但我失败了。
谁能帮我找出我做错了什么?
在链接存储库的代码中,您的
util
模块定义util.rs
不包含mod path
加载path
子模块的语句。与 Python 包不同,Rust 编译器不会自动为模块子目录中的每个文件创建模块 - 您必须显式告诉编译器从文件加载模块。您的
src/utils.rs
文件应包含您也可以移至
src/util.rs
(src/util/mod.rs
自 2018 版以来不再需要)。顺便说一句,
PATHFILE_PATH
应该符合pub
中的资格path.rs
。