Skip to main content

int_interval_set/int_co_set/
impls_for_accessors.rs

1use super::*;
2
3impl<I: IntCO> IntCOSet<I> {
4    /// Returns the number of canonical intervals.
5    #[inline]
6    pub fn interval_count(&self) -> usize {
7        self.intervals.len()
8    }
9
10    /// Returns whether the set contains no intervals.
11    #[inline]
12    pub fn is_empty(&self) -> bool {
13        self.intervals.is_empty()
14    }
15
16    /// Returns the canonical interval slice.
17    ///
18    /// The returned slice is sorted, non-overlapping, and contains no
19    /// adjacent intervals.
20    #[inline]
21    pub fn as_slice(&self) -> &[I] {
22        &self.intervals
23    }
24
25    /// Iterates over canonical intervals by value.
26    #[inline]
27    pub fn iter_intervals(&self) -> impl Iterator<Item = I> + '_ {
28        self.intervals.iter().copied()
29    }
30}
31
32#[cfg(test)]
33mod tests;