this post was submitted on 18 Nov 2025
26 points (90.6% liked)

Programming

23517 readers
271 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



founded 2 years ago
MODERATORS
 

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...

top 7 comments
sorted by: hot top controversial new old
[–] BB_C@programming.dev 16 points 2 days ago* (last edited 2 days ago) (1 children)

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.

[–] hades@programming.dev 4 points 1 day ago (1 children)

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.

[–] calcopiritus@lemmy.world 1 points 1 day ago (1 children)

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::()

[–] hades@programming.dev 1 points 1 day ago (3 children)

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”.

[–] FizzyOrange@programming.dev 3 points 1 day ago

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.

[–] calcopiritus@lemmy.world 2 points 1 day ago

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.