I can write all these posts and tell you with a straight face there’s no tradeoff because appeasing the borrow checker is NBD. I never think about appeasing the borrow checker when I write Rust.
Guy is in a bubble. He doesn't realize that 99% of rust programmers don't have the experience he does.
With my experience of moderating the Rust Community Discord Server, it really doesn't take long to get over the borrow checker. Most people are not writing code complicated enough to get stuck with the really complicated cases (unfortunately, yes, the borrow checker is not perfect) but it really is good enough for most people most of the time.
Clicking with the borrow checker is a big hurdle for many, but once it clicks and you adjust your design patterns to be compatible with the language it really is a secondary concern.
I very rarely run into borrow check errors, and if I do they are usually easily solved. From my impression that's the same for most semi-experienced Rust devs.
The borrow checker is really not that big of a deal. It is a hurdle, but the primary issue is just that it's novel and requires you to use different design patterns.
If people get stuck here, it is because they don't understand that the dreaded borrow checker error is (generally) about large, systematic code design patterns, not about local changes.
They try to appease the borrow checker by making small, local changes, which doesn't end up working, since borrow checker issues are about a fundamental issue in the ownership-design of your codebase. Once someone explains this to you, it's really not that hard.
Comments
Guy is in a bubble. He doesn't realize that 99% of rust programmers don't have the experience he does.
With my experience of moderating the Rust Community Discord Server, it really doesn't take long to get over the borrow checker. Most people are not writing code complicated enough to get stuck with the really complicated cases (unfortunately, yes, the borrow checker is not perfect) but it really is good enough for most people most of the time.
Clicking with the borrow checker is a big hurdle for many, but once it clicks and you adjust your design patterns to be compatible with the language it really is a secondary concern.
I very rarely run into borrow check errors, and if I do they are usually easily solved. From my impression that's the same for most semi-experienced Rust devs.
The borrow checker is really not that big of a deal. It is a hurdle, but the primary issue is just that it's novel and requires you to use different design patterns.
If people get stuck here, it is because they don't understand that the dreaded borrow checker error is (generally) about large, systematic code design patterns, not about local changes.
They try to appease the borrow checker by making small, local changes, which doesn't end up working, since borrow checker issues are about a fundamental issue in the ownership-design of your codebase. Once someone explains this to you, it's really not that hard.