My experience with Rust has been having a lot of motivation to learn, getting frustrated & quitting, and then repeating the cycle a few months later. In late 2022 I think I’ve finally found my stride.
Rust has a notoriously difficult learning curve. Here are some of the resources I’ve used to learn Rust since December 2020 and some that I’ll be using to learn Rust in 2023.
This December marks two years of attempting to learn Rust.
I started with a physical copy of The Rust Programming Language, “the book”:
You purchased this item on December 12, 2020.
I was in University when I read the book & had a course that taught systems programming from the perspective of rust. Our homework assignments had us create CLI programs like wc, a shell, a chat server, and more. If you’re looking for similar CLI challenges, you can follow Command-Line Rust.
You might find some inspiration on build-your-own-x, but I find that these may be too difficult for beginners. Maybe ChatGPT can give you some suggestions…
Reading and writing Rust is the surest way to get familiar with Rust.
After 2 years I think I can finally say that I have intermediate-level Rust skills.
I think that this means I have a good awareness of the Rust ecosystem (keeping up with the latest stable releases, following r/Rust, reading blogs, listening to podcasts), I can write idiomatic Rust code, and I can learn how to leverage tools like Cargo, Rustfmt, Clippy, Macros, Fuzzing, Benchmarking, etc to my advantage.
After learning the basics, what helped me get to the intermediate level?
Getting involved with the Community
This post is my first attempt at directly getting involved with the Rust community; I try to share my experience as a hobbyist of 2 years outside of school and work.
Listening to podcasts on Rustacean Station has helped me gain insight for what’s happening in the community as well as the experience & pathways that that interviewees took to strengthen their skills.
I think that engaging with the community is a natural step towards increasing your experience and understanding.
Books & Blogs
Books (and blogs to a lesser extent) have been my primary way to learn.
Below you will find some resources I’ve used with great success.
Ranked List of Resources
A list of the resources that have been most impactful for me for learning “intermediate” Rust:
- zero2prod - An introduction to backend development in Rust
- Rust Atomics and Locks - low-level concurrency in Rust
- Rust for Rustaceans - next steps into intermediate Rust
- Pingcap Talent Plan
- Fasterthanlime blog
- Build a Fintech Platform in Rust - project-based learning
Resources that I’m looking into next
In no order:
- High Assurance Rust - write software you can justifiably trust
- MacroKata - learn about declarative macros
- Build a Stock-Tracking CLI With Async Streams in Rust - project-based learning
lib-wc is my attempt at learning how to create a Rust library.
The library contains implementations of utilities like QuickSort, Mutex, Channel, Semaphore, Condvar, Treiber Stack, Thread Pool, and more. Many of these implementations were found in the wild then adapted and tested for learning purposes.
I’ve integrated property testing, benchmark testing, and fuzz testing into the library to learn about how these techniques are applied to Rust projects. I think they are a great addition to the usual suspects like unit testing & integration testing.
The purpose of this library is to act as a laboratory where I can experiment with ideas. It’s been useful for me & a similar project might be useful for you too.
Intermediate Rust is a weird place. There’s no clear guide on how to make the jump from Beginner to Intermediate (nor Intermediate to Advanced). It will be different for everyone.
If you are interested in gaining intermediate skills you can try out some of what I’ve specified above. The Rust community can also help guide you in the right direction.
Advanced and beyond
To be blunt, I haven’t yet figured out how to become “advanced” with Rust. I don’t know what it means to be advanced. I’m writing this blog post so people can see how I got to the level that I’m at today, at the end of 2022.
I see people who build popular open-source projects, or people who are on the various rust governance teams and wonder how they got to the level that they’re at. I figure that this is from spending a large amount of time using the language & getting involved with the community.
I have some ideas on how to creep closer to the “advanced” level:
- Working with Rust more consistently
- Engaging with Rust Mentors
- Learning from Jon Gjengset’s videos
- Learning about & contributing to Rust itself or open-source projects
- Continuing to engage with the community
Thanks for reading. If this helped you, that’s great!