我已经写了以下代码,可以成功编译,

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

}

但我很好奇,为什么mainproc_宏可以直接使用,而不需要任何前奏或显式USE语句?

推荐答案

这是因为tokio::main是一个完整的路径,例如,您可以以相同的方式使用std::collections::HashMap.

use语句所做的只是将您使用的对象放入作用域,但cargo会自动将 crate 本身放入作用域.

对于早期版本的Rust,你必须写extern crate tokio;个或类似的东西,但这基本上已经是过go 的事情了.

请注意,您仍然需要在Cargo.toml的基础上再加tokio

Rust相关问答推荐

为什么父作用域中的变量超出了子作用域

程序退出后只写入指定管道的数据

在没有引用计数或互斥锁的情况下,可以从Rust回调函数内的封闭作用域访问变量吗?

替换可变引用中的字符串会泄漏内存吗?

Rust&;Tokio:如何处理更多的信号,而不仅仅是SIGINT,即SIGQUE?

`Pin`有没有不涉及不安全代码的目的?

铁 rust 中双倍或更多换行符的更好练习?

在生存期内将非静态可变引用转换为范围内的静态可变引用

程序在频道RX上挂起

如果变量本身不是None,如何返回;如果没有,则返回None&Quot;?

带引脚和不带引脚的比较功能

如何返回 struct 体中向量的切片

如何处理闭包中的生命周期以及作为参数和返回类型的闭包?

Rust 为什么被视为borrow ?

从 Rust 中的 if/else 中的引用创建 MappedRwLockWriteGuard

将原始可变指针传递给 C FFI 后出现意外值

有没有更好的方法来为拥有 DIsplay 事物集合的 struct 实现 Display?

火箭整流罩、tokio-scheduler 和 cron 的生命周期问题

如果返回类型是通用的,我可以返回 &str 输入的一部分吗?

如何在宏中的多个参数上编写嵌套循环?