use Arc;
use IntCO;
/// Immutable canonical closed-open integer interval set.
///
/// Internally this is an `Arc<[I]>`, so cloning an `IntCOSet<I>` is cheap.
///
/// Canonical invariant:
///
/// ```text
/// for every adjacent pair a, b:
/// a.end_excl() < b.start()
/// ```
///
/// The strict `<` means both overlap and adjacency have already been merged.
///
/// `I::Ord` is expected to follow interval boundary ordering, consistent with
/// the primitive interval implementations provided by `int_interval`.