はじめに
プログラムが、たとえばファイルの読み込み、サーバーからのデータ取得、タイマーの待機など、時間のかかる何かを要求するとき、選択肢は 2 つあります。何もせずに座って待つか、待っている間に別のことをするかです。
Blocking は、座って待つことを意味します。結果が返ってくるまで、プログラムは停止します。
その間は、ほかに何も起こりません。
Non-blocking (async) は、プログラムがタスクを開始し、その場を離れ、結果の準備ができたら戻ってきて受け取ることを意味します。待っている間、ほかの作業を進めることができます。
Rust では、async コードは 2 つのキーワードを使って記述します。
asyncは、関数をノンブロッキングとして示します。これを呼び出しても、すぐには実行されません。代わりに、実行の準備ができたタスクが返されます。.awaitは、制御を戻して「このタスクを実行し、完了したら戻ってきてください」と伝える場所です。