A comprehensive course on Rust programming language covering memory safety, ownership, concurrency, and modern systems programming.
The same lessons, mapped to your schedule.
What Rust is, getting it installed, and your first real project
The everyday building blocks: types, functions, branching, and loops
The ideas that make Rust memory-safe without a garbage collector — and that make every other lesson from here make sense
Build your own types — structs and enums — give them behavior with methods, and learn the pattern-matching skills that tie it all together
The three everyday containers that show up in nearly every Rust program ever written — growable lists, text, and key-value lookups
The judgment call that separates "fighting the compiler" from "writing Rust": when to panic, when to recover, how to propagate failure in one keystroke, and how to design error types that speak in your own words
The conceptual heart of the language: write code that works for any type, give types shared behavior through traits, and learn how Rust tracks how long references stay valid. The hardest stretch in this course — and, for most people, the most rewarding
Hand the "does this still work?" check you have been doing by hand since lesson one over to the computer: #[test], cargo test, the assert! family, and the realization that a failing test is the same panic! you already know
Two ideas that transform how Rust code looks and reads: closures, the anonymous functions that capture their surroundings, and iterators, the chainable tool that turns hand-written loops into single readable sentences
Every example so far has lived in one file. Modules for grouping code, the privacy boundary that pub has been quietly opting out of since the panic-vs-Result lesson, use for the paths you have been writing since std::collections::HashMap, and what crate and package have meant in Cargo.toml all along
Now you can build things. Reading real input from arguments, environment variables, and files; turning your own structs into JSON and back with serde, your second external crate; and a small CLI tool that puts every lesson so far to work
ADVANCED. Box, Rc, and RefCell finally explain Box<dyn Error> from the propagating-errors lesson and unlock multiple owners and shared mutability — then threads, message passing, and the thread-safe Arc/Mutex versions of the same shapes
ADVANCED, and the final stretch. async/await and Tokio - a second concurrency model, for waiting instead of running - followed by macro_rules!, the mechanism behind println!, vec!, and format! since lesson 6, and a closing map of where to go from here