Ошибка импорта ржавчины - PullRequest
0 голосов
/ 01 июля 2018

У меня есть проект Rust, сделанный cargo init:

dir
 |-src
    |-main.rs
    |-settings.rs
    |-functions.rs

у меня в settings.rs:

use ::functions;

но при компиляции я получаю ошибку:

error[E0432]: unresolved import `functions`
--> src/settings.rs:3:5
  |
3 | use ::functions;
  |     ^^^^^^^^^^^ no `functions` in the root

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Похоже, вы путаете роль корневого пространства имен. use ::functions; означает что-то немного отличное от use functions;

Давайте рассмотрим структуру вашего проекта:

project
├── src
|   ├── settings.rs
|   ├── functions.rs
|   └── main.rs
└── Cargo.toml

Когда вы находитесь в пределах settings.rs, остальные модули находятся на том же уровне, поэтому use functions; обращается к модулю functions.

Если вы хотите обратиться к модулю functions через корневое пространство имен, тогда полный путь будет выглядеть следующим образом ::project::functions, а объявление use будет use ::project::functions;.

0 голосов
/ 02 июля 2018

В ваших комментариях вы заявляете:

Я не хочу использовать [mod functions], потому что он будет искать settings / functions.rs, а я не хочу

Вы пробовали это? Предполагая, что вы объявили модуль правильно ... это точно , что вы хотите.

main.rs:

mod functions;
mod settings;

fn main() { 
    ...
}

settings.rs:

use functions;

pub fn something() {
    functions::some_function_here();
}

Если это не работает .. значит, в описании вашей проблемы чего-то не хватает.

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