I have programmed a few languages over the years. Most of my C/C++ dev was pre-STL days. Lately, work has focused more on Kotlin. I had heard about Rust, but it wasn't until I saw a video from Let's Get Rusty in Feb that I started trying it. I started with: Let's Get Rusty (YouTube) The official rust book Hands-on Rust Since then I have also been using: the official Bevy book the Bevy cheatbook Command-Line Rust Rust in Action Rust Web Development Rust Servers, Services, and Apps Multiplayer Game Development in Rust I am currently waiting for: Rust Atomics and Locks In general there are a few things that I find I really like, and a few things that are a bit more challenging. Cargo is awesome. I love it. Well, mostly. More on that later. I am only developing on Linux, so can't really speak to Mac or Windows. I am using IntelliJ instead of VSCode. After 18 years of using it, I'm comfortable with it. Using clippy/rustfmt/cargo in it works well. Most of the language is easy to grok. With my background in Java and Kotlin, I found traits and generics easy. With my background in C/C++, I thought the pointers were fine, though I thought I had gotten away from them years ago. The Deref trait reminded me of the magic when C++ first came out, TBH. So what problems have I run into? The first is that when getting a brand new book, the libraries are often so far out of date that the mechanics are no longer applicable to newer versions of the library. While you can pin to the older library version when going through the book examples, you are not learning what you will be doing moving forward. The second has to do with the cargo error reporting. New users will rely heavily on it to help them self-educate on what they are doing wrong. Usually that works well. Sometimes though, cargo tells the user to do something they are already doing and that can lead to confusion and frustration. ( Unfortunately, I just registered on hashnode to post this, so can't include a link. There is an example on my blog titled "error[E0716]: temporary value dropped while borrowed") The last one that I think takes some effort is the lifetimes. I often get caught in a loop of being told to add them, then told to elide them, then repeat.