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)