pub fn binary_search<T: Ord + PartialOrd + Add<Output = T> + Sub<Output = T> + Div<Output = T> + From<u8> + Copy>( min: T, max: T, predicate: impl Fn(T) -> bool, ) -> T