The biggest problem I have with mergesort being the default is it allocates.
The C++ std::sort() algorithm usually introsort. Mergesort is commonly used for C++ std::stable_sort().
I wrote a Rust implementation of introsort, at the time I benchmarked it, it was always faster than the default Rust implementation. It’s on github at https://github.com/bitshifter/sortrs. There are 3 introsort implementations on crates.io https://crates.io/search?q=introsort including mine.
If you don’t need a stable sort, introsort seems faster and is in-place.
Also there’s an RFC about adding a non-allocating sort to core Rust here. A comment on there mentions that pattern defeating quicksort is faster than introsort, I’m not aware of any Rust implementation of that though.