unicode-reverse
This Rust crate can reverse arbitrary strings, in-place without allocation. It correctly handles UTF-8 sequences and grapheme clusters, including combining marks and astral characters such as Emoji.
As described in this article by Mathias Bynens,