KeyedFuturesUnordered: refactor so that futures are accessible
Instead of wrapping FuturesUnordered
, which doesn't support efficient
access to its internal futures, keep the futures themselves in our own
HashMap, and use a custom Waker to be notified which futures are ready
to be polled.
This allows us to return the original future on remove
, and add get
and get_mut
.
I'm planning to propagate this flexibility upward into StreamPollSet
and StreamMap
. This will let us wrap the Sender
s with tightly coupled
data (such as flow control), and maybe even the whole stream entries (per
!2319 (comment 3057237)),
making it easier to encapsulate some of the bookkeeping.
Progress on #1421 (closed), #1397 (closed)