#indexed #container #hash-map #range #btree-map #vector

indexed-vector

一个Rust库,实现了可以指定函数进行索引的向量容器。

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<_>>());
}

无运行时依赖