Runtimes

「執行環境」支援以非同步方式執行作業 (「反應器」),並負責執行 Future (「執行器」)。Rust 沒有「內建」執行階段,但提供多種選項:

  • Tokio:效能良好,具有完善的功能生態系統,例如適用於 HTTP 的 Hyper,或適用於 gRPC 的 Tonic
  • async-std:目標是成為「async 的 std」,並在 async::task 中含有基本執行環境。
  • smol:簡單輕量

許多大型應用程式都有專屬的執行環境。例如,Fuchsia 已有一個執行環境。

  • 請注意,在列出的執行環境中,Rust Playground 只支援 Tokio。Playground 也不允許任何 I/O,因此大部分有趣的非同步作業皆無法在 Playground 中執行。

  • 除非接受執行器輪詢,否則 Future 不會執行任何作業 (甚至不會啟動 I/O 作業),因此 Future 是「惰性」的。這一點與 JS Promise 不同。舉例來說,後者即使從未使用過,仍會執行至完成為止。