問題の本質は object safety のせいで Box<Clone + FnOnce(...)> ができないという点と、 async まわりで型が余計に複雑になっているといった辺りなのだが、これ以上シンプルに書けるものなのか……?
axum と tower のソース読んでたせいで引っ張られて本来必要な構成よりも余計に複雑にしてしまった可能性もあるので、もっとシンプルに書けるものかどうか知りたい
どうあれ FnOnce と Clone を合わせようと思ったら type erasure は必要で、そこで raw pointer + vtable を使うかオレオレ trait を使うかあるいは他の手段か、いろいろ選択の余地があるはずなんだけど、はてさて