我在src目录下有main.rs和bear.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
)的情况下可能出现的歧义。