Rust の Future が思ったより複雑。とりあえず futures が持っている関数を自前で実装してみようと Future -> Context -> Waker ... とドキュメントを辿っていくと、妙にローレベルなものが出現する。
core::task::RawWaker - Rust
core::task::RawWakerVTable - Rust
dyn trait を使わずなぜか vtable を自作している。それ以前に Context は Waker を保持しているだけで存在意義がよく分からない。ライフタイム関連かと思ったけれど、そうでもない気がする。