Introduction
Details ▼
- Why Rust?
- Cargo basics
- Variables and mutability
- Data types
- Functions, statements, and expressions
- Control flow
- Course logistics
|
|
|
|
Ownership (Part 1)
Details ▼
- Ownership
- Ownership Rules
- Motivation: Strings
- Data validity
- Move semantics, `Copy` and `Clone`
- Ownership with functions and return values
- References and Borrowing
- References vs Ownership
- Immutable and mutable references
- Dangling References and data races
- Slices
- `Vec` Sneak Peek
|
|
|
|
Structs and Enums
Details ▼
- Ownership Review
- Structs
- Creating structs
- Update syntax
- Tuple structs
- Unit structs
- Lifetimes sneak peek
- `impl` Structs and Methods
- Automatic referencing and dereferencing
- `Self` vs `&self`
- Associated functions
- Enum basics
- Option Type
- Pattern Matching
- `match` control flow
|
|
|
|
Collections and Generics
Details ▼
- Vectors
- `Vec<T>` API
- Ownership and Borrowing
- Strings
- Maps
- Generics
- Functions
- Structs and Enums
- `impl` Blocks
- Monomorphization
|
|
|
|
Error Handling and Traits
Details ▼
- Type Aliases
- Const Generics
- Error Handling
- The Never Type
- Traits
- Intro to Traits
- Derivable Traits
- Trait Bounds
|
|
|
|
Modules and Testing
Details ▼
- Module System
- Packages and Crates
- Using Modules
- Module Paths
- Testing
- Simple Testing
- Controlled Testing
- Test Organization
- Code Review
|
|
|
|
The Rust Ecosystem
Details ▼
- The Rust Toolchain
- `rustup`
- `clippy`
- `rustfmt`
- Performance and Analysis
- Reading Documentation
- `rand`
- `time` vs `chrono`
- `anyhow` vs `thiserror`
|
|
|
- Ownership Quiz (Gradescope)
|
Closures and Iterators
Details ▼
- Closures
- Iterators
- Crate Highlights
- `rand`
- `clap`
- `anyhow`
- `flamegraph`
|
|
|
|
Lifetimes
Details ▼
- Intro and Motivation
- Annotations
- Elision
- Generics and Bounds
- 'static
|
|
|
|
Smart Pointers and Trait Objects
Details ▼
- The `Box<T>` Type
- The `Deref` Trait
- Deref Coercion
- The `Drop` Trait and `std::mem::drop`
- Trait Objects
- Dynamic dispatch with `dyn`
- Dynamically Sized Types
- The `Rc` Type
- The `RefCell` Type
|
|
|
|
Unsafe
Details ▼
- Memory Leaks
- Unsafe Superpowers
- Raw Pointers
- FFI
|
|
|
|
Parallelism
Details ▼
- Parallelism vs Concurrency
- Multithreading
- Mutual Exclusion and `Mutex<T>`
- Atomics
- Message Passing
- `thread::scope`
- `Arc<T>`
|
|
|
|
Concurrency
Details ▼
|
—
|
—
|
|