You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何无需导入即可直接使用tokio::main过程宏?

为什么无需导入就能直接使用tokio::main过程宏?

我写了这段能正常编译的Rust代码:

#[tokio::main]
async fn main() {

}

我好奇的是,为什么不用提前use导入,就能直接用这个过程宏?


原因其实很简单,这是Rust路径引用的基本特性:

  • crate名是全局可见的:只要你在Cargo.toml里声明了对tokio的依赖,tokio这个crate名就会成为全局可用的路径起点。你可以直接通过crate名::标识符的完整限定路径来引用里面的任何项(包括过程宏),不需要额外的use语句。
  • 这和你直接写std::vec::Vec而不用use std::vec::Vec是一个道理——完整路径本身就明确了要引用的项的位置,Rust编译器能直接找到它。
  • 反过来,如果想省略tokio::前缀直接写#[main],那才需要先写use tokio::main;来把这个宏导入当前作用域。

内容的提问来源于stack exchange,提问作者rodman10

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 17:33:08