Mastering Rust
Class Duration
35 hours of live training delivered over 5-10 days to accommodate your scheduling needs.
Student Prerequisites
- Professional software development experience
- Comfort with the command line and a strong interest in systems programming
- Prior Rust exposure is helpful but not required; the course starts with foundations and ramps quickly
Target Audience
Engineers who want production fluency in Rust on the 2024 edition: writing libraries and services other people depend on, navigating async and concurrency, integrating with C through FFI, building procedural macros, and using AI coding tools effectively without letting them write unsafe or unwrap you wouldn't ship.
Description
Mastering Rust is a comprehensive deep dive into the modern Rust language and toolchain. The course is built on the Rust 2024 edition (1.85 introduced the edition; 1.95+ recommended for the current toolchain) and reflects the current state of the language: the 2024 edition's improvements alongside features stabilized since then: async closures (1.85), let-chains (1.88), naked functions (1.88), the LLD default linker on Linux (1.90), native workspace publishing (1.90), and improved sort performance via driftsort and ipnsort. async fn in traits has been stable since 1.75 — earlier than the 2024 edition. It moves from foundations through advanced topics — traits and generics, lifetimes in earnest, async/await, fearless concurrency, unsafe and FFI, declarative and procedural macros — and threads in a realistic AI-augmented workflow throughout. Senior Rust engineers in 2026 use Claude Code, Cursor, and GitHub Copilot together; this course teaches how to do that without sacrificing the safety properties that make Rust worth choosing in the first place.
Learning Outcomes
- Write production-quality Rust on the 2024 edition: idiomatic, well-tested, well-documented, and performant.
- Design APIs with traits, generics, and lifetimes that compose cleanly and migrate well over time.
- Build async services on Tokio using async fn in traits, async closures, and structured cancellation.
- Reason about concurrency using
Arc,Mutex,RwLock, channels, atomics, andSend/Syncbounds. - Write
unsafeRust deliberately, audit it confidently, and expose safe abstractions over it. - Author declarative
macro_rules!macros and procedural derive/attribute macros usingsyn,quote, andproc-macro2. - Use AI coding assistants (Claude Code, Cursor, GitHub Copilot) for Rust effectively, with the compiler, clippy, and tests as the source of truth.
- Set up an agentic Rust workflow with rust-analyzer, AI tools, and CI that catches regressions before merge.
Training Materials
All students receive comprehensive courseware covering all topics in the course. Courseware is distributed via GitHub in the form of documentation and extensive code samples. Students practice the topics covered through challenging hands-on lab exercises and a multi-day capstone that exercises traits, async, FFI, and a custom procedural macro.
Software Requirements
A free GitHub account, the latest stable Rust toolchain installed via rustup (Rust 1.95+ on the 2024 edition), Visual Studio Code or another supported editor with the rust-analyzer extension, Docker for the FFI lab, and an AI coding assistant of choice (GitHub Copilot, Cursor, or Claude Code). A cloud-based environment can be provided if local installation is restricted.
Training Topics
Modern Rust and the 2024 Edition
- Why Rust, why now: the 2026 state of the language
- Rust 2024 edition highlights:
let-chains, async closures, RPIT capture rules, naked functions - Compiler and toolchain improvements: LLD default linker, native workspace publishing, faster sorts
- Editions, MSRV, and managing toolchains with
rustup
Toolchain and Editor Setup
cargo,rustc,rustfmt, andclippyin depth- VS Code, JetBrains RustRover, and Zed with rust-analyzer
- Debugging with CodeLLDB and
dbg!-driven workflows - AI assistants for Rust: Copilot, Cursor, and Claude Code
- A senior engineer's daily Rust loop
Cargo and Crates
Cargo.tomlfeatures, profiles, and target-specific dependencies- Workspaces and
cargo publish --workspace - Build scripts (
build.rs) and code generation - Reproducible builds and dependency hygiene
Types, Ownership, and Lifetimes
- Move, copy, and clone semantics
- Borrowing rules and the borrow checker as a productivity tool
- Lifetime elision and explicit lifetime annotations
- Higher-ranked trait bounds and
for<'a>lifetimes - Common ownership patterns and how to read borrow-checker errors fluently
Idiomatic Error Handling
Result<T, E>and the?operator- Designing error enums with
thiserror - Application-level error contexts with
anyhow - When to panic and when not to
Strings, Collections, and Iterators
Stringvs.&strand slice semanticsVec,HashMap,HashSet, andBTreeMap/BTreeSet- Iterator combinators:
map,filter,fold,try_fold,zip,chain - Custom iterators and the
Iteratortrait
Pattern Matching, In Depth
match,if let,while let, and 2024let-chains- Destructuring nested data
- Guards, bindings, and
@patterns - Refutable vs. irrefutable patterns
Traits and Generics
- Defining and implementing traits
- Default methods, supertraits, and trait objects
impl Traitand return-positionimpl Traitin traits- Bounds,
whereclauses, and associated types - Static dispatch via monomorphization vs. dynamic dispatch with
dyn Trait - Designing trait hierarchies that age well
Async and Concurrency
- The async/await mental model
- async fn in traits and return-position
impl Traitin traits - 2024-edition async closures
- Tokio runtime fundamentals: tasks, executors, and the multi-threaded scheduler
- Structured concurrency with
tokio::select!,JoinSet, and cancellation - Streams and
futures::Stream
Concurrent Programming
Send,Sync, and the data race story- Threads,
Arc,Mutex, andRwLock - Message passing with channels (
std::sync::mpsc,crossbeam,tokio) - Atomics and memory ordering at the level needed to read code
- When to reach for parallelism (
rayon) vs. async
Unsafe Rust
- The
unsafesuperpowers and what they actually mean - Raw pointers and dereferencing
- Calling unsafe functions and writing safe abstractions
- Auditing
unsafeblocks: invariants, comments, and tests - Reviewing AI-generated
unsafebefore accepting it
Foreign Function Interface
extern "C"and ABI considerations- Calling C from Rust and exposing Rust to C
CString,CStr, and string ownership across the boundary- Tooling:
bindgen,cbindgen, and thelibccrate - Hands-on FFI lab: bind a small C library and ship a safe Rust wrapper
Macros and Metaprogramming
- Declarative macros with
macro_rules! - Fragment specifiers, repetition, and hygiene
- Procedural macros: derive, attribute, and function-like
- Working with
syn,quote, andproc-macro2 - A custom
derivemacro lab end-to-end
Testing, Documentation, and Quality
- Unit tests, integration tests, and doctests
- Property-based testing with
proptest - Benchmarks with
criterion - Documentation with
rustdocand writing examples that compile - Coverage and
cargo-llvm-cov
AI-Assisted and Agentic Rust Development
- The 2026 AI-coding landscape for Rust: Copilot, Cursor, Claude Code, Codex
- Letting the compiler, clippy, and tests be the source of truth
- Prompts that work well for Rust ownership, lifetimes, and trait design
- Reviewing AI-generated
unsafe,unwrap, and unbounded allocations - An MCP-tool / custom-tool perspective on Rust workflows
- Cargo + AI: agent-driven refactors, AI-assisted code review, and CI integration
- Honest measurement: when AI helps a Rust team and when it doesn't
Capstone
- A multi-component project that exercises traits, async, FFI, and a custom procedural macro — built with AI assistance and validated by the compiler, clippy, tests, and benchmarks
- Course wrap-up and recommended next courses