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 不同,例如,后者即使从未使用也会完成运行过程。