1 个不稳定发布版
0.1.0 | 2023年3月6日 |
---|
#20 in #indexed
8KB
117 行
indexed-vector
一个Rust库,实现了可以指定函数进行索引的向量容器。
实现的结构体
HashIndexedVector
使用HashMap
实现了一个简单的索引向量BTreeIndexedVector
使用BTreeMap
实现了一个索引向量,也支持范围查询。
示例
use indexed_vector::{BTreeIndexedVector, HashIndexedVector, IndexedVector};
#[derive(Clone, Debug)]
struct User {
name: String,
age: u16,
}
fn main() {
let users = vec![
User {
name: "Tom".to_owned(),
age: 20,
},
User {
name: "Jane".to_owned(),
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<_>>());
}