int_interval_set/int_co_set/
impls_for_predicates.rs1use super::*;
2
3impl<I: IntCO> IntCOSet<I> {
4 #[inline]
8 pub fn contains_point(&self, x: I::CoordType) -> bool {
9 let i = self.intervals.partition_point(|iv| iv.start() <= x);
10 i != 0 && self.intervals[i - 1].contains(x)
11 }
12
13 #[inline]
21 pub fn contains_interval(&self, query: I) -> bool {
22 let i = self
23 .intervals
24 .partition_point(|iv| iv.start() <= query.start());
25
26 i != 0 && self.intervals[i - 1].contains_interval(query)
27 }
28
29 #[inline]
33 pub fn intersects_interval(&self, query: I) -> bool {
34 let i = self
35 .intervals
36 .partition_point(|iv| iv.end_excl() <= query.start());
37
38 self.intervals.get(i).is_some_and(|iv| iv.intersects(query))
39 }
40}
41
42#[cfg(test)]
43mod tests;