我有解决我的模块导入的麻烦。这是我的文件结构:
.
|-- scenes
| |-- libs
| | |-- mod.rs
| | `-- components.rs
| |-- mod.rs
| `-- scene.rs
`-- main.rs
我无法在scene.rs中导入模块libs
。我想我认为模块逻辑不合适。任何帮助都会非常明显。
如果我尝试在scene.rs中做mod libs;
error[E0583]: file not found for module `libs`
--> src/scenes/scene.rs:2:5
|
2 | mod libs;
| ^^^^
|
= help: name the file either scene/libs.rs or scene/libs/mod.rs inside the directory "src/scenes"
内容文件:
卖弄.人生
mod scenes;
let sc = scenes::scene::Scene{};
幕后/ scene.rs
mod libs; // errors
pub struct Sphere {
pub center: libs::components::Point
}
pub struct Scene {}
幕后/ mod.rs
pub mod scene;
pub mod libs;
场景/库/ components.rs
pub struct Point {}
场景/库/ mod.rs
pub mod components;
写mod libs
而不是use crate::scenes::libs
。
Rust 2018 Edition略微改变了模块系统,以帮助澄清这种情况。
您的目录应该重新构建,如下所示:
main.rs
scenes.rs
scenes
| libs.rs
| libs
| | components.rs
| scene.rs
这里的主要区别是mod.rs
文件现在从其文件夹中提取并适当命名。
PRE-RUST-2018 - 2018年11月
写mod libs
而不是use scenes::libs
。
错误消息告诉您,您正在尝试声明存在不存在的scene
子模块。相反,你想导入(使用use
)libs
模块,scenes::libs
从crate根目录访问该模块。