pub fn sort(&mut self)
    where
        T: Ord,
    {
        merge_sort(self, |a, b| a.lt(b));
    }
Sorts the slice with a key extraction function.

This sort is stable (i.e., does not reorder equal elements) and *O*(*m* \* *n* \* log(*n*))
worst-case, where the key function is *O*(*m*).

For expensive key functions (e.g. functions that are not simple property accesses or
basic operations), [`sort_by_cached_key`](slice::sort_by_cached_key) is likely to be
significantly
benchmarks/haystacks/code/rust-library.rs