pub trait Minimize<T> { fn min_xy(&self, value: T) -> Self; }
Return self.x.min(value.x) and self.y.min(value.y) as opposed to min which returns the lowest out of self or value