In my Rust learning journey, I took the approach of immersing myself in Rust wherever I go. As such, I happened to look for a lot of various material types I can read, watch, listen to, or practice with. This post is an aggregation of all that material I came across which is comprised of a total of 35 different resources. I split the material into 6 main categories: 1) reading material, 2) practice resources, 3) youtube videos, 4) git resources, 5) cheat sheets, and 6) question forums. In the list, I also add some resources that I came across that I read good things about but didn't really have the chance to leverage myself. This was mainly because they were some form of paid resource. I personally relied on free resources only and found them to be sufficient. However, I probably would go for a paid resource in the future if I feel the desire to have a hard copy of a resource or find a need to pay for a practice resource.
To quickly give some context before diving in, my learning journey started with the official Rust language resource known as "the book" and then I practiced mainly by doing the amazing Rustlings exercises. All other resources I mention in this post, I referred to along my learning journey to clarify concepts I came across in "the book" or when I got stuck in a certain rustling exercise and wanted to explore more. Lastly, when I am asked if I would do anything differently learning Rust, if anything, based on the resources at hand, I probably would have started with the quick summary resources mentioned below first and then tackled "the book". I would have probably done that if I came across the summaries earlier. I guess I was too excited to get started. With that being said, the list is as follows:
1) Reading Material 📚
1. Tour of Rust is a step-by-step guide for the Rust programming language. It gives a nice overview of the language and allows the learner to also modify the code examples to experiment. I would say that the Tour of Rust is not a resource that you would rely on by itself.
2. A half-hour to learn Rust is a nice and quick summary that goes over a lot of concepts of the language with quick examples. Everything is on a single webpage page! as a result, I find this resource very useful for refreshing quickly on certain concepts.
3. A Gentle Introduction to Rust is sort of a short book that summarizes main Rust concepts. The idea, as mentioned by the author, is to "try before you buy" to get to know enough about the language before digging into the more involved resources like "the book".
🆓 Free Online Books:
4. Rust Book "The Book": This is the official book on the Rust programming language, written by the Rust development team at the Mozilla Foundation.
5. Rust By Example: Rust by example has a collection of runnable examples for the various concepts in Rust. I found it useful to refer to alongside "the book" whenever I learned a concept there.
6. Easy Rust: This is a resource that tries to focus on using "easy English" for learning Rust for non-native speakers of English. I personally found it useful to clarify concepts along the way. The nice thing about this book also is that there is a youtube video linked in the book and associated with each chapter.
💲 Paid In-Print Books:
I personally relied completely on the free material to learn Rust, however, the books listed here are ones I saw many positive comments about. Additionally, some might prefer a more tangible form for books of which "the book" itself is also available as hard copy here.
7. Rust in Action: For this book, the author, Tim Mcnamara, also has a youtube channel where he explains Rust concepts.
8. Programming Rust: Fast, Safe Systems Development: This book is rated as an Amazon bestseller as well.
2) Practice Material 🏋️♂️
🆓 Free Resources
10. Rustlings is a git project with small exercises to learn Rust. I absolutely loved this resource as it covered each topic in "the book" and was challenging at times. I worked through the whole set of exercises and felt quite accomplished every time I got through a tough one. My favorite was figuring out how to write a function to find the factorial of a number in a single line using iterators.
11. Exercism has a hands-on Rust learning track. I personally found the exercises interesting in the way they are presented. Though I found the exercises to be a bit more simplistic. This could be because I came about the resource later in my learning.
12. Codewars allows you to do coding challenges with peers. It is really cool and helps hone your skills. I personally found it useful to figure out if I understood certain concepts correctly.
13. Coding Game is a game-based learning how to code website that also supports Rust. I didn't get to delve too much into it though Coding Game has a lot of good reviews as it helps make learning fun.
💲 Paid Resources
14. Egghead.io is more project-oriented and helps developers build portfolios through projects for jobs. There are various interesting options, though one of the nice ones is a course that walks through the Rustlings exercises.
3) YouTube Videos 📹
16. Rust Tutorial, by Doug Milford was one of my favorite resources. Doug does a great job in explaining a lot of the sticky concepts in Rust. The videos also go over different code examples and scenarios to explain.
17. CS Honors @ Illinois was another favorite go-to channel to clarify concepts. The series of videos is based on the CS196 (now CS124) freshman course at the University of Illinois at Urbana Champaign which is run by students. The course videos are not entirely about Rust, however, for the ones that do cover Rust concepts, I found them to be extremely helpful.
18. Lets Get Rusty is a useful channel that provides weekly videos about Rust. It has a nice playlist that goes over "the book" chapters one by one. Though I did find the videos to be fast-paced at times and struggled a bit with some of the explanations.
19. Rust Crash Course, by Brad Traversy is a great quick tour that introduces various concepts to the absolute beginner.
20. Ryan Levick is a Microsoft engineer that works on Rust and has a series of videos with useful explanations for certain concepts. There is also a cool project where Ryan builds an SDK for Microsoft Flight Simulator 2020 using Rust.
22. Free Code Camp provides a beginner tutorial for Rust that works through a CLI application. Although somewhat useful, I didn't spend much time on this one as I struggled with the audio quality and the video was hard to view on Mobile.
23. Jon Gjengset provides a series of videos about Rust concepts, however, I didn't find many to be entry-level as they assume a certain level of knowledge. These videos would probably be better when you become more comfortable with Rust concepts.
4) Git Resources 💾
24. The Rust Programming Language is where you would find most documentation and guides related to the language itself and its crates/libraries.
25. Awesome Rust is a great repo with a huge curated list of plenty with Rust code and resources. You can find complete applications in different areas that were built based on Rust.
26. Ferrous Systems is a Rust consultancy and one of the leading contributors to the Rust ecosystem. In their repos, Ferrous provides publicly all the training material (code examples and slides) in their paid private training courses. This also includes their embedded training.
27. The Algorithms Rust git repo offers code examples for many essential standard algorithms for data structures, sorting, and strings, among many others. This is a very good resource if you are trying to practice for job interviews.
5) Cheat Sheets 📃
There are various options, just pick what suits you most
30. Rust cheat sheet
31. Let's get rusty cheat sheet which you'd have to sign up for a newsletter here to get.
6) Question Forums 🙋♂️
Asking Questions is obviously a crucial part of learning. What made it better is how helpful and friendly rustaceans are. Also for the resources listed below, the awesome part was that you get your questions answered really quick (almost immediately most of the time).
35. There is the Rust Language Forum which I personally didn't leverage at all as I found what I need in the previous.
Learning Rust is no easy feat, as such leveraging as many resources as possible becomes necessary to assert acquired knowledge. In my journey, I've come across many resources that I found useful and summarized in this post. I hope for the new learners to be able to leverage and find useful. What was your experience like? What were your favorite Rust learning resources? Share your thoughts in the comments 👇. If you found this useful, make sure you subscribe to the newsletter here to stay informed about new blog posts. Also, make sure to check out our social channels here.
Did you find this article valuable?
Support Omar Hiari by becoming a sponsor. Any amount is appreciated!