My first crate, MappedFutures, has been published! You can use it to run futures out of order, and to insert, delete, cancel, or get_mut them by key.
https://crates.io/crates/mapped\_futures
This project was very difficult, since it does include unsafe, as it is an extended version of FuturesUnordered. That library is excellent, and kudos to its authors, but it allows only for futures to be pushed in and completed out of order. They can be mutated with an iterator, but that is not feasible if you only want to mutate 1 future out of 1000.
MappedFutures crate includes the MappedFutures type, as well as MappedStreams and BiMultiMapFutures.
I was inspired to write this crate because I searched for a library that had its features, but only found posts from other people who also wanted them.
MappedFutures still has a few things that could be added, but its been developed to the point where I'm now convinced of its soundness, and it has the basic features that I actually require for my use-case. Feel free to suggest more features/improvements. With the exception of unsoundness concerns I can't guarantee I'll implement suggestions, but I would definitely review a PR or two.
EDIT: Note that all versions before the current one have been yanked due to an unsoundness bug that was causing use-after-free.