odsek 0.1.0

Lazy, pull-based composition of mathematical interval sets with open/closed endpoints, no_std-compatible.
Documentation
//! Union two interval sets.
//!
//! Each output interval carries `(Option<A>, Option<B>)`, so callers can tell
//! which input(s) covered each region.
//!
//! Run with: `cargo run --example union`

use odsek::*;

fn main() {
    // [1, 3] tagged "A"
    let ia = Interval::new(EndpointOC::Closed(1), EndpointOC::Closed(3), "A");
    // (2, 4) tagged "B"
    let ib = Interval::new(EndpointOC::Open(2), EndpointOC::Open(4), "B");

    let isa = IntervalsSingle::new(ia);
    let isb = IntervalsSingle::new(ib);

    // Union: [1,2] -> (Some("A"), None), (2,3] -> (Some("A"), Some("B")), (3,4) -> (None, Some("B"))
    for iv in or(isa, isb).into_iter() {
        println!("{:?}", iv);
    }
}