Learn Rust programming from scratch — fast and safe.
For: Developers with some programming experience, Engineers interested in systems programming
Learn what Rust is and run your first program in the browser.
Create variables to store values and experience the difference between immutable and mutable.
Explore Rust's basic types: integers, floats, booleans, and characters.
Learn how to bundle code into reusable functions.
Learn how to branch with if/else and repeat with loop and for.
Learn three ways to group multiple values together, and get your first taste of clone() with Vec.
Combine everything you've learned so far to build a number guessing game, and set up Cargo and your local environment.
See real-world memory bugs from other languages and discover how Rust solves them.
Learn Rust's three ownership rules and see how values move between variables.
Learn how to use values without transferring ownership by borrowing them.
Learn the two string types in Rust and how ownership and borrowing apply to them.
Define and use structs to bundle related data together.
Learn enums to represent values that can be one of several variants.
Apply ownership, borrowing, structs, and enums to hands-on debugging exercises.
Understand the concept of lifetimes and learn the most basic lifetime annotations.
Learn the two ways Rust handles errors (unrecoverable/recoverable) and understand what unwrap() does.
Split code into modules and use external crates from crates.io.
Use Option<T> to safely represent the absence of a value — no null needed.
Handle errors elegantly with Result<T, E> and the ? operator.
Define traits and implement them on various types to build idiomatic Rust interfaces.
Write flexible code with generic functions, structs, where clauses, and trait bounds.
Learn closure syntax, capture modes, and the differences between Fn/FnMut/FnOnce.
Process data elegantly with iter()/into_iter()/iter_mut() and map/filter/collect().
Practice patterns for making Phase 1 code more idiomatic Rust.
Master key collection methods, ownership rules, and UTF-8 gotchas.
Write automated tests with #[test], assert macros, and cargo test.
Use std::fs and serde to save and load configuration files.
Use the clap parser to build a clean command-line interface.
Walk through the project kickoff routine: requirements, Cargo workspace design, and GitHub publishing.
You've completed the Rust fundamentals course. Here's where to go from here and how to keep learning.