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

问题描述 投票:1回答:1

我有解决我的模块导入的麻烦。这是我的文件结构:

.
|-- 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;
module rust
1个回答
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子模块。相反,你想导入(使用uselibs模块,scenes::libs从crate根目录访问该模块。

© www.soinside.com 2019 - 2024. All rights reserved.