为什么我需要使用self :: core :: ops?

yon*_*ong 8 rust

我试图使用Mulcore.

这是由编译器建议的并且有效:

extern crate core;

use self::core::ops::Mul;
Run Code Online (Sandbox Code Playgroud)

但为什么不呢

extern crate core;

use core::ops::Mul;
Run Code Online (Sandbox Code Playgroud)

工作?

我收到了错误 error: unresolved import `core::ops::Mul`. Did you mean `self::core::ops`?

Chr*_*gan 14

一个extern crate x;加载x到当前的命名空间.use语句是绝对路径,除非它们以它们开头self::,所以如果你把你的extern crate core;任何地方放在箱子根,那么你需要指定一个绝对路径或使用self::.

mod foo {
    mod bar {
        extern crate core;
        use foo::bar::core::ops::Mul;
        // or `use self::core::ops::Mul;`
        // or even `use super::bar::core::ops::Mul;` if you’re mad
        // but not `use core::ops::Mul;`.
    }
}
Run Code Online (Sandbox Code Playgroud)

......但作为一般规则,你不应该core直接使用.所有稳定的东西都可以std自动包含在内.