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 intervals = self.intervals.as_ref();
10 let i = intervals.partition_point(|iv| iv.start() <= x);
11
12 i != 0 && x < intervals[i - 1].end_excl()
13 }
14
15 #[inline]
23 pub fn contains_interval(&self, query: I) -> bool {
24 let i = self
25 .intervals
26 .partition_point(|iv| iv.start() <= query.start());
27
28 i != 0 && self.intervals[i - 1].contains_interval(query)
29 }
30
31 #[inline]
35 pub fn intersects_interval(&self, query: I) -> bool {
36 let i = self
37 .intervals
38 .partition_point(|iv| iv.end_excl() <= query.start());
39
40 self.intervals.get(i).is_some_and(|iv| iv.intersects(query))
41 }
42}
43
44#[cfg(test)]
45mod tests;