This guide navigates the Comprehensive Rust Programming Curriculum. Each module lists all related study material from the sources below.
| Source | What it covers | Modules |
| 💪 Exercism ⭐ | Start here for practice — 2–6 exercises per module with in-browser code editor and optional human mentor feedback (exercism.org/tracks/rust) | 1–15 |
| 🖥️ Rust Playground | Official online Rust editor — run, share, test any snippet instantly in your browser, no install needed (play.rust-lang.org) | 1–15 |
| 🦀 hightechmind.io/rust/ | 5–12 curated live working programs per module, matched to the specific topics taught in that module (860+ examples) | 1–15 |
| 🏋️ Rustlings | Fix broken programs in your terminal — immediate feedback loop, 94 exercises (github.com/rust-lang/rustlings) | 1–13 |
| 📖 Book chapters | Exact chapter + section links into The Rust Programming Language (free online · paperback/eBook $39.95) | 1–15 |
| 📗 Programming Rust, 2nd ed. (O'Reilly $59.99) | Deeper treatment of every topic — excellent second text alongside the official book | 2–15 |
| 📘 Rust for Rustaceans (NoStarch $39.95) | Advanced ownership, traits, macros, async — Jon Gjengset's book | 8–15 |
| 🌐 Rust by Example | Browser-based: see any concept running instantly, then edit and re-run in-browser (doc.rust-lang.org/rust-by-example) | 1–10 |
| 🎓 Comprehensive Rust (Google) | Google's structured 4-day course — alternative path through Rust foundations (google.github.io/comprehensive-rust) | 1–5 |
| 📺 Jon Gjengset — Crust of Rust | Long-form video deep dives: smart pointers, channels, atomics, proc macros (YouTube playlist) | 11–15 |
| 📙 The Little Book of Rust Macros | The definitive reference for macro_rules! and procedural macros (veykril.github.io/tlborm) | 13 |
| 📊 Polars User Guide | Official documentation for the Polars DataFrame library (docs.pola.rs) | 14 |
| 📰 Serde Documentation | Serialization framework — essential for CSV and data processing (serde.rs) | 14 |
How to use this guide: For each module — do the Exercism exercises first (in-browser, no install). Then study the live hightechmind.io examples. Then read the book chapters. Use Rustlings for extra drilling. For quick experiments, paste any code snippet into play.rust-lang.org instantly. Watch Jon Gjengset for M11–15 when you feel stuck on a concept.
Course: Two-semester · ~36 weeks · designed for working professionals studying part-time.
Timeline: Start June 2026 → finish March 2027 (9 months).
Contents
| Phase | Weeks | Modules |
| Phase 1 | The Foundation | 1–12 | Modules 1–5 · Chapters 1–7 |
| Phase 2 | Core Proficiency & Certification | 13–28 | Modules 6–12 · Chapters 8–16 |
| Phase 3 | Advanced Specialization | 29–36 | Modules 13–15 |
Phase 1 — The Foundation (Weeks 1–12)
Phase 2 — Core Proficiency & Certification (Weeks 13–28)
🎯 → Certification Milestone — Linux Foundation LFRS · Week 28 · ~$395 · performance-based · Quick Reference ↓
Phase 3 — Advanced Specialization (Weeks 29–36)
- Module 13 — Advanced Rust (Macros) · macro_rules! · proc macros · syn/quote
- Module 14 — Data Processing with Polars and CSV · csv crate · Polars · DataFrame
- Module 15 — Final Capstone Project · CLI · web server · data pipeline · TUI
📚 Reference Resources Guide — all books, tools, courses, certifications at a glance
Phase 1: The Foundation (Weeks 1–12)
Modules 1–5 · Book Chapters 1–7
Module 1: Introduction & Environment Setup
Goal: Get comfortable with the Rust toolchain and write the first program.
Topics: What is Rust · rustup / rustc / cargo · VS Code + rust-analyzer · cargo new/build/run/check · Hello World anatomy
Exercises: Install Rust and verify version · Create a new project using Cargo · Modify "Hello, World!" to print your name.
📖 Book
| Chapter | Section |
| 📕 The Rust Programming Language, 2nd ed. (NoStarch, $39.95 · ISBN 978-1-7185-0044-0) | Chapters 1–3 · Print/eBook — the primary course text |
| Ch 1 — Getting Started | Full chapter |
| Ch 1.1 — Installation | rustup, rustc, toolchain management |
| Ch 1.2 — Hello, World! | First program, anatomy of main |
| Ch 1.3 — Hello, Cargo! | cargo new, cargo build, cargo run, cargo check |
| Appendix D — Useful Dev Tools | rustfmt, clippy, IDE setup |
🦀 hightechmind.io/rust/
| Example | What it shows |
| 006-palindrome-check | Short readable function — good first "real" program to study |
💪 Exercism
| Exercise | Focus |
| hello-world | The canonical first Rust exercise — run, modify, submit |
🏋️ Rustlings (fix broken programs: rustlings run <name>)
| Exercise | What you fix |
intro1 | Fix a println! call — your first Rust compile-fix cycle |
intro2 | Print with format arguments {} |
clippy1 | Clippy: unnecessary floating-point operation — run cargo clippy for the first time |
clippy2 | Clippy: prefer .is_none() over == None |
clippy3 | Clippy: type cast that clippy warns about |
| 🎓 Also in Curriculum (from Teacher Guide) | |
Module 2: Common Programming Concepts
Goal: Learn the basic building blocks of Rust syntax.
Topics: Variables & mutability (let, mut, const) · Scalar types (integers, floats, booleans, chars) · Compound types (tuples, arrays) · Functions & return values · Control flow (if, loop, while, for) · cargo fmt
Exercises: Temperature converter (F→C) · Generate the n-th Fibonacci number.
📖 Book
| Chapter | Section |
| 📕 The Rust Programming Language, 2nd ed. (NoStarch, $39.95 · ISBN 978-1-7185-0044-0) | Chapter 3 — Variables, Types, Functions, Control Flow |
| 📗 Programming Rust, 2nd ed. (O'Reilly, $59.99 · ISBN 978-1-492-05259-5) | Chapter 3 — Basic Types · Chapter 6 — Expressions |
| Ch 3 — Common Programming Concepts | Full chapter |
| Ch 3.1 — Variables and Mutability | let, mut, const, shadowing |
| Ch 3.2 — Data Types | Integers, floats, booleans, chars, tuples, arrays |
| Ch 3.3 — Functions | Parameters, return values, statements vs. expressions |
| Ch 3.4 — Comments | // and /// doc comments |
| Ch 3.5 — Control Flow | if, loop, while, for, ranges |
| Appendix B — Operators and Symbols | Complete operator reference |
🦀 hightechmind.io/rust/
💪 Exercism
| Exercise | Focus |
| lucians-luscious-lasagna | Variables, mutability, functions, const |
| raindrops | if / else if chains, string building |
| grains | Integer types, overflow, Result for invalid input |
| fizzbuzz | for loop + modulo — classic control flow |
| collatz-conjecture | while loop, integer arithmetic, Option result |
| leap | Boolean expressions, multiple conditions |
| gigasecond | Basic arithmetic on types |
| hamming | Loops, comparison, counting — simple algorithm |
🏋️ Rustlings (fix broken programs: rustlings run <name>)
Module 3: Ownership, Borrowing, and Slices
Goal: Understand Rust's unique approach to memory management without a garbage collector.
Topics: Stack and heap · Ownership rules · Variable scope and drop · Move semantics vs. Copy · References and borrowing (&, &mut) · Rules of references · Slice type
Exercises: Fix ownership errors in provided code snippets · Write a function that takes a string and returns the first word.
⚠️ Take your time here. Ownership is the hardest part of the curriculum — and the most important. Everything else builds on it.
📖 Book
| Chapter | Section |
| 📕 The Rust Programming Language, 2nd ed. (NoStarch, $39.95 · ISBN 978-1-7185-0044-0) | Chapter 4 — Ownership, Borrowing, Slices |
| 📗 Programming Rust, 2nd ed. (O'Reilly, $59.99 · ISBN 978-1-492-05259-5) | Chapter 4 — Ownership · Chapter 5 — References |
| Ch 4 — Understanding Ownership | Full chapter — do not skip any section |
| Ch 4.1 — What is Ownership? | Stack, heap, move semantics, drop |
| Ch 4.2 — References and Borrowing | &, &mut, the one-writer rule |
| Ch 4.3 — The Slice Type | String slices, array slices |
🦀 hightechmind.io/rust/
💪 Exercism
| Exercise | Focus |
| reverse-string | &str vs String — ownership across function boundaries |
| bob | Borrowing strings, .trim(), immutable references |
| run-length-encoding | Both sides: borrowing &str input, building owned String |
| two-fer | Option<&str> — optional borrowed string |
| phone-number | Iterating over &str, returning Option<String> |
| beer-song | Building strings, borrowing vs. owning |
| hamming | Result with borrowed string slices |
🏋️ Rustlings (fix broken programs: rustlings run <name>)
Module 4: Structs and Enums
Goal: Structure related data and define custom types.
Topics: Defining and instantiating structs · Tuple structs and unit-like structs · Methods and associated functions (impl) · Enums · Option<T> · match · if let
Exercises: Rectangle struct with area and perimeter methods · IpAddr enum for V4 and V6 addresses.
📖 Book
| Chapter | Section |
| 📕 The Rust Programming Language, 2nd ed. (NoStarch, $39.95 · ISBN 978-1-7185-0044-0) | Chapters 5–6 — Structs, Enums, Pattern Matching |
| 📗 Programming Rust, 2nd ed. (O'Reilly, $59.99 · ISBN 978-1-492-05259-5) | Chapter 9 — Structs · Chapter 10 — Enums and Patterns |
| Ch 5 — Using Structs | Full chapter |
| Ch 5.1 — Defining and Instantiating Structs | Struct syntax, field init shorthand, update syntax |
| Ch 5.2 — Example Program Using Structs | Worked Rectangle example — mirrors the exercise exactly |
| Ch 5.3 — Method Syntax | impl blocks, methods, associated functions |
| Ch 6 — Enums and Pattern Matching | Full chapter |
| Ch 6.1 — Defining an Enum | Enum variants, data in variants, Option<T> |
| Ch 6.2 — The match Control Flow | Patterns, exhaustiveness, catch-all arms |
| Ch 6.3 — if let | Concise single-pattern matching |
🦀 hightechmind.io/rust/
Option and enums:
Pattern matching (full series):
💪 Exercism
| Exercise | Focus |
| clock | Struct, impl block, Display trait, arithmetic |
| allergies | Enum + match, bitflag logic in struct |
| triangle | Struct + methods + boolean conditions |
| grade-school | Struct wrapping a HashMap, methods returning references |
| role-playing-game | Struct + Option fields + methods |
| beer-song | Enum + match for lyrics logic |
🏋️ Rustlings (fix broken programs: rustlings run <name>)
| Exercise | What you fix |
structs1 | Classic C-style struct — field access |
structs2 | Struct update syntax ..other |
structs3 | impl block with is_bigger() method |
enums1 | Enum variants — no data |
enums2 | Enum variants with data |
enums3 | match on enum — all arms must be handled |
options1 | Option — unwrap and handle None |
options2 | if let Some(x) — destructure an Option |
options3 | while let Some(x) — loop until None |
quiz2 | Quiz 2: strings + vecs + move semantics + modules + enums — broad combo |
| 🎓 Also in Curriculum (from Teacher Guide) | |
Module 5: Modules and Project Structure
Goal: Organize code into multiple files and modules.
Topics: Packages and crates · Defining modules (mod) · Paths (use, pub, super) · Separating modules into files
Exercises: Refactor a single-file program into a library crate and a binary crate.
📖 Book
| Chapter | Section |
| 📕 The Rust Programming Language, 2nd ed. (NoStarch, $39.95 · ISBN 978-1-7185-0044-0) | Chapter 7 — Packages, Crates, Modules |
| 📗 Programming Rust, 2nd ed. (O'Reilly, $59.99 · ISBN 978-1-492-05259-5) | Chapter 8 — Crates and Modules |
| Ch 7 — Managing Growing Projects | Full chapter |
| Ch 7.1 — Packages and Crates | What a package is, library vs. binary crate |
| Ch 7.2 — Defining Modules | mod, privacy rules, module tree |
| Ch 7.3 — Paths for Referring to Items | Absolute vs. relative paths, super |
| Ch 7.4 — Bringing Paths into Scope | use, as, re-exporting with pub use |
| Ch 7.5 — Separating Modules into Files | File layout for multi-file modules |
🦀 hightechmind.io/rust/
💪 Exercism
| Exercise | Focus |
| space-age | Clean struct — good project to refactor into lib/bin |
| magazine-cutout | HashMap ownership — natural multi-module candidate |
🏋️ Rustlings (fix broken programs: rustlings run <name>)
| Exercise | What you fix |
modules1 | mod — bring an item into scope with use |
modules2 | pub — make an item visible outside its module |
modules3 | Multi-module: use across sibling modules |
| 🎓 Also in Curriculum (from Teacher Guide) | |
Phase 1 Milestone: Write a CLI tool that accepts user input and processes it using structs and enums without fighting the borrow checker.
Phase 2: Core Proficiency & Certification (Weeks 13–28)
Modules 6–12 · Book Chapters 8–16
Module 6: Common Collections
Goal: Store data on the heap using standard library collections.
Topics: Vec<T> · String vs &str (UTF-8 text) · HashMap<K, V>
Exercises: Text interface to add employees to departments · Convert strings to Pig Latin.
📖 Book
| Chapter | Section |
| 📕 The Rust Programming Language, 2nd ed. (NoStarch, $39.95 · ISBN 978-1-7185-0044-0) | Chapter 8 — Vectors, Strings, Hash Maps |
| 📗 Programming Rust, 2nd ed. (O'Reilly, $59.99 · ISBN 978-1-492-05259-5) | Chapter 3 — Basic Types · Chapter 17 — Strings and Text |
| Ch 8 — Common Collections | Full chapter |
| Ch 8.1 — Storing Lists of Values with Vectors | Vec<T> creation, reading, updating, iteration |
| Ch 8.2 — Storing UTF-8 Encoded Text with Strings | Why you can't index strings — critical to understand |
| Ch 8.3 — Storing Keys with Associated Values in Hash Maps | HashMap, inserting, accessing, updating, entry API |
🦀 hightechmind.io/rust/
Vec / list operations:
HashMap:
Strings:
| Example | What it shows |
| 113-string-str | push_str, format!, chars() |
| 471-string-vs-str | Owned vs. borrowed — complete breakdown |
| 472-string-slices | String slice rules |
| 473-string-parsing-fromstr | FromStr / .parse() |
| 474-string-formatting | format!, write!, padding, alignment |
| 475-string-building | Building strings incrementally |
| 476-string-splitting | .split(), .splitn(), .split_whitespace() |
| 477-string-trimming | .trim(), .trim_start(), .trim_end() |
| 478-string-searching | .contains(), .find(), .rfind() |
| 479-string-replacing | .replace(), .replacen() |
| 480-string-chars | .chars() — iterating over chars |
| 481-string-bytes | .bytes() — iterating over bytes |
| 482-string-unicode | Unicode awareness in Rust strings |
| 483-string-encoding | Encoding / decoding |
| 484-string-cow-usage | Cow<str> for avoiding unnecessary allocations |
| 485-string-concatenation | + operator vs. format! |
| 486-string-regex-pattern | Pattern-based string matching |
| 487-string-interning | String interning patterns |
| 488-string-owning-ref | Owning references to string data |
| 489-string-arc | Arc<str> — shared string ownership |
| 490-string-fixed-array | Fixed-size string buffers |
| 492-osstr-handling | OsStr / OsString for system paths |
| 494-string-number-conversion | .parse(), .to_string() |
| 495-string-template-pattern | Template substitution patterns |
| 496-string-diff-pattern | String diffing |
| 497-string-case-conversion | .to_lowercase(), .to_uppercase() |
| 498-string-truncation | Safe UTF-8 truncation |
| 499-string-escape | Escape sequences |
| 500-string-compression | Run-length compression on strings |
💪 Exercism
🏋️ Rustlings (fix broken programs: rustlings run <name>)
| Exercise | What you fix |
vecs1 | Create a Vec and push items |
vecs2 | Iterate over a Vec and map values |
strings1 | &str → String conversion |
strings2 | .contains(), .replace() methods |
strings3 | .from(), .to_string(), .to_owned() |
strings4 | Pass &str vs &String to functions |
hashmaps1 | Insert fruit counts into a HashMap |
hashmaps2 | .entry().or_insert() — avoid overwriting |
hashmaps3 | Build a score table — frequency counting pattern |
| 🎓 Also in Curriculum (from Teacher Guide) | |
Module 7: Error Handling
Goal: Handle errors robustly using Rust's type system.
Topics: panic! · Result<T, E> · The ? operator · Custom error types
Exercises: Read a file and handle "file not found" vs "permission denied".
📖 Book
🦀 hightechmind.io/rust/
Option combinators:
Result and error handling:
💪 Exercism
| Exercise | Focus |
| error-handling | Custom error types, Result, From — full workflow |
| nth-prime | Returning Result for invalid input |
| robot-name | Struct + Result, mutable state |
| wordy | Parsing user input — Result for malformed commands |
| custom-set | Generic collection with error-producing operations |
🏋️ Rustlings (fix broken programs: rustlings run <name>)
| Exercise | What you fix |
errors1 | Return a String error instead of panic! |
errors2 | Propagate errors with ? operator |
errors3 | Fix a ? operator in a function returning Option |
errors4 | Custom error type with Box<dyn Error> |
errors5 | Multiple error types — Box<dyn Error> pattern |
errors6 | Implement From to convert between error types |
| 🎓 Also in Curriculum (from Teacher Guide) | |
Module 8: Generic Types, Traits, and Lifetimes
Goal: Write flexible, reusable code and handle references correctly.
Topics: Generic functions & structs · Traits & default implementations · Trait bounds & impl Trait · Lifetimes ('a) · Elision rules · 'static
Exercises: Summary trait for NewsArticle and Tweet · longest function returning the longer of two string slices.
📖 Book
| Chapter | Section |
| 📕 The Rust Programming Language, 2nd ed. (NoStarch, $39.95 · ISBN 978-1-7185-0044-0) | Chapter 10 — Generics, Traits, Lifetimes |
| 📗 Programming Rust, 2nd ed. (O'Reilly, $59.99 · ISBN 978-1-492-05259-5) | Chapter 11 — Traits and Generics · Chapter 13 — Utility Traits |
| 📘 Rust for Rustaceans (NoStarch, $39.95 · ISBN 978-1-7185-0185-0) by Jon Gjengset | Chapter 2 — Types · Chapter 3 — Designing Interfaces |
| Ch 10 — Generic Types, Traits, and Lifetimes | Full chapter — core reading |
| Ch 10.1 — Generic Data Types | <T> in functions, structs, enums |
| Ch 10.2 — Traits: Defining Shared Behavior | trait, impl for, default methods, bounds |
| Ch 10.3 — Validating References with Lifetimes | Annotation syntax, elision rules, 'static |
| Ch 17.2 — Using Trait Objects | dyn Trait — runtime dispatch |
| Ch 19.3 — Advanced Traits | Associated types, newtype pattern, operator overloading |
| Ch 19.4 — Advanced Types | Type aliases, ! type, DSTs |
🦀 hightechmind.io/rust/
Core traits:
Functional trait theory (category-theoretic traits):
Advanced trait patterns:
Const generics:
Lifetimes:
💪 Exercism
| Exercise | Focus |
| accumulate | Generic function + trait bounds — re-implement map |
| dot-dsl | Builder pattern with generics and traits |
| role-playing-game | Traits + Option — shared behavior |
| space-age | Generic struct + trait implementation |
| clock | Display + Add trait implementation |
🏋️ Rustlings (fix broken programs: rustlings run <name>)
| Exercise | What you fix |
generics1 | Generic function — add type parameter <T> |
generics2 | Generic struct — struct Wrapper<T> |
traits1 | Define and implement a trait |
traits2 | Default method implementation |
traits3 | Trait objects Box<dyn Trait> — dynamic dispatch |
traits4 | Trait bounds where T: Trait |
traits5 | impl Trait in function signatures |
lifetimes1 | Add 'a annotation to a function returning a reference |
lifetimes2 | Struct with a lifetime-annotated reference field |
lifetimes3 | Fix the 'static lifetime annotation |
using_as | as casting — numeric type conversion |
from_into | From and Into traits — type conversion |
from_str | FromStr — parse a string into a custom type |
as_ref_mut | AsRef and AsMut — cheap reference conversion |
try_from_into | TryFrom/TryInto — fallible conversion |
quiz3 | Quiz 3: generics + traits — ReportCard with generic grade type |
| 🎓 Also in Curriculum (from Teacher Guide) | |
Module 9: Automated Tests
Goal: Ensure code correctness.
Topics: #[test] · assert!, assert_eq!, assert_ne! · #[should_panic] · Integration tests (tests/ directory)
Exercises: Comprehensive tests for the Rectangle struct.
📖 Book
🦀 hightechmind.io/rust/
💪 Exercism
| Exercise | Focus |
| sieve | Tests provided — write code that makes them pass |
| perfect-numbers | #[should_panic], Result returns in tests |
| grade-school | Multiple assertions per test, test organization |
| prime-sieve | Red-green-refactor cycle practice |
🏋️ Rustlings (fix broken programs: rustlings run <name>)
| Exercise | What you fix |
tests1 | Write a test with assert! |
tests2 | assert_eq! and assert_ne! |
tests3 | #[should_panic] — test that code panics |
| 🎓 Also in Curriculum (from Teacher Guide) | |
Module 10: Functional Features: Iterators and Closures
Goal: Use functional programming patterns.
Topics: Closures (anonymous functions, environment capture) · Iterator trait and next · Consuming adapters (sum, collect) · Producing adapters (map, filter)
Exercises: Re-implement the IO Project (grep clone) using iterators and closures.
📖 Book
🦀 hightechmind.io/rust/
Closures — core:
Closure series (501–530):
Iterators — core:
Extended iterator series (256–290):
💪 Exercism
| Exercise | Focus |
| nucleotide-count | .filter().count(), HashMap |
| isbn-verifier | .chars(), .enumerate(), .filter(), .fold() |
| difference-of-squares | .map(), .sum() |
| all-your-base | Iterators + error handling combined |
| accumulate | Implement map without the standard library |
| sublist | .windows() — sliding window search |
| flatten-array | .flatten() / .flat_map() |
| pascals-triangle | .zip() + accumulated builds |
| minesweeper | 2D iteration with closures |
| luhn | .chars(), .rev(), .enumerate(), .fold() |
| scrabble-score | .chars(), .map(), .sum() |
| pangram | .collect::<HashSet<_>>() |
| roman-numerals | Iterator fold over lookup table |
🏋️ Rustlings (fix broken programs: rustlings run <name>)
| Exercise | What you fix |
iterators1 | Create an iterator with .iter() and next() |
iterators2 | .map() — transform each element |
iterators3 | .filter() and .chain() — compose iterators |
iterators4 | .fold() / .sum() — consuming iterators |
iterators5 | Complex iterator chain — .flat_map(), .zip() |
| 🎓 Also in Curriculum (from Teacher Guide) | |
Module 11: Smart Pointers
Goal: Advanced memory management capabilities.
Topics: Box<T> · Deref trait · Drop trait · Rc<T> (multiple ownership) · RefCell<T> (interior mutability) · Reference cycles
Exercises: Cons list using Box and Rc · Mock object using RefCell.
📖 Book
| Chapter | Section |
| 📕 The Rust Programming Language, 2nd ed. (NoStarch, $39.95 · ISBN 978-1-7185-0044-0) | Chapter 15 — Smart Pointers |
| 📗 Programming Rust, 2nd ed. (O'Reilly, $59.99 · ISBN 978-1-492-05259-5) | Chapter 5 — References · Chapter 22 — Unsafe Code |
| 📘 Rust for Rustaceans (NoStarch, $39.95 · ISBN 978-1-7185-0185-0) by Jon Gjengset | Chapter 1 — Foundations (ownership, Box, Rc, RefCell) |
| Ch 15 — Smart Pointers | Full chapter |
| Ch 15.1 — Box<T> | Heap allocation, recursive types |
| Ch 15.2 — Deref Trait | *, deref coercions |
| Ch 15.3 — Drop Trait | Custom cleanup, std::mem::drop |
| Ch 15.4 — Rc<T> | Shared ownership, reference counting |
| Ch 15.5 — RefCell<T> and Interior Mutability | Runtime borrow checking |
| Ch 15.6 — Reference Cycles and Memory Leaks | Weak<T>, avoiding cycles |
🦀 hightechmind.io/rust/
💪 Exercism
🏋️ Rustlings (fix broken programs: rustlings run <name>)
| Exercise | What you fix |
box1 | Box<T> — recursive enum (cons list) requires boxing |
rc1 | Rc<T> — multiple owners via reference counting |
arc1 | Arc<T> — thread-safe Rc with Mutex |
cow1 | Cow<'a, T> — clone-on-write: borrow or own |
| 🎓 Also in Curriculum (from Teacher Guide) | |
Module 12: Concurrency
Goal: Write safe concurrent code.
Topics: spawn & join · Message passing (mpsc) · Shared state (Mutex<T> & Arc<T>) · Send & Sync traits
Exercises: Build a multi-threaded web server.
📖 Book
| Chapter | Section |
| 📕 The Rust Programming Language, 2nd ed. (NoStarch, $39.95 · ISBN 978-1-7185-0044-0) | Chapters 16 + 20 — Concurrency + Web Server Project |
| 📗 Programming Rust, 2nd ed. (O'Reilly, $59.99 · ISBN 978-1-492-05259-5) | Chapter 19 — Concurrency · Chapter 20 — Asynchronous Programming |
| 📙 Rust Atomics and Locks (O'Reilly, $54.99 · ISBN 978-1-098-11944-7) by Mara Bos — also free online | The definitive book on low-level concurrency in Rust |
| 📘 Rust for Rustaceans (NoStarch, $39.95 · ISBN 978-1-7185-0185-0) by Jon Gjengset | Chapter 8 — Asynchronous Programming · Chapter 9 — Unsafe Code |
| Ch 16 — Fearless Concurrency | Full chapter |
| Ch 16.1 — Using Threads | thread::spawn, join, move closures |
| Ch 16.2 — Message Passing | mpsc channels, send, recv |
| Ch 16.3 — Shared-State Concurrency | Mutex<T>, Arc<T>, the canonical pattern |
| Ch 16.4 — Extensible Concurrency: Sync and Send | Send, Sync — compile-time thread safety |
| Ch 20 — Final Project: Web Server | Full multi-threaded server — the Module 12 exercise |
🦀 hightechmind.io/rust/
Thread basics:
Async/await (related to concurrency):
💪 Exercism
🏋️ Rustlings (fix broken programs: rustlings run <name>)
| Exercise | What you fix |
threads1 | thread::spawn + .join() — basic thread creation |
threads2 | Arc<Mutex<T>> — shared mutable state across threads |
threads3 | mpsc channels — send messages between threads |
| 🎓 Also in Curriculum (from Teacher Guide) | |
Certification Milestone: LFRS Exam (End of Phase 2, Week 28)
You have completed Modules 1–12. This is the natural exam point.
Linux Foundation Rust Programming Professional Certificate (LFRS)
What the exam covers
The exam maps directly to Modules 1–12 of this curriculum:
| Exam domain | Covered in |
| Syntax, types, control flow | Modules 1–2 |
| Ownership, borrowing, lifetimes | Modules 3, 8 |
| Structs, enums, pattern matching | Module 4 |
| Modules and crates | Module 5 |
| Collections, strings | Module 6 |
| Error handling | Module 7 |
| Traits and generics | Module 8 |
| Testing | Module 9 |
| Closures and iterators | Module 10 |
Smart pointers (Box, Rc, RefCell) | Module 11 |
Concurrency (threads, channels, async) | Module 12 |
Modules 13–15 are NOT required for this certification. Macros, Polars/CSV data processing, and the capstone are advanced specializations beyond the LFRS scope — that is why they come after.
How to register
- Go to training.linuxfoundation.org/certification/rust-programming-professional-certificate
- Click "Get Certified" — you can also bundle it with the LFD459 training course for a discount
- You have 12 months from purchase to schedule the exam
- Schedule via the PSI Online portal (link sent by email after purchase)
- You get one free retake if you do not pass on the first attempt
Final prep checklist (Week 27–28)
Phase 3: Advanced Specialization (Weeks 29–36)
Modules 13–15 — post-certification, not required for LFRS
Module 13: Advanced Rust (Macros)
Goal: Metaprogramming — write code that writes code.
Topics:
- Declarative Macros (
macro_rules!) — syntax, matchers, transcribers, repetition, recursion, hygiene - Procedural Macros — custom derive, attribute-like, function-like ·
syn and quote
Exercises: my_vec! macro (like vec!) · Derive macro that implements Hello trait.
📖 Book & References
🦀 hightechmind.io/rust/
Declarative macros:
Procedural macros:
Type-level patterns (macro-adjacent):
💪 Exercism
| Exercise | Focus |
| macros | Direct macro_rules! practice |
🏋️ Rustlings (fix broken programs: rustlings run <name>)
| Exercise | What you fix |
macros1 | Call a macro that doesn't exist — understand the ! call syntax |
macros2 | Write a macro_rules! that takes an argument |
macros3 | Macro with multiple patterns — $(...)* repetition |
macros4 | Macro export — #[macro_export] for crate-wide visibility |
| 🎓 Also in Curriculum (from Teacher Guide) | |
Module 14: Data Processing with Polars and CSV
Goal: Efficiently handle and analyze large datasets using Rust.
Topics: CSV with the csv crate · Polars: Series and DataFrames · Filtering, selecting, sorting · Aggregations and GroupBy · Lazy vs. eager execution
Exercises: Read CSV weather data, calculate average temperature · Polars: load dataset, filter, export summary CSV.
📖 Books (Print / eBook)
| Title | Chapters |
| 📗 Programming Rust, 2nd ed. (O'Reilly, $59.99 · ISBN 978-1-492-05259-5) | Chapter 17 — Strings and Text · Chapter 18 — Input and Output |
| 📙 Zero To Production In Rust (self-published, $39.99 — also ebook) by Luca Palmieri | Chapter 5+ — data ingestion, serialization, production patterns |
📖 Documentation & Guides
🦀 hightechmind.io/rust/
Serialization:
Parsers (data ingestion):
💪 Exercism (prerequisite data-processing skills — Exercism has no dedicated Polars exercises)
🎓 Also in Curriculum (from Teacher Guide)
| Resource | URL | What it adds |
| Polars User Guide | docs.pola.rs | Primary reference — start here before coding |
| Jon Gjengset — Crust of Rust | YouTube playlist | Serde / data processing episodes |
Module 15: Final Capstone Project
Goal: Apply all learned concepts in a substantial, portfolio-ready application.
Options: CLI Tool (like ripgrep) · Web Server (multi-threaded, from scratch) · Data Pipeline (CSV/JSON → Polars → reports) · TUI Application (ratatui) · Embedded (microcontroller driver)
📖 Book & References
🦀 hightechmind.io/rust/
Data structures for capstone projects:
Algorithms:
Unsafe Rust / FFI / performance (advanced capstone):
Learning paths — curated sequences:
💪 Exercism (final-stage challenges)
| Exercise | Focus |
| poker | Complex domain: sorting, comparing, grouping |
| forth | Interpreter — stack machine, language design |
| react | Reactive event graph — dependency tracking, ownership |
| robot-simulator | State machine — structs + enums + methods combined |
| xorcism | Lifetime-heavy streaming XOR cipher |
| decimal | Arithmetic on custom types — operator overloading |
Final Deliverable: A complete, tested, and documented Rust application to showcase in your portfolio.
Reference Resources Guide
Complete at-a-glance overview of every resource used in this curriculum. Use this page as your bookmark hub.
📖 Books
🖥️ Interactive Practice & Online Playgrounds
| Resource | URL | Cost | What You Do | Best For |
| Exercism — Rust Track | exercism.org/tracks/rust | Free (mentored) | Solve 100+ exercises with in-browser editor — no install needed. Optional human mentor feedback. | ⭐ All modules — best hands-on practice |
| Rust Playground | play.rust-lang.org | Free | Official playground — run, share, format, Clippy-check any Rust snippet instantly. Shareable links. | All modules — paste any example, test immediately |
| Rust Explorer | godbolt.org/z/rust | Free | Compiler Explorer — see what your Rust compiles to (assembly, MIR, LLVM IR). Multiple Rust versions. | M3+ — understand what the compiler actually does |
| Rustlings | github.com/rust-lang/rustlings | Free | Fix 94 broken programs in your terminal — immediate red/green feedback loop | Modules 1–13 — fast syntax and concept drilling |
| Codewars — Rust | codewars.com/kata/search/rust | Free | Kata challenges in Rust with in-browser editor — community-rated difficulty | M5+ — algorithm practice beyond Exercism |
| LeetCode — Rust | leetcode.com | Free/Paid | 2000+ algorithm problems — Rust is supported with in-browser editor | M8+ — interview prep in Rust |
| Rust Quiz | dtolnay.github.io/rust-quiz | Free | Tricky language questions with explanations | Modules 3–8 — deepen understanding |
| Replit | replit.com | Free/Paid | Full Rust project in browser — install crates, run cargo commands | M5+ — when you need a full project environment online |
🎓 Courses
| Resource | URL | Cost | Format | Best For |
| Comprehensive Rust (Google) | google.github.io/comprehensive-rust | Free | 4-day course (self-paced) | Modules 1–5 — structured alternative to the book |
| Linux Foundation: Rust Fundamentals | training.linuxfoundation.org | Paid | Online, self-paced | Modules 1–12 — prep for LF certification |
| Zero To Production In Rust | zero2prod.com | Paid book | Book + exercises | Module 15 (Web) — production web server in Rust |
🎥 Video
| Channel / Series | URL | Cost | Topics Covered | Best For |
| Jon Gjengset — Crust of Rust | youtube.com — playlist | Free | Smart pointers, concurrency, atomics, channels, proc macros | Modules 11–13 — deep dives |
| Jon Gjengset — Decrusted | youtube.com/@jonhoo | Free | Exploring popular crates (tokio, serde, axum) | Modules 12–15 |
| Let's Get Rusty | youtube.com/@letsgetrusty | Free | Book chapters, ownership, traits | Modules 1–8 — accessible walkthroughs |
| Ryan Levick — Rust streams | youtube.com/@ryanlevicksoftware | Free | Rust in production, error handling | Modules 7–12 |
🦀 Live Examples Library
📜 Official Reference Docs
🛠️ Tools
| Tool | Install | What It Does |
| rustup | curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh | Toolchain manager — install Rust, switch versions |
| cargo | included with rustup | Build, test, run, publish |
| rust-analyzer | VS Code extension or rust-analyzer.github.io | IDE support — completions, errors, go-to-def |
| clippy | rustup component add clippy → cargo clippy | Linter — catches common mistakes |
| rustfmt | rustup component add rustfmt → cargo fmt | Formatter — enforces style |
| cargo-watch | cargo install cargo-watch | Auto-recompile on save |
| cargo-expand | cargo install cargo-expand | Expand macros — essential for Module 13 |
| cargo-flamegraph | cargo install flamegraph | Profiling — for Module 15 performance work |
| cargo-criterion | cargo install cargo-criterion | Benchmarking framework |
🏆 Certifications
🗺️ Per-Module Resource Map
| Module | Topic | Book Chapters | Curriculum Resources | Live Examples | Exercism |
| 1 | Setup | Ch 1, App D | Rustlings · Comprehensive Rust · Rust by Example | 001, 006 | hello-world |
| 2 | Common Concepts | Ch 3, App B | Rustlings · Comprehensive Rust · RBE flow_control | 003, 022, 058, 069–071 | lucians-lasagna · raindrops · grains · fizzbuzz |
| 3 | Ownership | Ch 4 | Rustlings · Comprehensive Rust · RBE scope | 101–104, 113–115 | reverse-string · bob · run-length-encoding |
| 4 | Structs & Enums | Ch 5–6 | Rustlings · Comprehensive Rust · RBE custom_types | 041–044, 058, 061–590 | clock · allergies · triangle |
| 5 | Modules | Ch 7 | Rustlings · RBE modules | 063, 065 | space-age |
| 6 | Collections | Ch 8 | RBE std/vec · RBE std/hash | 002–028, 068, 073, 113, 471–500 | word-count · anagram · pangram |
| 7 | Error Handling | Ch 9 | RBE error | 045–050, 072–073, 291–320 | error-handling · wordy |
| 8 | Traits & Lifetimes | Ch 10, 17.2, 19.3–4 | RBE generics · RBE traits | 077–085, 123–150, 381–410, 531–560 | accumulate · dot-dsl |
| 9 | Testing | Ch 11 | RBE testing | 744–758 | sieve · perfect-numbers |
| 10 | Iterators & Closures | Ch 13 | RBE closures · RBE iterators | 054–057, 085–104, 256–290, 501–530 | nucleotide-count · isbn-verifier · accumulate |
| 11 | Smart Pointers | Ch 15 | Jon Gjengset: Smart Pointers | 108–118, 355–368, 550–553 | simple-linked-list · doubly-linked-list |
| 12 | Concurrency | Ch 16, 20 | Jon Gjengset: Channels · Atomics | 109, 321–350, 441–470 | parallel-letter-frequency · bank-account |
| 13 | Macros | Ch 19.5 + tlborm | Jon Gjengset: Proc Macros | 411–440, 422–427, 734–743 | macros |
| 14 | Data Processing | Polars Guide · csv docs · Serde docs | Jon Gjengset: Serde episodes | 171, 175, 759–773 | saddle-points · tournament |
| 15 | Capstone | Ch 12 + Ch 20 + crate docs | Jon Gjengset: axum/tokio | 251–263, 784–848, 699–732, path-* | poker · forth · react |
Certification Quick Reference
You've completed Modules 1–15. Here is everything you need to get certified.
Linux Foundation Rust Programming Professional Certificate (LFRS)
| |
| Provider | Linux Foundation / edX |
| Exam page | training.linuxfoundation.org/certification/rust-programming-professional-certificate |
| Cost | ~$395 USD (bundles occasionally discounted on edX) |
| Format | Performance-based — write real Rust code in a browser IDE (no multiple choice) |
| Duration | 2 hours |
| Passing score | 66% |
| Validity | 3 years, then renewable |
| Proctored | Yes — via PSI Online; requires webcam + quiet room |
| Free retake | One free retake included if you do not pass first attempt |
Exam domain coverage
| Exam domain | Covered in |
| Syntax, types, control flow | Modules 1–2 |
| Ownership, borrowing, lifetimes | Modules 3, 8 |
| Structs, enums, pattern matching | Module 4 |
| Modules and crates | Module 5 |
| Collections, strings | Module 6 |
| Error handling | Module 7 |
| Traits and generics | Module 8 |
| Testing | Module 9 |
| Closures and iterators | Module 10 |
Smart pointers (Box, Rc, RefCell) | Module 11 |
Concurrency (threads, channels, async) | Module 12 |
Modules 13–15 (Macros, Data Processing, Capstone) are advanced specializations — they go beyond the LFRS exam scope.
How to register
- Go to training.linuxfoundation.org/certification/rust-programming-professional-certificate
- Click "Get Certified" — optionally bundle with LFD459 training course for a discount
- You have 12 months from purchase to schedule the exam
- Schedule via the PSI Online portal (link emailed after purchase)
- One free retake if you do not pass on the first attempt
Final prep checklist
↑ Back to top