为什么 std::task、core::task 和 tokio::task 都存在?

Eva*_*oll 5 asynchronous task rust

Rust 似乎有 3 种不同类型的任务,

为什么存在这三个任务?

She*_*ter 6

这些是模块,因此它们共存并具有相同名称的事实并不真正意味着什么。任何任意的板条箱都可以创建一个task模块(或类型或特征或......)。这就是为什么大多数编程语言都有以 \xe2\x80\x94 开头的命名空间,这样我们就可能会发生名称冲突

\n
    \n
  1. std::task core::task,以不同的名称重新导出。这包含创建期货本身的构建模块以及驱动它们的执行者。极少数人需要使用这些类型。

    \n
  2. \n
  3. tokio::task允许创建 Tokio任务:“异步绿色线程”。这些是异步世界中线程的语义等价物。有关更多详细信息,请参阅Tokio 网站有关生成任务的部分。

    \n

    async_std::task是同一件事,但执行者不同。async-std 任务与 Tokio 任务不同,并且不可互换。

    \n
  4. \n
  5. futures::task是标准库模块和执行器模块之间的一种大杂烩。这是因为它的历史 \xe2\x80\x94 futures 箱是 futures 的实现,然后才被移入标准库。现在它包含标准库类型的重新导出以及一些用于创建执行器的进一步工具以及 futures 库提供的在执行器上生成任务的特征。

    \n
  6. \n
\n

也可以看看:

\n\n