Future
前の章では Future について多く話してきました。Future は Rust の async プログラミングにおける重要な要素です!この章では、Future とは何か、どのように動作するのか、そして Future を直接扱うためのライブラリについて、いくつかの詳細に踏み込んでいきます。
Future トレイトと IntoFuture トレイト
- Future
- Output 関連型
- ここでは実質的な詳細は扱わない。ポーリングは次のセクションで扱い、Pin、executor/waker に関する高度なセクションを参照する
- IntoFuture
- 使用方法 - 一般的な使い方、await 内での使い方、async ビルダーパターン(使用する際の長所と短所)
- Future のボックス化、
Box<dyn Future>、以前は一般的で必要だったが、再帰などを除いて現在ではほとんど必要ないこと
ポーリング
- それが何であり、誰が行うのか、Poll 型
- ready は最終状態である
- await とどのように関係するか
- drop = キャンセル
- Future、したがってタスクについて
- async プログラミング全般への影響
- キャンセル安全性に関する章への参照
Fuse 化
futures-rs クレート
- 歴史と目的
- stream の章を参照
- executor やその他の低レベルな Future 関連のものを書くためのヘルパー
- pinning とボックス化
- 部分的なランタイムとしての executor(リファレンスの代替ランタイムを参照)
- TryFuture
- 便利な Future: pending、ready、ok/err など
- FutureExt 上のコンビネーター関数
- Tokio 関連のものに対する代替
- 関数
- IO トレイト
futures-concurrency クレート
https://docs.rs/futures-concurrency/latest/futures_concurrency/