«неразрешенный импорт» при вызове функций через модули в Rust 2018 - PullRequest
0 голосов
/ 30 сентября 2018

Вот дерево файлов моего демонстрационного проекта:

.
├── Cargo.lock
├── Cargo.toml
├── src
    ├── lib.rs
    ├── ooo.rs
    └── xxx.rs

В lib.rs:

mod xxx;
mod ooo;

В xxx.rs:

pub fn hello() {
    println!("hello!");
}

В ooo.rs:

use xxx::hello;

pub fn world() {
    hello();
    println!("world!");
}

Когда я выполняю cargo build, это не удается:

   Compiling ooo v0.1.0 (/Users/eric/ooo)
error[E0432]: unresolved import `xxx`
 --> src/ooo.rs:1:5
  |
1 | use xxx::hello;
  |     ^^^ Could not find `xxx` in `{{root}}`

Я знаю, что если я использую super::ooo::hello вместо ooo::hello, это удастся, но есть ли способ, которым я могу использовать ooo::hello и добиться успеха?

Например, это работает в проекте redis-rs в src/client.rs, где connection и types являютсямодулей в этом ящике:

use connection::{connect, Connection, ConnectionInfo, ConnectionLike, IntoConnectionInfo};
use types::{RedisFuture, RedisResult, Value};

1 Ответ

0 голосов
/ 30 сентября 2018

Вы, кажется, используете бета-версию Rust версии 2018 года, а не стабильную версию.В новой версии вам необходимо явно пометить импорт из текущего ящика с помощью ключевого слова crate:

use crate::xxx::hello;

См. раздел "Ясность пути" в руководстве по выпуску дляболее подробная информация.

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