Skip to main content

intersection/
intersection.rs

1//! Intersect two interval sets.
2//!
3//! Run with: `cargo run --example intersection`
4
5use odsek::*;
6
7fn main() {
8    // [1, 3] tagged "A"
9    let ia = Interval::new(EndpointOC::Closed(1), EndpointOC::Closed(3), "A");
10    // (2, 4) tagged "B"
11    let ib = Interval::new(EndpointOC::Open(2), EndpointOC::Open(4), "B");
12
13    let isa = IntervalsSingle::new(ia);
14    let isb = IntervalsSingle::new(ib);
15
16    // Intersection: (2, 3] tagged ("A", "B")
17    let result = and(isa, isb).into_iter().collect::<Vec<_>>();
18
19    for iv in &result {
20        println!("{:?}", iv);
21    }
22
23    assert_eq!(result.len(), 1);
24    assert_eq!(
25        result[0],
26        Interval::new(EndpointOC::Open(2), EndpointOC::Closed(3), ("A", "B"))
27    );
28}