kupsy 0.1.0

Some data-structures and algorithms that might be useful
Documentation
mod insert;
mod intersection;
mod merge_iters;
mod merge_overlapping;
mod overlaps;
mod sizes;
mod sort;
mod vec;

pub use insert::*;
pub use intersection::*;
pub use merge_iters::*;
pub use merge_overlapping::*;
pub use overlaps::*;
pub use sizes::*;
pub use sort::*;
pub use vec::*;

#[derive(Clone, Copy, PartialEq, Eq, Debug)]
pub struct Interval<T>
where
    T: Copy + Ord,
{
    pub start: T,
    pub end: T,
}

impl<T> Interval<T>
where
    T: Copy + Ord,
{
    // not sure what to return when T is a timestamp
    pub fn duration(&self) -> T {
        todo!()
    }
}

impl<T> From<(T, T)> for Interval<T>
where
    T: Copy + Ord,
{
    fn from(value: (T, T)) -> Self {
        Self {
            start: value.0,
            end: value.1,
        }
    }
}

impl<T> From<Interval<T>> for (T, T)
where
    T: Copy + Ord,
{
    fn from(value: Interval<T>) -> (T, T) {
        (value.start, value.end)
    }
}

#[derive(Clone, Copy, PartialEq, Eq, Debug, Default)]
pub enum NeighborStrategy {
    #[default]
    Same,
    Separate,
}