Skip to main content

normalize_periods

Function normalize_periods 

Source
pub fn normalize_periods<T: TimeInstant>(
    periods: &[Interval<T>],
) -> Vec<Interval<T>>
Expand description

Sort periods by start time and merge overlapping/adjacent intervals.

Produces a sorted, non-overlapping list suitable for complement_within and intersect_periods.

ยงExamples

use tempoch::{normalize_periods, Interval, ModifiedJulianDate};

let periods = vec![
    Interval::new(ModifiedJulianDate::new(5.0), ModifiedJulianDate::new(8.0)),
    Interval::new(ModifiedJulianDate::new(0.0), ModifiedJulianDate::new(3.0)),
    Interval::new(ModifiedJulianDate::new(2.0), ModifiedJulianDate::new(6.0)),
];
let merged = normalize_periods(&periods);
assert_eq!(merged.len(), 1); // [0, 8)