indexmap-rs/indexmap

Provide two implementations: `HashIndexMap` and `BTreeIndexMap`.

Closed this issue · 1 comments

Adding a BTreeIndexMap has some nice benefits like the Hash, PartialOrd and Ord implementations. I think it would be a great addition to this library as it would even more mirror the standard library. I considered creating a dedicated library for this data-structure, but I think it would fit in here.

I think that could be interesting, but it would require a significantly different implementation, so I don't think it would be worth keeping in the same crate.

We used to have a bespoke hash-table implementation in indexmap, and later switched to hashbrown::raw::RawTable since that still allowed us to use our custom way of hashing/lookup/etc. There's nothing like that for a custom BTreeMap that I'm aware of, and the standard library code is sufficiently complex (and unsafe) that I personally would not be eager to duplicate that with modifications.

If you think it's easier than I imagine, please explain, otherwise I think you should go ahead with an independent crate.