I can just recommend to everybody which starts with rust: Start with building a simple single threaded program, e.g. a CLI.
Concurrency makes lifetimes much harder to understand. And async by far.
Don’t be fooled by simple looking async/await examples. Start without it.
Agreed. I love Rust and use it basically daily now, but when first learning it I simply bounced off hard, multiple times, until finally I scaled my ambitions down to something small enough I could actually figure out what was going on. It was a Conway’s Life implementation that just printed results out to the terminal. Start smaller than you think you need to.
advent-of-code type of stuff looks okay to just pick up the syntax and specifics.
If you’re going to do AOC problems, I recommend becoming comfortable in short order with Clone, and not worrying about the overhead of doing so. I would also investigate some ways to store graphs and trees without expecting to be able to use references (e.g., by using maps with integer node IDs as keys) as it can quickly become complex or impossible to structure a correct program in the way you might in a less strict language.
Cannot agree more. Async in Rust brings in a lot of complexity and it’s definitely not necessary when one is getting started.