space_partitioning/interval_tree/
interval_tree_entry.rs1use 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}