[][src]Crate sortedvec

This crate exposes macros that generate data structures on Ord keys that provide faster lookups than regular Vecs (O(log(n)) vs O(n)) and is simpler and more memory efficient than hashmaps. It is ideal for small lookup tables where insertions and deletions are infrequent.

Example

use sortedvec::sortedvec;

sortedvec! {
    struct SortedVec {
        fn derive_key(x: &u32) -> u32 { *x }
    }
}

let unsorted = vec![3, 5, 0, 10, 7, 1];
let sorted = SortedVec::from(unsorted.clone());

// linear search (slow!)
let unsorted_contains_six: Option<_> = unsorted.iter().find(|&x| *x == 6);
assert!(unsorted_contains_six.is_none());

// binary search (fast!)
let sorted_contains_six: Option<_> = sorted.find(&6);
assert!(sorted_contains_six.is_none());

Modules

example

An example of a data structure defined using the sortedvec! macro. The structure is generated by the following code.

Macros

sortedvec

A macro that defines a sorted vector data structure.

sortedvec_slicekey

A macro that defines a specialized sorted vector data structure on slice keys.