Как импортировать модуль libs в разные файлы - PullRequest
0 голосов
/ 02 ноября 2018

У меня проблемы с разрешением импорта моего модуля. Вот моя файловая структура:

.
|-- scenes
|   |-- libs
|   |    |-- mod.rs
|   |    `-- components.rs
|   |-- mod.rs
|   `-- scene.rs
`-- main.rs

Я не могу импортировать модуль libs в scene.rs. Я думаю, что я не понимаю, что модуль логично. Любая помощь будет очень заметной.

если я попытаюсь сделать mod libs; в scene.rs

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{};

сцены / scene.rs

mod libs; // errors
pub struct Sphere {
    pub center: libs::components::Point
}
pub struct Scene {}

сцены / mod.rs

pub mod scene;
pub mod libs;

сцены / LIBS / components.rs

pub struct Point {}

сцены / LIBS / mod.rs

pub mod components;

1 Ответ

0 голосов
/ 05 ноября 2018

Вместо mod libs напишите use crate::scenes::libs.

Выпуск Rust 2018 немного изменил систему модулей, чтобы помочь прояснить такие ситуации.

Ваш каталог должен быть реструктурирован так:

main.rs
scenes.rs
scenes
|   libs.rs
|   libs
|   |   components.rs
|   scene.rs

Основным отличием здесь является то, что mod.rs файлы теперь извлекаются из их папок и имеют соответствующие имена.

PRE-RUST-2018 - НОЯБРЬ 2018

Вместо mod libs напишите use scenes::libs.

Сообщение об ошибке сообщает, что вы пытаетесь объявить о существовании подмодуля scene, который не существует. Вместо этого вы хотите импортировать (с use) модуль libs, к которому обращается scenes::libs из корня ящика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...