为什么 actix_rt 可以直接在代码中使用,即使它没有被声明?

Why can actix_rt be used directly in the code, even if it wasn't declared?

我只是在Cargo.toml中添加了actix_rt,并没有在第一行用use关键字声明。然后我可以在代码中使用它。我知道一些常用函数包含在 Rust 的前奏中,但我不知道第 3 方库可以做一些事情。我可以创建一个这样的板条箱吗?

谁能告诉我原因,或者给我一些提示或一些参考链接?非常感谢。

[dependencies]
actix-rt = "0.2.5"
actix-web = "1.0.8"
use std::io;

fn main() -> io::Result<()> {
    let sys = actix_rt::System::new("basic");

    sys.run()
}

在 Rust 2018 版中,extern crate is no longer required。将 crate 作为依赖项允许它作为模块访问。您无需执行任何操作即可像这样访问您的箱子。

这与标准库序曲有很大不同,后者use隐含地包含序曲中的所有项目(with use std::prelude::v1::*;)。使用 extern crate 或添加外部 crate 作为依赖项,必须限定类型、函数和特征。在您的示例中,您必须使用 actix_rt::System::new("basic") 而不是简单地 System::new("basic")。将此与 std::prelude::v1::Option 进行比较,后者可以用作没有任何前缀的 Option<T>