Rust is neat. I wrote a decent sized side project backend (weatherfy.com) in Rust, with sqlx, postgres, and axum. Shared cache was tough to figure out but everything else was easy.
The whole backend has like one lifetime annotation, so that wasn't too bad. Honestly, I'd use it again, but the compile times scare me.
- New libraries can't just be deployed to the OS, they must be compiled into the project.
- A check for thing==nil doesn't always work for all types of nil. Yes nil does not always equal nil.
- Panics aren't necessarily a bug. They could be a feature (?). Crashes are always a bug in C.
- Garbage collection is mandatory in go. C people are used to managing memory themselves like going for a walk. It's kinda natural.
- GC causes hard to debug performance issues. This was true in Java. And it's true in Golang.
- Golang channel primitives has bugs of their own with deadlocks and other interesting behaviors, whereas a lot of the threading issues in C are pretty well understood.
Rust is for when you really need to perform manual memory management. If you don't need that, then a GC language is better.
If you're choosing manual memory management over GC, you better have a really good reason to do so or a really small application that you're writing.
Incorrect. The compiler forces you to handle memory properly. It doesn't, as far as I know, manage it for you.
The burden is on the programmer to do it correctly. The compiler stops the programmer from doing it incorrectly.
Compare with GC, where the programmer is freed from the burden of worrying about memory altogether.
The first part Rust does for you.
The second part you'll indeed have to do yourself and the compiler will force you to do it safely.