im_interval_tree 0.1.1

An immutable data structure for storing and querying a collection of intervals
Documentation
  • Coverage
  • 100%
    10 out of 10 items documented7 out of 9 items with examples
  • Size
  • Source code size: 27.66 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 3.09 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Links
  • jgblight/im_interval_tree
    7 2 3
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • jgblight

im_interval_tree

An immutable data structure for storing and querying a collection of intervals

use std::ops::Bound::*;
use im_interval_tree::{IntervalTree, Interval};

// Construct a tree of intervals
let tree : IntervalTree<u8> = IntervalTree::new();
let tree = tree.insert(Interval::new(Included(1), Excluded(3)));
let tree = tree.insert(Interval::new(Included(2), Excluded(4)));
let tree = tree.insert(Interval::new(Included(5), Unbounded));
let tree = tree.insert(Interval::new(Excluded(7), Included(8)));

// Query for overlapping intervals
let query = tree.query_interval(&Interval::new(Included(3), Included(6)));
assert_eq!(
    query.collect::<Vec<Interval<u8>>>(),
    vec![
        Interval::new(Included(2), Excluded(4)),
        Interval::new(Included(5), Unbounded)
    ]
);

// Query for a specific point
let query = tree.query_point(&2);
assert_eq!(
    query.collect::<Vec<Interval<u8>>>(),
    vec![
        Interval::new(Included(2), Excluded(4)),
        Interval::new(Included(1), Excluded(3))
    ]
);