A Rust library that implements vector container that can be indexed with specified function.
HashIndexedVector
implements a simple indexed vector with HashMap
BTreeIndexedVector
implements an indexed vector with BTreeMap
. It also supports range query.```rust use indexed_vector::{BTreeIndexedVector, HashIndexedVector, IndexedVector};
struct User { name: String, age: u16, }
fn main() { let users = vec![ User { name: "Tom".toowned(), age: 20, }, User { name: "Jane".toowned(), age: 20, }, User { name: "Ivan".to_owned(), age: 30, }, ];
let hash_vec = HashIndexedVector::new(users.clone(), |user: &User| user.age);
// Tom and Jane
dbg!(hash_vec.search(&20).collect::<Vec<_>>());
// Ivan
dbg!(hash_vec.search(&30).collect::<Vec<_>>());
let btree_vec = BTreeIndexedVector::new(users, |user: &User| user.age);
// Tom, Jane and Ivan
dbg!(btree_vec.search_range(10..40).collect::<Vec<_>>());
} ```