Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

はじめに

プログラムが、たとえばファイルの読み込み、サーバーからのデータ取得、タイマーの待機など、時間のかかる何かを要求するとき、選択肢は 2 つあります。何もせずに座って待つか、待っている間に別のことをするかです。

Blocking は、座って待つことを意味します。結果が返ってくるまで、プログラムは停止します。 その間は、ほかに何も起こりません。

Non-blocking (async) は、プログラムがタスクを開始し、その場を離れ、結果の準備ができたら戻ってきて受け取ることを意味します。待っている間、ほかの作業を進めることができます。

Rust では、async コードは 2 つのキーワードを使って記述します。

  • async は、関数をノンブロッキングとして示します。これを呼び出しても、すぐには実行されません。代わりに、実行の準備ができたタスクが返されます。
  • .await は、制御を戻して「このタスクを実行し、完了したら戻ってきてください」と伝える場所です。