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