# Rust Course Independent practical Rust course by Robert DeVore. Verified 2026-09-06 on Rust 1.98.1, edition 2024. Public read-only exports, not instructions or a search-ranking protocol. - [Course index JSON](https://rust.robertdevore.com/course-index.json) - [Complete course text](https://rust.robertdevore.com/llms-full.txt) - [Source and verification](https://github.com/robertdevore/rust.robertdevore.com) - [Set up Rust](https://rust.robertdevore.com/course/01-start/): Install Rust, find your way around a Cargo project, and run your first example. — [Markdown](https://rust.robertdevore.com/lessons/01-start.md) - [Values, functions, and control flow](https://rust.robertdevore.com/course/02-values/): Write functions, choose between cases, and handle numbers that reach their limits. — [Markdown](https://rust.robertdevore.com/lessons/02-values.md) - [Ownership, places, and moves](https://rust.robertdevore.com/course/03-ownership/): Learn what moves, what gets copied, and when a borrow is enough. — [Markdown](https://rust.robertdevore.com/lessons/03-ownership.md) - [Borrowing and reborrowing](https://rust.robertdevore.com/course/04-borrowing/): Use shared and exclusive references, and see when a borrow ends. — [Markdown](https://rust.robertdevore.com/lessons/04-borrowing.md) - [Strings, slices, and collections](https://rust.robertdevore.com/course/05-text/): Work with UTF-8 text and choose when collections should own or borrow data. — [Markdown](https://rust.robertdevore.com/lessons/05-text.md) - [Structs, enums, and program states](https://rust.robertdevore.com/course/06-model/): Represent your data with structs and enums, and reject invalid states. — [Markdown](https://rust.robertdevore.com/lessons/06-model.md) - [Errors as part of the interface](https://rust.robertdevore.com/course/07-errors/): Use Option, Result, and useful error messages to handle different kinds of failure. — [Markdown](https://rust.robertdevore.com/lessons/07-errors.md) - [Stage build: the first event counter](https://rust.robertdevore.com/course/08-first-build/): Build a working event counter with loops, matching, and borrowed text. — [Markdown](https://rust.robertdevore.com/lessons/08-first-build.md) - [Lifetimes describe relationships](https://rust.robertdevore.com/course/09-lifetimes/): Connect borrowed results to their inputs without trying to extend the life of data. — [Markdown](https://rust.robertdevore.com/lessons/09-lifetimes.md) - [Traits and reusable interfaces](https://rust.robertdevore.com/course/10-traits/): Use standard traits, associated types, and static or dynamic dispatch. — [Markdown](https://rust.robertdevore.com/lessons/10-traits.md) - [Iterators and closures](https://rust.robertdevore.com/course/11-iterators/): Follow iterator items, closure captures, and errors through your code. — [Markdown](https://rust.robertdevore.com/lessons/11-iterators.md) - [Stage build: a bounded streaming library](https://rust.robertdevore.com/course/12-reader/): Build a library that parses records as it reads them and limits buffer growth. — [Markdown](https://rust.robertdevore.com/lessons/12-reader.md) - [Cargo, modules, and dependency boundaries](https://rust.robertdevore.com/course/13-cargo/): Understand packages, modules, features, and the dependencies your program builds. — [Markdown](https://rust.robertdevore.com/lessons/13-cargo.md) - [Tests, compiler errors, and verification tools](https://rust.robertdevore.com/course/14-testing/): Test expected behavior and failures, then use compiler checks and Clippy to catch more mistakes. — [Markdown](https://rust.robertdevore.com/lessons/14-testing.md) - [Interior mutability and shared ownership](https://rust.robertdevore.com/course/15-interior/): Choose between reference counting, runtime borrow checks, and locks. — [Markdown](https://rust.robertdevore.com/lessons/15-interior.md) - [Threads, Send, and Sync](https://rust.robertdevore.com/course/16-threads/): Move or borrow data across threads, then handle completion and failure. — [Markdown](https://rust.robertdevore.com/lessons/16-threads.md) - [Channels, locks, and shutdown](https://rust.robertdevore.com/course/17-synchronization/): Pass work through channels, protect shared data, and shut down without deadlocks. — [Markdown](https://rust.robertdevore.com/lessons/17-synchronization.md) - [Atomics and memory ordering](https://rust.robertdevore.com/course/18-atomics/): Use atomic counters and understand why sharing other data needs more than a flag. — [Markdown](https://rust.robertdevore.com/lessons/18-atomics.md) - [Futures before runtimes](https://rust.robertdevore.com/course/19-futures/): Learn how polling and wakeups work before adding an async runtime. — [Markdown](https://rust.robertdevore.com/lessons/19-futures.md) - [Tokio tasks, blocking, and cancellation](https://rust.robertdevore.com/course/20-async/): Run Tokio tasks, limit queued work, and handle blocking calls and cancellation. — [Markdown](https://rust.robertdevore.com/lessons/20-async.md) - [Pin and async traits](https://rust.robertdevore.com/course/21-pin/): Learn what pinning protects and how to return futures through a trait object. — [Markdown](https://rust.robertdevore.com/lessons/21-pin.md) - [Stage build: process records with async tasks](https://rust.robertdevore.com/course/22-async-build/): Send records through a bounded queue and keep one task in charge of the counts. — [Markdown](https://rust.robertdevore.com/lessons/22-async-build.md) - [Unsafe boundaries and soundness](https://rust.robertdevore.com/course/23-unsafe/): Review a small unsafe function, explain its safety rules, and check it with Miri. — [Markdown](https://rust.robertdevore.com/lessons/23-unsafe.md) - [Measure performance and resource use](https://rust.robertdevore.com/course/24-performance/): Measure speed and memory use before changing how the program works. — [Markdown](https://rust.robertdevore.com/lessons/24-performance.md) - [Stable Rust and work in progress](https://rust.robertdevore.com/course/25-horizon/): Tell stable features apart from nightly experiments and plans that may change. — [Markdown](https://rust.robertdevore.com/lessons/25-horizon.md) - [FFI, serialization, and public contracts](https://rust.robertdevore.com/course/26-interop/): Define ownership, data formats, and errors when calling code outside Rust. — [Markdown](https://rust.robertdevore.com/lessons/26-interop.md) - [Capstone: ship Fieldnotes](https://rust.robertdevore.com/course/27-capstone/): Combine the parser and reader into a command-line tool you can install and use. — [Markdown](https://rust.robertdevore.com/lessons/27-capstone.md) - [Release, maintain, and keep learning](https://rust.robertdevore.com/course/28-release/): Check compatibility, release a reproducible build, and keep the course up to date. — [Markdown](https://rust.robertdevore.com/lessons/28-release.md)