space_partitioning/interval_tree/
interval_tree_entry.rs

1use crate::interval_tree::{Interval, IntervalType};
2use std::fmt::{Debug, Formatter};
3
4pub struct IntervalTreeEntry<T, D>
5where
6    T: IntervalType,
7{
8    pub interval: Interval<T>,
9    pub data: D,
10}
11
12impl<T, D> Debug for IntervalTreeEntry<T, D>
13where
14    T: Debug + IntervalType,
15    D: Debug,
16{
17    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
18        write!(f, "{:?} data = {:?}", self.interval, self.data)
19    }
20}
21
22impl<T, D> IntervalTreeEntry<T, D>
23where
24    T: IntervalType,
25{
26    pub fn new<I>(interval: I, data: D) -> Self
27    where
28        I: Into<Interval<T>>,
29    {
30        Self {
31            interval: interval.into(),
32            data,
33        }
34    }
35}
36
37impl<I, T, D> From<(I, D)> for IntervalTreeEntry<T, D>
38where
39    I: Into<Interval<T>>,
40    T: IntervalType,
41{
42    fn from(pair: (I, D)) -> Self {
43        Self {
44            interval: pair.0.into(),
45            data: pair.1,
46        }
47    }
48}
49
50impl<I, T> From<I> for IntervalTreeEntry<T, ()>
51where
52    I: Into<Interval<T>>,
53    T: IntervalType,
54{
55    fn from(value: I) -> Self {
56        Self {
57            interval: value.into(),
58            data: (),
59        }
60    }
61}