I've learned a bit of Rust recently but then started programming in Go. Now that I've learned a decent amount of Go I'm thinking of giving Rust another try, because Go has so many obvious weaknesses.
However, I'm still torn between those languages, which I both consider as fancy alternatives to C++ with a growing amount of libraries and community support. I neither like Go nor Rust, but learn them to keep up to date and because I need something with good tooling and many libraries that creates compact and fast executables. Rust still seems overly complicated to me, though, and I say that as someone who enjoys programming in Ada.
lack of references, no generics, verbose error handling, a few quirks (e.g. need to write (*slice)[i]), inconsistencies like new vs. make, interface{} hacks where there could be a zero-cost abstraction, oddities with untyped literals, no way to declare "not null" pointers and the Million Dollar Mistake, built-in functions for built-in primitives (i.e., append(slice, datum) instead of slice.append(datum))
Stuff like that, which has been discussed over and over. Go is a bit of an odd language if you're used to languages like Ada, CommonLisp, or Racket, but I really like it a lot. I like the sense of pragmatism, that it has been developed to get things done.
I believe that Go2 will be even better and am especially happy that the Go team has decided to adjust and include generics rather than stubbornly insisting that they are not needed.
However, I'm still torn between those languages, which I both consider as fancy alternatives to C++ with a growing amount of libraries and community support. I neither like Go nor Rust, but learn them to keep up to date and because I need something with good tooling and many libraries that creates compact and fast executables. Rust still seems overly complicated to me, though, and I say that as someone who enjoys programming in Ada.