Rust Programming Course
A comprehensive, free course taking you from zero Rust knowledge to building production applications. Follow the chapters in order for the best learning experience.
What is Rust?
Why Rust exists, what problems it solves, and who uses it — no jargon, just plain English.
Installing Rust
Get Rust running on your computer in 5 minutes — step by step with screenshots in your head.
Hello, World!
Write your very first Rust program. Yes, it is that easy.
Cargo — Your Best Friend
Cargo builds, runs, and manages your Rust projects. Think of it as your personal assistant.
Variables & Mutability
Variables are labeled boxes. Learn why Rust locks them by default and how to unlock them.
Data Types — Numbers
Integers, floats, and why Rust makes you pick the exact size of your numbers.
Data Types — Text & More
Characters, booleans, strings, tuples, and arrays — all the building blocks.
Functions
Package code into reusable pieces. Like recipes you can call by name.
Comments & Documentation
Leave notes in your code so future-you (and teammates) know what is going on.
Control Flow — If/Else
Make decisions in your code: "if this, do that, otherwise do something else."
Control Flow — Loops
Repeat things: loop forever, loop while something is true, or loop through a list.
Ownership — The Big Idea
THE concept that makes Rust special. Like lending books — every value has exactly one owner.
Ownership — Move & Copy
When you hand a value to someone, do they get a photocopy or the original? Rust cares.
References & Borrowing
Instead of giving away your stuff, just let someone look at it. That is borrowing.
Slices
Point to a piece of a collection without copying it. Like bookmarking a page range.
Structs — Custom Data Types
Create your own data shapes. Like designing a form with fields you choose.
Struct Methods & impl Blocks
Give your structs superpowers by attaching functions to them.
Enums — Multiple Choices
A value that can be one of several options. Like a dropdown menu in code.
Pattern Matching with match
The Swiss Army knife of Rust — inspect values and act on every possible case.
The Option Type — No More Null
A box that might be empty or might have something inside. Rust's elegant fix for null.
Error Handling with Result
Things can go wrong. Result says "here is the answer" or "here is what went wrong."
Error Handling in Practice
Custom errors, the ? shortcut, and when it is OK to just crash.
Vectors — Growing Lists
A list that can grow and shrink. The most common collection in Rust.
Strings — Text in Rust
String vs &str, UTF-8, and why text is surprisingly tricky.
HashMaps — Key-Value Storage
Store data by name, like a dictionary or phone book.
Generics — One Size Fits All
Write code that works with any type. Like a cookie cutter that works with any dough.
Traits — Shared Behavior
Define what something CAN DO, not what it IS. Like job descriptions.
Trait Objects & Dynamic Dispatch
When you don't know the exact type at compile time — and that is fine.
Lifetimes — The Basics
Tell the compiler how long references live. Scary name, simple idea.
Lifetimes in Practice
Lifetime elision, structs with references, and the rules that save you typing.
Closures — Functions on the Go
Mini-functions you create on the fly. Like sticky notes with instructions.
Iterators — Processing Sequences
Walk through collections one item at a time with map, filter, and friends.
Modules & Packages
Organize your code into folders and files like a well-organized filing cabinet.
Crates & Cargo Advanced
Workspaces, feature flags, and publishing your own crate for the world to use.
Testing Your Code
Write tests that check your code works. Run them with one command.
Integration Tests & Organization
Test your whole program, organize tests, and make sure everything works together.
Smart Pointers — Box
Store data on the heap. Like renting a storage unit for big items.
Smart Pointers — Rc & Arc
Multiple owners for one value. Like a shared Netflix account.
Interior Mutability — RefCell
Break the rules (safely) when you need to mutate something behind a shared reference.
Concurrency — Threads
Do multiple things at once. Like having extra hands to help with chores.
Concurrency — Channels & Shared State
Threads talking to each other via messages or sharing data with locks.
Async/Await — Asynchronous Rust
Order food and do other stuff while waiting. That is async programming.
Unsafe Rust
Sometimes you need to take off the training wheels. Here is how to do it carefully.
Macros — Code That Writes Code
Automate repetitive patterns. Macros are your copy-paste robot.
Building a Real Project
Put it all together: build a CLI tool and a web API. You are a Rust developer now.