Runtimes

运行时 支持异步执行操作(即 _反应器),并负责执行 Future (即 _执行器)。Rust 没有 “内置”运行时,但有以下几个选项可供选择:

  • Tokio:性能出色,拥有成熟的功能生态系统,例如适用于 HTTP 的 Hyper 或 适用于 gRPC 的 Tonic
  • async-std:旨在成为 “异步编程的标准库”,并在 async::task 中包含基本运行时。
  • smol:简单且轻量

有些大型应用具有自己的运行时。例如,Fuchsia 已有一个运行时。

  • 请注意,在列出的运行时中,Rust Playground 仅支持 Tokio。该 Playground 也不支持任何 I/O 操作,因此大多数有趣的异步操作无法在该平台上运行。

  • Future 是 “惯性”的,除非有执行程序对其进行轮询,否则它们不会执行任何操作(甚至不会启动 I/O 操作)。这与 JS promise 不同,例如,后者即使从未使用也会完成运行过程。