fn in_range<T: PartialOrd + Copy>(val: T, min: T, max: T) -> Option<T>