Feeling slightly exhausted by the world? Let’s reverse a string in Rust in a needlessly complicated way. I was expecting to make a tiny simple video and ended up going further into unsafe than I ev…
I gave this a quick look at 2X speed with a lot fast seeking, and my brain still hurts.
First of all, and concerning Rust, please familiarize yourself with the mem module and its functions at least. You didn’t even get near a situation where using
unsafe{}was actually required.Second of all, and concerning the task at hand itself, for someone who knew to make the distinction between bytes and chars, you should have known about grapheme clusters too. There are a lot of multi-char (not just multi-byte) graphemes out there. You can make a “Fun With Flags” 😉 segment to show that off (no attribution required). Just don’t do anything silly, and make sure to just utilize the unicode-segmentation crate.
Thank you for watching the video and answering the question that I had from just reading the title.
Reversing a UTF-8 string is super hard in any language, rust doesn’t really make it that much harder.
In fact it is easy in rust. Might not be the most performance (or maybe it is), but you should be able to do just “my_str”.chars().rev().collect::<String>()
That chars() call hides a lot of complexity, but also even that might not be correct depending on what exactly you mean by “reversing a string”.
Actually
chars()is pretty simple - it’s just UTF-8 decoding which is elegant and simple.The complexity is all around unicode, not UTF-8.
Based on the responses (i haven’t watch the video), hu just revered according to Unicode codepoints (chars). Therefore this should do the same.
Of course chars() hides the complexity, that’s what makes it easy.
fun with flags (run it)



