Rust as a general language
I have some \~100 hours of Rust under my belt over the years, and I'm beginning to learn towards reaching for the language for most problems. That said, I have never written anything more than a few thousand lines, so I have yet to experience Rust in the large.
What I like about Rust:
- Not having to chase as many bugs at runtime compared to most other languages except statically typed FP ones (OCaml, F#, Haskell etc).
- Tooling is amazing, the compiler is extremely helpful and clear (... until it isn't, but that's something I assume you learn to navigate with time).
- Binary sizes, memory usage and CPU pressure are all extremely low. Having used computers for \~25 years, the fact my hardware is exponentially faster than those of the 90s, my day-to-day experience with most apps is somehow worse than it was back then, sans disk/network speed.
So, would it be worthwhile to jump in with both feet and go full bananas with Rust as a primary driver, even for things where the fit might not be absolutely perfect? I don't mind seeing everything as a nail, I've used some \~20 languages in production and am somewhat disillusioned with the 'pick the right language' argument unless it's quite literally and practical impossibility to not pick X for Y.
I hear mixed answers from more experienced Rustaceans, where the arguments against fall into some combination of:
- Refactoring can become very time consuming if lifetimes / containers change drastically, as the problem spreads to all references, which in turn run the risk of needing changes themselves, which repeats ad naseum.
- Compile times in larger projects can be slower than equivalent C++ programs. I have not seen this personally, but the thought of it sends shivers down my spine.
- \
target/\\folders can grow into tens of gigabytes for non-trivial projects. My daily driver today is Go, in which projects rarely exceed a few hundred Mb, if even. - Like other very large languages, it's easier to fall into paralysis by analysis as there's so many ways to skin a cat compared to languages where there is one true way (Go, Python)
To what extent are these true, and what can be done to combat them?
Thank you for taking the time to read my question. Cheers!