Asynchronous Programming in Rust
Rust では、async fnがfutureを返す非同期関数を作ってくれます。
async fn内では.awaitを使うことで、ほかのFutureトレイトを実装する別の型の完了を待つことができます。
code:rs
// 両方のfutureを同時に完了するまで実行します。
join!(future_one, future_two);
code:rs
let song = learn_song().await;
これは言語機能...なのかな?
このpoll関数を呼び出すことでFutureを進めることが出来ます、これにより、Futureが可能な限り完了するようになります。Futureが完了するとPoll::Ready(result)を返し、未完了のときはPoll::Pendingを返して、Futureがさらに進む準備ができたときにwake()関数が呼び出されるように準備します。
poll関数が毎フレーム実行されるupdateに近い
待機 (pending): 初期状態。成功も失敗もしていません。
履行 (fulfilled): 処理が成功して完了したことを意味します。
拒否 (rejected): 処理が失敗したことを意味します。