Rust learning resources

Full-stack software developer
Rust is often treated as a hardcore programming language, that can be used only for system programming and which is very hard to learn. I am going to debunk these myths today.
How to learn Rust? Well, the first thing that I want to recommend: do not overpay for online courses. Believe me, there are no secret information about Rust programming that possible to get only for money. All these courses based on books and online resources, that available for free. Furthermore, courses can make you lazy to search and read these books yourself and helpless without lecturer. In the current changing world, one of the most important skills is to learn how to learn, especially in programming on modern programming languages. Better read books and search what you need yourself.
Here is a big collection of Rust programming books, available to download for free:
https://koderbooks.ru/category/rust/
If read them and follow all links in them, you will have all information that exists about Rust in the world. However, beginner may ask how to start? Which topics to learn first and which books to read next? How to motivate yourself to continue learning this language with one of the most steep learning curve?
For example, if you ask about this in Google, one of the first recommendations will be to read "The Rust Book" (https://doc.rust-lang.org/book/) to learn the "foundations of Rust programming". However, many people, especially beginners, find this book too annoying to read. This book contains very important concepts, but almost no practice, that motivates to learn. To make learning this book more fun, there is a “Let’s get Rusty” YouTube channel, which has a set of video tutorials for each chapter of this book, that you can watch here: https://www.youtube.com/watch?v=OX9HJsJUDxA&list=PLai5B987bZ9CoVR-QEIN9foz4QCJ0H2Y8&index=1.
However, It's more interesting to learn "foundations of programming" by doing real world project, like command line tool, GUI application, web service, game, machine learning pipeline, embedded application for Raspberry Pi or even operating system. All this you can find in the "Practical Rust Projects" book, that is available by the link above. This book can debunk both myths: 1) you will see that Rust is not only the language for system programming, but can be used for everything, that you can create in other programming languages 2) you can create any of these projects spending not more than an hour.
Also, there are more books like this one in the collection:
With "Creative Projects for Rust Programmers" book you can create an expression compiler, Linux Kernel module, in-browser game using WebAssembly or desktop game.
With "Rust Programming by Example" book you will create an SDL-based game, Music Player and FTP server.
I recommend to start with these three books. Just write and run all code in them. DO NOT COPY/PASTE, write each line of code by hand. It's not too much to write. These projects are simple.
Then, after trying different directions, you probably will want to dive to one or several of them. In this case, you will need to open advanced books.
If you select Web development, then, there is a great book "Rust Servers, Services and Apps", which shows both how to create a web server from scratch and how to use an existing modern framework to create a web service. In addition, it has a great advanced chapter, called "Async Rust". On my view, it explains the internals of asynchronous programming in Rust better than official Tokio documentation.
There are several other Web development books in the collection as well.
If you want to dive to command line utilities, then there is a "Command Line Rust" book which shows how to create many command line utilities on Rust.
If you're interested in WebAssembly, there are at least two books in the collection about this: "Programming Web Assembly in Rust" and "Game development with Rust and WebAssembly".
If you're attracted by Machine learning and AI, then welcome to the "Practical Machine Learning with Rust" book. Using it, you can develop projects using both classic machine learning algorithms and deep learning. For classic ML there are well known from Scikit-learn Python library algorithms, like Linear Regression, Logistic Regression, K Nearest Neighbors, Decision Tree, Random Forest, Support Vector Machines, Gradient Boosting and K-Means clustering. Also, this book shows how to install and use PyTorch in Rust to build, train and run neural networks. PyTorch is well-known in Python world, but it's developed not on Python, but on C++, and it used in Python through bindings to C++ APIs. The tch-rs library provides PyTorch bindings for Rust, so you can access the same API as on Python. This book also describes Reinforcement Learning in Rust, and additional algorithms like Principal Component Analysis, data transformations and working with matrices.
If your goal is embedded programming, then there are no books in the collection, dedicated specially for this. However, there is a great repository: "Awesome Embedded Rust" with a great list of books and learning materials about this: https://github.com/rust-embedded/awesome-embedded-rust?tab=readme-ov-file#books-blogs-and-training-materials.
If you want to build games, then, there is a great book “Hands-on Rust Effective Learning through 2D Game Development and Play”.
There are few mature idiomatic Rust libraries for games. Most of Rust game libraries are bindings to some famous C++ frameworks, so, I think, you need to learn these frameworks first and then, it will be more clear how to run the functions of these libraries from Rust.
While reading these books and doing these projects you probably will find that there are not enough information about some Rust details, something will not work as expected. In this case, you can use other more theoretical books as references. They are:
"The Rust Programming Book", mentioned above: https://doc.rust-lang.org/book/.
“Let’s Get Rusty” YouTube channel: https://www.youtube.com/watch?v=OX9HJsJUDxA&list=PLai5B987bZ9CoVR-QEIN9foz4QCJ0H2Y8&index=1 with video tutorials for each chapter of “The Rust Programming Book”.
"Practical System Programming for Rust developers", which has a "Chapter 3: Introduction to the Rust Standard Library" with a good review of Rust standard library modules and functions.
“Hands-on Concurrency with Rust” - which explains everything about parallel and concurrent programming: threads, channels, mutexes, locks, atomics and related traits. In addition, this book has tutorial on how to cross-compile Rust projects and create binaries for different platforms, like ARM.
Then, while your projects grow, you will search for best Rust practices and patterns. There are resources for this as well here:
"Effective Rust" - the book that explains Rust features in depth and best practices of using these features
"Rust for rustaceans" - this book you should read after feel yourself mature with Rust, to search advanced internals, which are usually annoying for beginners, but very important later.
"Idiomatic Rust" - this is not a book, but a repository https://github.com/mre/idiomatic-rust that contains a structured list of resources about Rust best practices and design patterns.
And finally, everything becomes outdated one day. While develop these projects, you will find that some third-party packages outdated, others do not have some functions that you need, and you will want to replace them or learn more from sources. I do not know a better place for this than the "Awesome Rust" repository: https://github.com/rust-unofficial/awesome-rust. It contains structured information about all Rust ecosystem. You can find everything you need to upgrade your project or start a new one.
Assuming that it’s too easy to use Google to find this, I did not mention official Rust resources, like https://www.rust-lang.org/ and https://crates.io/. However, they are also very important to get updates about Rust, and it’s ecosystem while learning and practicing.
Actually, learning Rust is not much more difficult than other languages and I hope that these resources will help you in this journey and my guide to them will keep you motivated while learning.
Have a fun coding and never stop learning!
Follow me on LinkedIn and GitHub for more articles and other software development news.
