Rust’s borrow checker isn’t the hard part it’s designing around it
After spending more time with Rust, I’ve realized the borrow checker itself isn’t really the problem.
What’s actually hard is designing your data flow in a way that the borrow checker is happy with.
In other languages, you write the logic first and deal with bugs later. In Rust, you kind of have to pre-think ownership, mutability, and lifetimes as part of your architecture, not as an afterthought.
I’ve had multiple cases where the “fix” wasn’t changing a line it was restructuring the entire approach (splitting structs, changing function boundaries, avoiding shared mutable state, etc.).
It almost feels like Rust is forcing you into a more functional/ data-oriented design style, even if you didn’t intend to.