我在解决模块导入方面遇到麻烦。这是我的文件结构:
.
|-- scenes
| |-- libs
| | |-- mod.rs
| | `-- components.rs
| |-- mod.rs
| `-- scene.rs
`-- main.rs
我无法将模块libs
导入scene.rs中。我想我没有把模块逻辑化。任何帮助将是非常可观的。
如果我尝试在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"
内容文件:
main.rs
mod scenes;
let sc = scenes::scene::Scene{};
scenes / scene.rs
mod libs; // errors
pub struct Sphere {
pub center: libs::components::Point
}
pub struct Scene {}
scenes / mod.rs
pub mod scene;
pub mod libs;
scenes / libs / components.rs
pub struct Point {}
scenes / libs / mod.rs
pub mod components;
答案 0 :(得分:2)
写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
模块。