https://bentebent.github.io/posts/starting-rust-2025/

Why Rust?

If you’re reading this you’re probably already interested in Rust and know why it’s got an exciting new place among programming languages. If you’re new to Rust, here’s why it’s generating so much excitement! Rust enforces memory safety through its compiler rustc with the “borrow checker” that tracks object lifetimes. Rust ships with an integrated toolchain that includes a package manager (Cargo), a code formatter (rustfmt), a language server (rust-analyzer), and more. This makes it easier to get started with Rust development without needing to set up a complex environment. It’s still early days but you can find Rust in production in Firefox, Dropbox, Linux and more. Rust has recently been picking up momentum with even the White House urging the industry to move to memory safe languages.

Why the plan?

I’ve gone into plenty of new languages over my last 15 years of programming but learning Rust has been a very different experience compared to most other languages. You can jump into Rust with minimal studying and that will be fine for most tasks but there is definitively something pushing you into theory along the way, even if you have prior experience in a systems level language like C or C++. This is more than an academic challenge, spending time on the theory and potentially revisiting your computer science fundamentals will help in understand Rust’s ownership, borrowing and lifetime systems.

A rollercoaster of emotions

A rollercoaster of emotions

In the highly scientific™ diagram above I’ve tried to illustrate what I think the Rust learning curve looks like. Unlike most other languages the curve gets really spiky every time a new concept is introduced. You start off easy with a toy application where cloning to get around lifetimes makes life easy. Then you get into lifetimes and it suddenly gets really hard until you learn some patterns and understand the compiler’s outputs better. Async is the next beast but if you use clone it’s still very manageable. At the end you put lifetimes and async together for the dreaded Send + Sync + 'static, a dragon that is very hard to tame. If you go to the next step without really learning the previous one things risk getting really hard from my experience so far.

The goal with this post is to give a path of learning that sets you up for success in forging your own path forward, be it delving deeper into the language itself or to start building your own projects, so let’s get to it!

The plan

First, should you read the Rust book before doing anything else? Personally, I don’t think so unless you’re really good at retaining information from just reading. The Rust book is an amazing resource compared to the old days of thick, academic C++ literature and I suggest reading it early into the learning process but not upfront before getting into at least some practical exercises.

Starting point

A half-hour to learn Rust

Let’s begin with some light reading to lay the foundation. Although a few years old at this point the excellent article A half-hour to learn Rust from fasterthanlime is still one of the best starting points you can find for a quick intro to Rust basics. In it you’ll find everything from basic variable assignment to generics, lifetimes and closures. It’s a great reference that you’re guaranteed to keep coming back to throughout your Rust journey.

Rustlings