Our great sponsors
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
`multi_index_map` is designed to allow storage and retrieval of data through multiple indexes, along the lines of in-memory relational database. This is useful in a few situations, notably when you want to implement structures like a bi-directional map (ie. searchable either for key or value), or sets with multiple iteration orders. There exist great crates for bi-directional maps already eg. [bimap-rs](https://github.com/billyrieger/bimap-rs/), however MultiIndexMap goes further and removes the distinction between key and value, such that as many keys as necessary can be added and searched for. Multiple iteration orders can be specificed using multiple `ordered_unique` keys, and iterating by these keys. Non-unique keys are also supported, so more than one element can be retrieved from a single lookup. This crate was inspired by [Boost's C++ Multi-Index Containers](https://www.boost.org/doc/libs/1\_80\_0/libs/multi\_index/doc/index.html), but completely redesigned for a more idiomatic Rust API. We've got to v0.4.0 now, and the main features have been fleshed out enough for me to feel comfortable announcing this. There is still lots to do, and I'm welcoming PRs from anyone who wishes to contribute. The [Future Work](https://github.com/lun3x/multi\_index\_map#future-work) section explains the general direction I am planning on going in.