Learning Rust (Part 1 of N)
Tags: rust, programming
Published: 2021-08-09 14:55:53

I recently started reading up about the Rust programming language. I've read a lot of cool stuff about it, and I've decided to blog my journey through the process of learning Rust.

As far as I've read, Rust follows a completely different model, with regards to sharing of variables, with the concept of *owner*, *borrowing* and *shared borrows*. It also statically checks programs for memory leaks and [data race conditions](https://stackoverflow.com/questions/49023664/could-software-written-only-in-rust-fully-avoid-race-conditions#:~:text=Race%20conditions%20are%20not%20memory,processes%2C%20servers%2C%20...), so you know your program is free of such insidious bugs, if it compiles successfully.

I've read that it also gives pleasant helpful error messages. I've dealt with and diagnosed long error logs such as template meta-programming bugs in C++, so I have firsthand experience in being at the receiving end of the compiler vomiting volumes of information at you. I'm curious to see how the Rust compiler's error messages are in terms of their description and accuracy.

So, at the outset, I've set my learning path as follows:
1. [The Rust series from Microsoft Developer channel on YouTube](https://www.youtube.com/watch?v=PpWR6zungUk&list=PLlrxD0HtieHjbTjrchBwOVks_sr8EVW1x)
2. [Rust In Action - Systems programming concepts and techniques By Tim McNamara](https://www.manning.com/books/rust-in-action)
3. [The Rust Programming Language (Covers Rust 2018)
by Steve Klabnik and Carol Nichols](https://nostarch.com/Rust2018)
4. [Programming Rust, 2nd Edition
by Jim Blandy, Jason Orendorff, Leonora F.S. Tindall](https://www.oreilly.com/library/view/programming-rust-2nd/9781492052586/)

I plan to go through each resource sequentially, while also solving all the exercises in each one. I estimate that this whole process would take me about *6 months*.

As any curious reader would notice, I've not mentioned the primary resource for Rust: [The Book](https://doc.rust-lang.org/book/). I plan to keep this resource as my main reference as I go through the learning process.

> **Update: (11/08/2021)**
As noted out by @vorfeedcanal, the book [The Rust Programming Language (Covers Rust 2018)
by Steve Klabnik and Carol Nichols](https://nostarch.com/Rust2018) is actually the printed version of [The Book](https://doc.rust-lang.org/book/).  
I've decided to refer the [The Book](https://doc.rust-lang.org/book/), as being the web version, it will be continually updated.  
You can find more details about this [here](https://doc.rust-lang.org/book/).

## How do I Apply What I Learn?

As I start off, I plan to apply what I learn in solving competitive programming questions on [CodeForces](https://codeforces.com/). I've solved question from there before, and written 2 blogs on them as well, here on *dev.to*. 

I'll restart blogging about solving CodeForces questions, but I'll switch my language from Modern C++ to Rust, so that I can really dive into learning this new language.

In addition, solving the questions and exercises in the different material I read, will be important. I'll maintain a GitHub repository for each resource I work on, to keep everything in sync.

## So When Do I Start?

I have already started working through the Microsoft Developer series on YouTube, which I plan to finish a little more than halfway by August 19th, Thursday. I'll add another blog post then, to update my progress and share what I learnt.


*Onwards and Upwards! ...*