pub trait RangeExt {
type Unit;
// Required methods
fn map_unit<F, V>(self, op: F) -> Range<V>
where F: FnMut(Self::Unit) -> V;
fn contract(self, value: Self::Unit) -> Range<Self::Unit>
where Self: Sized,
Self::Unit: Add<Self::Unit, Output = Self::Unit> + Sub<Self::Unit, Output = Self::Unit> + Copy;
}