I think Rust's difficulty for beginners is greatly exaggerated.
Most of us community members came from other languages first and we had to re-learn things. Every week there's at least one thread on how to do X in Rust, where X is something that's easy in a GC'd language, or something that's trivial but unsafe in C(++). How many times do you see something along the lines of "That idiom doesn't translate into Rust; look for another way to solve your problem"?
It's easy to think "Because this was hard for me, a skilled professional/enthusiast, it must be even harder for someone with no prior experience." But it's not necessarily true.
When you're first learning, everything is hard. People with no prior experience struggle with ideas like:
- Variables have scopes.
- Each function call gets its own local variables.
- Statements are executed sequentially.
- There is a difference between compile time and runtime.
- There is a difference between
;
and :
and between []
and ()
.
- Comments don't influence the behavior of your program.
- Indentation doesn't matter. (Depending on the language)
When you're struggling with things like the above, the difference between Rust and PopularLanguage is so far beyond you that the "hard" stuff isn't even on your radar. The "basics" of programming are the same in every language.
When you do start to get into the tricky bits, you don't need to embrace it all at once. Ownership is a pretty simple concept, no more complicated than the object/primitive distinction in any of a half dozen other popular first languages. Cloning fixes 90% of the problems you would encounter early on. And when you do get into references, you can usually do without explicit lifetimes entirely! Most languages don't have references at all. C++ outright forbids putting references in structs which eliminates most cases in Rust where lifetime annotations are needed. Not true, I was thinking of arrays.
To make a long story short: Learning to program is different from learning a new language. Rust has a lot of potential to be a good language for people learning to program. Especially so, in my opinion, since the compiler can head off a lot of mistakes that inexperienced programmers make. People think Rust is harder than it is, because they try to write things in Rust that they wouldn't try in other languages.
The problem with Rust as a first language is, I think, entirely lack of resources. In my opinion, the best book I've found for learning to program is Learning Perl. It doesn't get into references or complicated stuff at all. If you think Rust is too complicated for new programmers, you should check out a somewhat recent edition of Learning Perl and see how simply the book explains programming using this language that has such a reputation for being needlessly complex and unreadable. I see no reason why someone couldn't make a book of that quality, aimed at non-programmers, but using Rust as a language instead.
Unfortunately, that book doesn't exist for Rust yet. (Apologies if I'm missing one; all the books I know of are written for programmers.) But I hope some day it will!
In the mean time, I agree broadly with the other advice given here: it'll be hard to learn Rust as a complete beginner. There just aren't a lot of resources available to you. But don't let your takeaway be "Rust is too hard for beginners," but "Rust-oriented resources are not aimed at beginners."