pub fn binary_search<T, Q>(s: &[T], query: &Q) -> Result<usize, usize> where T: Borrow<Q>, Q: Ord + ?Sized,