κeenです。最近Futureと一口にいってもいくつか種類があるなと気付いたのでRustのfutures-rsに実装されているFutureの挙動を紐解こうと思います。 イベント駆動IO TCPサーバをノンブロッキングに書こうとすると、思いの他大変です。 ブロックせずにIOできるタイミングまで処理を溜めておいて、できるときに読み書きします。ブロックしないタイミングをみつけるのも一苦労なので大抵ライブラリに頼ってライブラリからイベントを通知してもらいます。Rustにはmioというライブラリがあります。 さて、これイベントの発見は書かなくてよくなりましたが、まだつらいです。リクエストがないのにレスポンスを返せる訳もないので処理とイベントに依存関係があって、「read readyイベントでデータを読み取って、足りれば処理開始、足りなければまだ読み取る。処理が終わればwrite readyイベントを
![ステートマシン抽象化としてのFuture | κeenのHappy Hacκing Blog](https://cdn-ak-scissors.b.st-hatena.com/image/square/0a23bd9dde2ae17a5d93eab7846b9ceb05be50fe/height=288;version=1;width=512/https%3A%2F%2Fkeens.github.io%2Fimages%2Fogp%2Fpost%2Fsute_tomashinchuushoukatoshitenofuture.png)