Each lecture is 50 minutes on Tuesdays from 7:00-7:50pm. On some weeks, we might have extra content planned for after lecture under After Dark, but we'll only do it if people want to stay and hang out since it won't be required material.
- Main Source: The Rust Programming Language (The Rust Book)
- The Rust Lang Book in video format on YouTube
- Rust By Example
- The Rustonomicon
- The Rust Reference
- Rust for Rustaceans - PDF available on O'Reilly for CMU students
- Exercism
rustlings
The lecture slides are organized in directories with the format NN_topic_name (e.g., 01_introduction, 02_ownership_p1).
To render slides:
# Render all slides
python3 render_slides.py --all
# Render only modified slides (default behavior)
python3 render_slides.py
# Render specific topics by name
python3 render_slides.py --topics introduction ownership_p1
# Preview what would be rendered without actually rendering
python3 render_slides.py --dry-run --all
# Force render all slides
python3 render_slides.py --force- Why Rust?
cargobasics- Rust Syntax
- Variables and Mutability
- Types
- Functions, Statements, and Expressions
- Control Flow
- Course Logistics
- Installing Rust
- Setting up rust-analyzer
- RustRover
- Ownership
- The
StringType - Move Semantics
- The
- References and Borrowing
- Slices
- The
VecType
- Ownership review
- Structs
- Enums
- Pattern Matching
- The
Vec<T>Type - The
StringType - The
HashMap<K, V>Type - Generics
- Remaining collections in
std::collections
- Error Handling
- Traits
anyhow
- Packages and Crates
- Modules
- Module Paths and File Structure
- The
useKeyword
- Testing
- Unit Tests
- Integration Tests
no_std:rand,timestd:clap,log,tracing,anyhow,flamegraph- Closures
- Captures
- The
moveKeyword Fntraits
- Iterators
IteratorTrait andnext
- Loops vs. Iterators
- More Essential Rust Crates
rayonserdecriterion
- Validating References
- The Borrow Checker
- Lifetimes vs. Scope
- Lifetimes vs. Memory
- Generic Lifetimes
- Lifetime Annotations
- Lifetime Elision
'staticLifetimes
- The
Box<T>Type - The
DerefTrait and Deref Coercion - The
DropTrait andstd::mem::drop - Object-Oriented Programming
- Trait Objects
- Dynamic dispatch with
dyn
- Dynamic dispatch with
- Dynamically Sized Types
- Object Safety
- The
Rc<T>Type - The
RefCell<T>Type - Memory Leaks
- Unsafe Superpowers
- Raw Pointers
- FFI
Cow<'a, B>UnsafeCell<T>andCell<T>- Implementation of:
Cell<T>RefCell<T>Rc<T>
- The
Arc<T>Smart Pointer - The
Mutex<T>Smart Pointer - The
RwLock<T>Smart Pointer std::sync::mspc::channel- Shared State vs Channels
SyncandSendtraits
Weak<T>CondVar- Implementation of:
Arc<T>Mutex<T>
asyncawait- The
Pin<T>Type - TODO
- Declarative Macros
macro_rules!
- Procedural Macros
- TODO