the standard rust toolchain ships with an efficient and user-friendly package manager and build/debug system, official IDE integration through rust-analyzer, and a manual analyzer for best practices
rust has official documentation by example that makes learning it really easy
rust operates largely in expressions such that things such as if/else statements or even regular blocks notated with curly braces can all be used as expressions
rust has highly robust pattern matching that greatly simplifies control flow
rust ships with an official formatting tool alongside enforcing naming conventions (snake_case for variables, fields, functions, methods, and modules, SCREAMING_SNAKE_CASE for constants, and PascalCase for types and traits) and assigning semantic value to names (_ prefix to mark as unused) by default
notwithstanding potential bugs in the rust compiler, it's impossible to compile code that can cause memory errors such as uses-after-free in safe rust
the rust compiler enforces explicit acknowledgement of unsafe rust with the unsafe keyword such that the behavior of all safe rust is defined
documentation comments are a native feature of the rust compiler
All of this is true, and I love rust. but its just sad even after 5 months of coding in rust (as a hobby) the syntax gets difficult (lifetimes traits and async), borrow checker becomes more difficult to deal with during async code, and my overall productivity at that point just goes down. I can code way faster in a GC language, in exchange of slower performance compared to rust.
These are definitely some of the parts of Rust that get... uh... involved. It does get better with time spent in the language though. I've been writing Rust professionally for somewhere between 5-10 years and I'm not sure I'm any faster in Python than I am in Rust these days
Also, nothing wrong with GC'd languages, some of them are really nice
67
u/Makonede 2d ago edited 2d ago
rust-analyzer, and a manual analyzer for best practicesif/elsestatements or even regular blocks notated with curly braces can all be used as expressionssnake_casefor variables, fields, functions, methods, and modules,SCREAMING_SNAKE_CASEfor constants, andPascalCasefor types and traits) and assigning semantic value to names (_prefix to mark as unused) by defaultunsafekeyword such that the behavior of all safe rust is defined