And with that, the safety of Rust is (IMO) overstated - the distinction between `unsafe` and `safe` is not a very good way to judge safety. I wrote a lot about this here[0].
All that said though, there are also lots of things I liked about Rust. In particular I found slices to be something I really wish was in C, they basically just solidify the normal way you do things in C, and it then allows the compiler do things like bounds checking. The `enum` system is also fairly nice.
[0] https://www.reddit.com/r/programming/comments/6f235k/rewrite...
[1] https://github.com/faragon/libsrt/blob/master/doc/benchmarks...
It took me a while to "get" Rust, but I'm now much productive in it than C. Syntax is not pretty, but it's convenient.
Now whenever I program in C I miss being able to declare which pointers are owned/borrowed (and great dependency management, etc., etc.)
The only thing I miss from C is its wide acceptance. I have to justify use of Rust, but not use of autotools :O
All the fancy features sound nice, but the moment you try something large and non trivial all sorts of hacks seep into your codebase.
The solution is the same as in C++, write straightforward code and avoid terseness. But if you are at that level already you could just use C++ for a much more mature toolchain (blows away rust when it comes to compiler optimizations even when both use an LLVM backend).
Personally, the safety aspects of rust have never been problems for me. Two biggest problems I've had developing in C/C++ over the years are A) compiler inconsistencies, B) API inconsistencies, and B isn't really C's fault. I can kind of see why Javascript is so popular--with Chrome and Node using V8, that's one less battle you have to fight.
When someone goes on about how Rust's weak "guarantees"[0] on memory safety and data races are going to make code "secure," I don't know how to politely respond to that level of delusion.
[0] 'unsafe' blocks and the non-Rust world everything has to tie-into
Another bittwiddler++ language is just digging the hole deeper.
I learned to program in C, during the dawn of the Internet. Yes, the "I can do anything on the machine" power was fun.
But when considering all C/C++ code is completely insecure by default, it really shouldn't be used to build anything new that processes untrusted input (which is just about everything). There are a few decades worth of mature alternatives that should be considered first, plus a few newcomers like Rust and golang.