indexed-vector 0.1.0

A Rust library that implements vector container that can be indexed with specified function.
Documentation
  • Coverage
  • 71.43%
    5 out of 7 items documented1 out of 1 items with examples
  • Size
  • Source code size: 9.48 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 1.76 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Links
  • lucidfrontier45/indexed-vector
    1 0 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • lucidfrontier45

indexed-vector

A Rust library that implements vector container that can be indexed with specified function.

Implemented Structs

  • HashIndexedVector implements a simple indexed vector with HashMap
  • BTreeIndexedVector implements an indexed vector with BTreeMap. It also supports range query.

Example

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