int-interval-set 0.2.0

Integer half-open interval set structures built on top of int-interval.
Documentation
// -----------------------------------------------------------------------------
// This file is generated by `cargo run -p codegen -- --unsigned`.
// Do not edit manually.
// -----------------------------------------------------------------------------

mod builder;
mod set;

mod test_support {
    use int_interval::U128CO;

    use proptest::prelude::*;

    #[inline]
    pub(super) fn iv(start: u128, end_excl: u128) -> U128CO {
        U128CO::try_new(start, end_excl).unwrap()
    }

    pub(super) const MID_VALUE: u128 = u128::MAX / 2 + 1;

    pub(super) fn interval_pair() -> impl Strategy<Value = (u128, u128)> {
        (any::<u128>(), any::<u128>()).prop_filter_map("non-empty half-open interval", |(a, b)| {
            let start = a.min(b);
            let end_excl = a.max(b);

            (start < end_excl).then_some((start, end_excl))
        })
    }

    pub(super) fn build_from_vec(xs: Vec<(u128, u128)>) -> crate::U128COSet {
        let b = crate::U128COSetBuilder::new();

        for (start, end_excl) in xs {
            b.insert(iv(start, end_excl));
        }

        b.seal()
    }
}