一年弱使用してきていまだにその挙動について上手く整理できておらずどことなく苦手意識がありました。生成されどのように最終的な結果が得られるのかはあまりイメージできていませんでした。向き合うために本実装から必要最低限のみを抽出した実装を自分で作ってみようと思います。できるだけ本実装の処理を外れないように、でも性能的な面やエラーハンドリングを無視することで単純な例にすることを目指します。トレイトはここで定義されています。説明がわかりやすいと思うので引用させて頂きます。FutureとPromiseは非同期プログラミングにおいて、終了しているかどうかわからない処理結果を抽象化した型です。Futureは未来の結果を表す型です。Promiseは一度だけ、成功あるいは失敗を表す、処理または値を設定することでFutureに変換できる型です。定義することができます。いうトレイトを作成します。渡されますが、そこはあとからの対応として一旦無視します。計算が完了したときに何をしたいのかを定義するためのメソッドかなと推測できます。して独自に定義します。変換できるという性質を持つ型でした。渡した値を設定できたかを返すと捉えれば理解できると思います。実装はすぐに与えることができます。定義されていることがわかります。