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

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/