1.
Class Introduction
2.
The Rust Ecosystem
2.1.
Rust Tooling Cheat Sheet
2.2.
Rust Syntax 101
2.2.1.
A Quick Hello World
2.2.2.
Functions, Variables and Scopes
2.2.3.
Overflow and Wrapping
2.2.4.
Structures and Containers
2.3.
Memory Safety
2.4.
The Borrow Checker
2.5.
Lifetimes
2.6.
Reference Counting - Borrow Checker Escape Hatch
2.7.
Data-Race Protection
2.8.
Opt-Out vs Opt-In Safety
2.9.
Safety Wrap-Up
2.10.
Workspaces, Crates, Programs and Libraries
2.11.
Unit Tests
2.12.
Dependencies
2.13.
Benchmarking
3.
Workshop: Build a Basic Rust System
3.1.
Setup
3.2.
Console Text Input
3.3.
Simplest Login System
3.4.
Enumerations
3.5.
Structures, Vectors and HashMaps
3.6.
Serialization/Deserialization
3.7.
Hashing Passwords
3.8.
A CLI Application
4.
Threaded Concurrency
4.1.
Spawning Threads and Returning Data
4.2.
Dividing Workloads
4.3.
ThreadBuilders
4.4.
Scoped Threads
4.5.
Sharing Data
4.6.
Deadlocks, Panics and Poisoning
4.7.
Lock Free Structures
4.8.
Thread Parking
4.9.
Channels
4.10.
CPU Affinity and Thread Priority
4.11.
Rayon
5.
Asynchronous Rust
5.1.
Hello async/await
5.2.
Executors and Runtimes
5.3.
Getting Started with Tokio
5.4.
Blocking Tasks
5.5.
Unit Testing with Tokio
5.6.
File I/O
5.7.
Network I/O
5.8.
Async Channels
5.9.
Async Shared State
5.10.
Selecting Futures
5.11.
Pinning
6.
Traits and Generics
6.1.
Basic Traits
6.2.
Basic Generics
6.3.
Iterators
7.
Make a Web Service in 30 Minutes
7.1.
Working with Databases
7.2.
Axum for Web Services
7.3.
Workshop: Let's Build a Thumbnail Server
8.
Writing Rustacean Code
8.1.
Best Practices: Tooling
8.1.1.
Formatting
8.1.2.
Clippy (the linter)
8.1.3.
Documentation
8.1.4.
Understanding Dependencies
8.1.5.
Managing Your Own Dependencies
8.1.6.
Checking for Vulnerabilities
8.1.7.
Check for Outdated Dependencies
8.1.8.
Denying Dependencies by License
8.1.9.
Build Profiles and Smaller Binaries
8.2.
Code Best Practices
8.2.1.
Favor Iterators
8.2.2.
Minimize Cloning
8.2.3.
Don't Emulate OOP
8.2.4.
Don't Reference Count Everything
8.2.5.
Favor Small Functions
8.2.6.
Clever Code
8.2.7.
Let the Type System Help You
8.2.8.
Floating Point Numbers
8.2.9.
Platform- and Feature- Specific Code
8.3.
General Best Practices
8.3.1.
TANSTAAFL: There Aint No Such Thing As A Free Lunch
8.3.2.
YAGNI: You Aint Gonna Need It
8.3.3.
Domain Boundaries and Network Calls
9.
Error-Handling and Debugging
9.1.
Error Handling
9.2.
Logging and Telemetry
9.3.
Debugging
9.4.
Avoiding Bugs
10.
FFI: Linking Rust and C or C++
10.1.
Packing and Reordering
11.
Rust as a Service
12.
Embedded Challenges
13.
Optimizing Rust
13.1.
Memory Fragmentation
13.2.
Zero Copy
14.
WASM for the Browser
15.
WASM for WASI
Light
Rust
Coal
Navy
Ayu
KLA Training (Dec 2023)
General Best Practices