user/
user.rs

1use indexed_vector::{BTreeIndexedVector, HashIndexedVector, IndexedVector};
2
3#[allow(dead_code)]
4#[derive(Clone, Debug)]
5struct User {
6    name: String,
7    age: u16,
8}
9
10fn main() {
11    let users = vec![
12        User {
13            name: "Tom".to_owned(),
14            age: 20,
15        },
16        User {
17            name: "Jane".to_owned(),
18            age: 20,
19        },
20        User {
21            name: "Ivan".to_owned(),
22            age: 30,
23        },
24    ];
25
26    let hash_vec = HashIndexedVector::new(users.clone(), |user: &User| user.age);
27    // Tom and Jane
28    dbg!(hash_vec.search(&20).collect::<Vec<_>>());
29    // Ivan
30    dbg!(hash_vec.search(&30).collect::<Vec<_>>());
31
32    let btree_vec = BTreeIndexedVector::new(users, |user: &User| user.age);
33    // Tom, Jane and Ivan
34    dbg!(btree_vec.search_range(10..40).collect::<Vec<_>>());
35}