Crate intervalmap

Crate intervalmap 

Source
Expand description

An interval set/map library inspired by Boost.Icl.

This crate provides two main data structures:

  • IntervalSet: A collection of non-overlapping intervals with automatic merging
  • IntervalMap: A mapping from intervals to values with split/merge behavior

§Examples

§IntervalSet

use intervalmap::IntervalSet;

let mut set = IntervalSet::new();
set.insert(0..10);
set.insert(5..15);  // Merges with [0, 10) to form [0, 15)

assert!(set.contains(7));
assert!(!set.contains(20));

§IntervalMap

use intervalmap::IntervalMap;

let mut map = IntervalMap::new();
map.insert(0..10, "first");
map.insert(5..15, "second");  // Splits: [0,5)->"first", [5,15)->"second"

assert_eq!(map.get(3), Some(&"first"));
assert_eq!(map.get(7), Some(&"second"));

§Using Macros

use intervalmap::{interval_set, interval_map};

let set = interval_set![0..10, 20..30];
assert!(set.contains(5));

let map = interval_map![(0..10) => "a", (20..30) => "b"];
assert_eq!(map.get(5), Some(&"a"));

Re-exports§

pub use interval_map::Entry;
pub use interval_map::IntervalMap;
pub use interval_map::OccupiedEntry;
pub use interval_map::VacantEntry;

Modules§

interval_map

Macros§

interval_map
Creates an IntervalMap from a list of range-value pairs.
interval_set
Creates an IntervalSet from a list of ranges.

Structs§

Interval
A half-open interval [start, end).
IntervalSet
A set of non-overlapping intervals with automatic merging.

Traits§

IndexType
A trait for types that can be used as interval indices.