Невозможно скомпилировать проект при использовании модулей в нескольких файлах: «импорт может ссылаться только на имена внешних ящиков, переданные с --extern» - PullRequest
0 голосов
/ 27 декабря 2018

У меня есть main.rs и bear.rs в каталоге src .Каждый раз, когда я компилирую, компилятор указывает на E0658 .Я прочитал документы для E0658, и это говорит мне, что это нестабильная функция.

main.rs

mod bear;

use bear::factory::make_bear;

fn main() {
    println!("Hello, world!");
    let bear = make_bear();
}

bear.rs

pub mod factory {
    pub fn make_bear() -> Bear {
        // code to instantiate Bear struct.
    }    
}

Когда я компилирую этот код, я получаю этоот компилятора:

error[E0658]: imports can only refer to extern crate names passed with `--extern` on stable channel (see issue #53130)
  --> src/main.rs:1:5
   |
1  |   use bear::factory::make_bear;
   |       ^^^^
...
8  | / mod bear {
9  | |     pub mod factory {
10 | |         pub fn make_bear() -> Bear {
11 | |             // code to instantiate Bear struct.
12 | |         }
13 | |     }
14 | | }
   | |_- not an extern crate passed with `--extern`
   |

Нужно ли ждать консенсуса среди сообщества Rust, или я могу что-то сделать прямо сейчас, кроме неудобного предложения в документации?

1 Ответ

0 голосов
/ 27 декабря 2018

Изменение

use bear::factory::make_bear;

на

use crate::bear::factory::make_bear;

Это было изменение в выпуске Rust 2018 года.Я не буду воссоздавать все на этой странице, но я могу сказать, что мотивация для этого изменения двояка, нужно перестать требовать директивы extern crate bear;, а также устранить двусмысленности, которые могут возникнуть в случае, если у вас есть обаимя локального модуля bear, а также зависимость от внешнего ящика, также называемого bear.

...