relmath-rs 0.7.0

Relation-first mathematics and scientific computing in Rust.
Documentation
//! Deterministic half-open temporal interval reasoning.

use relmath::temporal::Interval;

fn main() {
    let draft_review = Interval::new(9, 12).expect("expected valid interval");
    let approval = Interval::new(12, 15).expect("expected valid interval");
    let audit = Interval::new(11, 13).expect("expected valid interval");

    let full_shift = draft_review
        .coalesce(&approval)
        .expect("adjacent intervals should coalesce");
    let audit_window = full_shift
        .restrict_to(&audit)
        .expect("expected non-empty overlap");

    assert!(draft_review.contains(&9));
    assert!(!draft_review.contains(&12));
    assert!(!draft_review.overlaps(&approval));
    assert!(draft_review.is_adjacent_to(&approval));
    assert_eq!(
        audit_window,
        Interval::new(11, 13).expect("expected valid interval")
    );

    println!(
        "full shift: {:?}, audit overlap: {:?}",
        full_shift, audit_window
    );
}