An indexable LinkedHashMap. Written in Rust.
Bring your own ordering data structure. Uses the standard library's HashMap
.
Vec
and BinaryHeap
are supported out of the box.Keys
trait at indexedlinkedhashmap::traits::Keys
.Vec
for keys, you can index easily.BinaryHeap
for keys, it doesn't make much sense to index on certain operations.
ins.set(None, value)
.```rust
fn main() {
let mut ins = IndexedLinkedHashMap::
assert!(ins.remove("k") == None);
assert!(ins.len() == 0);
assert!(ins.keys().len() == 0);
assert!(ins.values().len() == 0);
ins.set("k", 1);
assert!(
ins.remove("k")
== Some(IndexedLinkedHashMapValue {
index: Some(0),
value: 1
})
);
assert!(ins.len() == 0);
assert!(ins.keys().len() == 0);
assert!(ins.values().len() == 0);
} ```
```rust
fn main() {
let mut ins = IndexedLinkedHashMap::
ins.set("k", 1);
assert!(ins.len() == 1);
assert!(ins.keys().len() == 1);
assert!(ins.values().len() == 1);
assert!(ins.get("k") == Some(&1));
} ```
```rust
struct Line2D { id: String, p1: usize, p2: usize, }
fn main() {
let mut ins = IndexedLinkedHashMap::
ins.set(line.to_owned().id, line);
} ```
```rust use std::collections::BinaryHeap;
fn main() {
let mut ins = IndexedLinkedHashMap::
assert!(ins.at(Some(1)) == Some(&true));
} ```