imintervaltree

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

```rust use std::ops::Bound::*; use imintervaltree::{IntervalTree, Interval};

// Construct a tree of intervals let tree : IntervalTree = 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.queryinterval(&Interval::new(Included(3), Included(6))); asserteq!( query.collect::>>(), vec![ Interval::new(Included(2), Excluded(4)), Interval::new(Included(5), Unbounded) ] );

// Query for a specific point let query = tree.querypoint(&2); asserteq!( query.collect::>>(), vec![ Interval::new(Included(2), Excluded(4)), Interval::new(Included(1), Excluded(3)) ] ); ```