在多个文件中使用模块时无法编译项目:"imports can only refer to extern crate names passed with --extern"



我在src目录下有main.rsbear.rs。每次编译时,编译器都指向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社区达成共识,或者除了文档中的不便建议之外,我现在还能做些什么吗?

更改

use bear::factory::make_bear;

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

这是《铁锈》2018年版的一个变化。我不会在这个页面上重新创建所有内容,但我可以说,这种更改的动机有两个,一个是停止要求extern crate bear;指令,同时也消除了在本地模块名称为bear并且依赖于外部机箱(也称为bear)的情况下可能出现的歧义。

最新更新