如何在不同文件中导入libs模块

时间:2018-11-02 16:39:20

标签: module rust

我在解决模块导入方面遇到麻烦。这是我的文件结构:

.
|-- 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;

1 个答案:

答案 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模块。