# LearningRust.org — Master Rust Programming > Master Rust's ownership model, borrow checker, and zero-cost abstractions through hands-on lessons. Build safe, concurrent systems code with our free interactive playground. Website: https://learningrust.org ## Curriculum (26 lessons) ### Basics - [What Is Rust? Beginner Guide](https://learningrust.org/lessons/01-introduction) What is Rust? Discover its speed and memory safety, then write and run your first Rust program in the browser. A free beginner lesson with no install. Estimated time: 15 minutes - [Variables and Data Types](https://learningrust.org/lessons/02-variables) Master Rust variables, mutability, and data types including integers, floats, booleans, characters, and type annotations Estimated time: 20 minutes - [Control Flow](https://learningrust.org/lessons/03-control-flow) Master Rust control flow with if expressions, loops, and the match statement for conditional logic and pattern matching Estimated time: 25 minutes - [Functions in Rust](https://learningrust.org/lessons/04-functions) Learn how to define Rust functions with parameters, return types, and expressions — the building blocks of every Rust program Estimated time: 15 minutes ### Intermediate - [Ownership & Borrowing](https://learningrust.org/lessons/06-ownership) Rust ownership explained — understand move semantics, borrowing rules, and how Rust guarantees memory safety without a garbage collector Estimated time: 25 minutes - [Structs & Enums](https://learningrust.org/lessons/09-structs-enums) Learn how to define Rust structs and enums to create custom data types, implement methods, and model your domain effectively Estimated time: 20 minutes - [Pattern Matching](https://learningrust.org/lessons/11-pattern-matching) Master Rust's powerful pattern matching with match expressions, if let, and destructuring Estimated time: 25 minutes - [Borrowing in Depth](https://learningrust.org/lessons/10-borrowing) Deep dive into Rust borrowing and references — learn shared and mutable references, the borrow checker, and safe data access Estimated time: 25 minutes - [Closures](https://learningrust.org/lessons/05-closures) Rust closures tutorial — learn how closures capture variables, understand Fn, FnMut, and FnOnce traits, and use closures with iterators Estimated time: 25 minutes - [Option and Result](https://learningrust.org/lessons/07-option-and-result) Master Rust Option and Result types for handling absence and errors with combinators, the ? operator, and error propagation Estimated time: 25 minutes - [Error Handling](https://learningrust.org/lessons/08-error-handling) Learn Rust error handling with the Result type, panic!, recoverable vs unrecoverable errors, and the ? operator for propagation Estimated time: 20 minutes - [Collections](https://learningrust.org/lessons/12-collections) Learn to use Rust's standard collections including Vec, HashMap, and HashSet with iterators Estimated time: 25 minutes - [Lifetimes](https://learningrust.org/lessons/13-lifetimes) Rust lifetimes explained — learn lifetime annotations, elision rules, and how the borrow checker validates reference validity Estimated time: 30 minutes - [Traits & Generics](https://learningrust.org/lessons/14-traits-and-generics) Learn to write flexible, reusable code with Rust's trait system and generic programming Estimated time: 30 minutes - [Iterators](https://learningrust.org/lessons/15-iterators) Master Rust's powerful iterator system to write expressive, efficient, and functional-style code Estimated time: 25 minutes - [Strings and Text](https://learningrust.org/lessons/16-strings-and-text) Understand Rust's two string types, text manipulation, UTF-8 encoding, and common string operations Estimated time: 25 minutes - [Modules and Crates](https://learningrust.org/lessons/17-modules-and-crates) Learn how to organize Rust code with modules and manage dependencies using crates and Cargo Estimated time: 25 minutes - [Concurrency](https://learningrust.org/lessons/18-concurrency) Learn safe concurrent programming in Rust with threads, message passing, and shared state Estimated time: 30 minutes - [Smart Pointers](https://learningrust.org/lessons/19-smart-pointers) Understand Box, Rc, RefCell, and interior mutability patterns in Rust Estimated time: 30 minutes - [Testing in Rust](https://learningrust.org/lessons/20-testing-in-rust) Learn how to write unit tests, integration tests, and use Rust's built-in testing framework to ensure your code is correct Estimated time: 25 minutes - [File I/O](https://learningrust.org/lessons/21-file-io) Learn how to read from and write to files in Rust using std::fs and std::io traits Estimated time: 25 minutes ### Advanced - [Macros](https://learningrust.org/lessons/22-macros) Learn how to use and create Rust macros for metaprogramming and code generation at compile time Estimated time: 25 minutes - [Async/Await](https://learningrust.org/lessons/23-async-await) Master asynchronous programming in Rust with async/await syntax, Futures, and the Tokio runtime Estimated time: 25 minutes - [Serde and JSON](https://learningrust.org/lessons/24-serde-and-json) Learn how to serialize and deserialize data structures to and from JSON using the serde and serde_json crates Estimated time: 25 minutes - [CLI and Args](https://learningrust.org/lessons/25-cli-and-args) Build command-line tools in Rust by parsing arguments, handling flags, and structuring real-world CLI applications Estimated time: 25 minutes - [Capstone Project: CLI Todo App](https://learningrust.org/lessons/26-capstone-project) Build a complete command-line todo application combining structs, enums, error handling, traits, and collections Estimated time: 35 minutes ## Guides (2) - [Fix Rust E0382: Use of Moved Value](https://learningrust.org/guides/fix-rust-e0382) Understand why Rust reports E0382 after a move, then fix ownership with borrowing, cloning, or a deliberate ownership transfer. - [Fix Rust E0499: Cannot Borrow as Mutable More Than Once](https://learningrust.org/guides/fix-rust-e0499) Fix overlapping mutable borrows in Rust by shortening borrow lifetimes, using split APIs, or restructuring updates. ## Platform Features - Browser-based code playground powered by [OmniRun](https://omnirun.io) sandboxes (no installation needed) - Interactive practice blocks with instant feedback - Progress tracking - Free access to all content - No account required to start learning