this post was submitted on 11 Jun 2026
60 points (100.0% liked)
Programming
27223 readers
297 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 3 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
I'd also add that the borrow checker, to me, has a grossly overexaggerated difficulty/annoyance. It follows a simple set of a few easily learned rules, and in my experience, if you break one, it'll tell you which and where. I feel like the type of C/C++ programmers complaining about it are mostly the ones that have mountains of hidden memory etc. bugs in their C/C++ code that Rust actually makes them clean up.
Edit: Another class I find are those who kind of just feel out the borrow checker blindly without sitting down for 20 minutes to learn how ownership works.
It depends what you're trying to do. Some data structures inherently do not work comfortably with a single-mutable-ownership model, and while they're not exactly ubiquitous, they're common enough. (My exposure to rust is through advent of code where they're more common than in the real world).
Rust doesn't make it impossible, but you need to convert everything to Rc Refcell and there's a load of annoying crusty boilerplate, so it is more difficult. And yes, the guards in those calls can prevent or expose nasty errors, but a lot of the time - in a simple app you're writing to learn the language - the logic that keeps everything safe is so simple that an experienced programmer doesn't even think about it, and then it's confusing because it's not clear what you're being protected from :)
Do you really need that much Rc? That is, do you really need multiple ownership for a piece of data in a single thread? It is rarely the case, many times you can get away by just borrowing that data.
ARc is harder to avoid, since across threads you often really need the multiple ownership.
Next is, do you need RefCell? Or would a simple Cell in some of the struct fields be enough?
I recently picked up embedded in Rust and I often stumble upon the pattern of taking buffer references into structures, and I would want to pack the buffer and the struct that uses it together, but I don't want to do self referential magic, so for now I keep buffers passed around everywhere
Yeah. That's a huge issue rust has. However, it can't be solved with Rc.
You either do it in safe rust, by "cheating" the borrow checker and storing a size offset of the buffer instead of a reference. Or just use unsafe rust and store a raw pointer alongside the buffer.