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