rangetools 0.1.4

Extending the Rust Range structs found in std::ops
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
use crate::{LowerBoundedSet, RangeComplement, RangeIntersection, Rangetools, UpperBoundedSet};

impl<T> RangeComplement<LowerBoundedSet<T>> for UpperBoundedSet<T>
where
    T: Copy + Ord,
{
    fn complement(self) -> LowerBoundedSet<T> {
        self.ranges.ranges.into_iter().fold(
            RangeComplement::complement(self.upper_bounded_range).to_set(),
            |acc, range| RangeIntersection::intersection(acc, RangeComplement::complement(range)),
        )
    }
}