I found r4cppp[1] much more useful than any other resource to learn Rust. I understand not everyone has experience with C++, but I found that other resources spent a lot of time on topics that are already intuitive to systems programmers. That was pretty frustrating and put me off from the language for a while.
To me, listing dozens of resources to learn a new language doesn't help. On the contrary, it makes it even more overwhelming. I'd rather have one or two recommendations (maybe one for beginners and one for experienced programmers).
Besides, most of those resources (in fact most other languages resources too) are concept-driven, not problem-driven. To paraphrase a comment I made a while ago on a similar topic [1]:
I wish the style of teaching complex programming topics walked me through the pain of making something work, exploring a few alternative solutions, showing the tradeoffs, and then after the pain has been experienced by the learner, a proper solution is finally introduced and recommended. IMO it's a much more powerful technique for teaching if you walk the learner through the pains first, then arrive at a solution, and tell them that "you've just [discovered how ownership works in rust]"; i.e. the concept is given a name at the _very end_, not defined at the beginning as a solution to a pain the learner never experienced. Unfortunately very few books/tutorials take this approach.
> It should be noted that the authentic Rust learning experience involves writing code, having the compiler scream at you, and trying to figure out what the heck that means. I will be carefully ensuring that this occurs as frequently as possible. Learning to read and understand Rust's generally excellent compiler errors and documentation is incredibly important to being a productive Rust programmer.
I'm learning rust myself this year, I have to say the book - The Rust Programming Language - is not very well written, in comparison, from what I've read, The C book and C++ book and Go book are way better, and unfortunately the other two books I found - Programming Rust and Rust in Action - are not updated yet, for the 2018 edition, to be clear.
Perfect timing. I know Objective-C (my favorite), C/C++, and Python, and Ruby well. Starting to learn Perl (due to a new job) but I also want to learn Rust.
As a little tip I learned the hard way, for the harder or more unique topics in Rust it can pay off to look a little longer for just the right explanation rather than getting frustrated with the compiler's error messages.
Things like lifetime parameters and their placements were pretty cryptic to me until I watched a single video that made everything click into place. Once you got it most things make sense, it's just hard to find the right angle to look from. Plus having the search engine constantly bring up a town or video game named Rust when looking for problems doesn't help.
Imho the great thing about that explanation is how smoothly it moves from the basics to the more detailed parts of lifetimes. That made it easier for me to see the connections to the rest of the language.
[1] https://github.com/nrc/r4cppp