ランタイム
_runtime_は非同期な演算(reactor)のサポートを提供し、また、futureを実行すること(executor)を担当しています。Rustには「ビルトイン」のランタイムはありませんが、いくつかのランタイムの選択肢があります:
- Tokio: performant, with a well-developed ecosystem of functionality like Hyper for HTTP or Tonic for gRPC.
- async-std: aims to be a "std for async", and includes a basic runtime in
async::task
. - smol: simple and lightweight
いくつかのより巨大なアプリケーションは、独自のランタイムを備えています。例えばFuchsiaはそのようなものをすでに備えています。
This slide and its sub-slides should take about 10 minutes.
-
上で挙げられたランタイムのうち、TokioのみがRustプレイグラウンドでサポートされています。このプレイグラウンドではいかなる入出力操作も許可されていないため、大抵の興味深い非同期のあれこれは、プレイグラウンドで実行することはできません。
-
Futureは、ポーリングを行うエグゼキュータの存在なしには何も行わない(入出力操作さえ始めない)という点で「怠惰」です。例えば、これは、エグゼキュータがなくとも最後まで実行されるJavaScriptのPromiseとは異なります。