#interval-tree #algorithm #tree-structure #node #tree #true

no-std store-interval-tree

A balanced unbounded interval-tree in Rust with associated values in the nodes

5 releases (3 breaking)

0.4.0 Nov 22, 2022
0.3.1 Oct 14, 2022
0.3.0 Oct 14, 2022
0.2.0 Oct 13, 2022
0.1.0 Oct 13, 2022

#2130 in Data structures

Download history 95/week @ 2024-12-16 7/week @ 2024-12-23 6/week @ 2024-12-30 18/week @ 2025-01-06 32/week @ 2025-01-13 24/week @ 2025-01-20 56/week @ 2025-01-27 30/week @ 2025-02-03 29/week @ 2025-02-10 277/week @ 2025-02-17 256/week @ 2025-02-24 209/week @ 2025-03-03 156/week @ 2025-03-10 312/week @ 2025-03-17 189/week @ 2025-03-24 337/week @ 2025-03-31

1,001 downloads per month

MIT/Apache

93KB
1.5K SLoC

store-interval-tree

A balanced unbounded interval-tree in Rust with associated values in the nodes.

Based on rudac and bio.

Example

use store_interval_tree::IntervalTree;
use store_interval_tree::Interval;
use std::ops::Bound::*;

let mut interval_tree = IntervalTree::<usize, bool>::new();

interval_tree.insert(Interval::new(Excluded(0), Included(1)), true);
interval_tree.insert(Interval::new(Included(0), Excluded(3)), true);
interval_tree.insert(Interval::new(Included(6), Included(10)), true);
interval_tree.insert(Interval::new(Excluded(8), Included(9)), true);
interval_tree.insert(Interval::new(Excluded(15), Excluded(23)), true);
interval_tree.insert(Interval::new(Included(16), Excluded(21)), true);
interval_tree.insert(Interval::new(Included(17), Excluded(19)), true);
interval_tree.insert(Interval::new(Excluded(19), Included(20)), true);
interval_tree.insert(Interval::new(Excluded(25), Included(30)), true);
interval_tree.insert(Interval::new(Included(26), Included(26)), true);

let interval = Interval::new(Included(8), Included(26));
let iter = interval_tree.query_mut(&interval);

for mut entry in iter {
    *entry.value() = false;
}

Dependencies

~460KB