That’s what I love about Rust: many problems that would turn into runtime errors in other languages aren’t possible with its type system and the compiler catches them.
You get a bit numb to this when working on old code (10+ years), you know there’s plenty crash bugs and logic bugs in the code and you know you will introduce a few of them while fixing bugs and adding new features.
The only thing that can give comfort is automated tests and plenty of them! Unit, integration and especially system level for old code.
Good companies priotize this, and can refactor code without breaking too much, other companies learn to live with the bugs breathing down their necks.
That’s my secret, I never run the code. That’s the testers’ problem.
Today, I had a weird issue: A program I worked on for hours would compile and do the (test-) output it was supposed to do. But if I’d declare and initialize another variable (unused), it would be stuck in an endless loop.
It would only happen with an initialized variable, not with simply declared variables.
Took me until this evening in my bed to realize that I probably am using another uninitialized variable somewhere in my code and that’s the source of this bug.
No syntax errors here, boss.
// Mr. Incredible happy x += (new Date()).getSeconds() // Mr. Incredible despair x /= (new Date()).getSeconds()