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;