- Welcome to Comprehensive Rust 🦀
- 1. Using Cargo
❱
- 1.1. Rust Ecosystem
- 1.2. Code Samples
- 1.3. Running Cargo Locally
- Day 1: Morning
- 2. Welcome
- 3. Introduction
❱
- 3.1. What is Rust?
- 3.2. Benefits of Rust
- 3.3. Playground
- 4. Types and Values
❱
- 4.1. Hello, World
- 4.2. Variables
- 4.3. Values
- 4.4. Arithmetic
- 4.5. Strings
- 4.6. Type Inference
- 5. Control Flow Basics
❱
- 5.1. if Expressions
- 5.2. Loops
❱
- 5.2.1. for
- 5.2.2. loop
- 5.3. break and continue
❱
- 5.3.1. Labels
- 5.4. Blocks and Scopes
❱
- 5.4.1. Scopes and Shadowing
- 5.5. Functions
- 5.6. Macros
- 6. Exercises
- Day 1: Afternoon
- 7. Welcome
- 8. Tuples and Arrays
❱
- 8.1. Arrays
- 8.2. Tuples
- 8.3. Array Iteration
- 8.4. Patterns and Destructuring
- 9. References
❱
- 9.1. Shared References
- 9.2. Exclusive References
- 9.3. Static and Const
- 10. User-Defined Types
❱
- 10.1. Named Structs
- 10.2. Tuple Structs
- 10.3. Enums
- 10.4. Type Aliases
- 11. Exercises
- Day 2: Morning
- 12. Welcome
- 13. Pattern Matching
❱
- 13.1. Matching Values
- 13.2. Destructuring
- 13.3. Let Control Flow
- 14. Methods and Traits
❱
- 14.1. Methods
- 14.2. Traits
❱
- 14.2.1. Implmementing Traits
- 14.2.2. Associated Types
- 14.3. Deriving
- 15. Generics
❱
- 15.1. Generic Functions
- 15.2. Generic Data Types
- 15.3. Trait Bounds
- 15.4. impl Trait
- 16. Exercises
- Day 2: Afternoon
- 17. Welcome
- 18. Memory Management
❱
- 18.1. Review of Program Memory
- 18.2. Approaches to Memory Management
- 18.3. Ownership
- 18.4. Move Semantics
- 18.5. Clone
- 18.6. Copy Types
- 18.7. Drop
- 19. Exercises
- Day 3: Morning
- 20. Welcome
- 21. Smart Pointers
❱
- 21.1. Box<T>
- 21.2. Rc
- 21.3. Trait Objects
- 22. Borrowing
❱
- 22.1. Borrowing a Value
- 22.2. Borrow Checking
- 23. Slices and Lifetimes
❱
- 23.1. Slices: &[T]
- 23.2. String References
- 23.3. Lifetime Annotations
- 23.4. Lifetime Elision
- 23.5. Struct Lifetimes
- 24. Exercises
- Day 3: Afternoon
- 25. Welcome
- 26. Standard Library Types
❱
- 26.1. Standard Library
- 26.2. Documentation
- 26.3. Option
- 26.4. Result
- 26.5. Vec
- 26.6. String
- 26.7. HashMap
- 27. Standard Library Traits
❱
- 27.1. Comparisons
- 27.2. Operators
- 27.3. From and Into
- 27.4. Casting
- 27.5. Read and Write
- 27.6. Default, struct update syntax
- 27.7. Closures
- 28. Exercises
- Day 4: Morning
- 29. Welcome
- 30. Iterators
❱
- 30.1. Iterator
- 30.2. IntoIterator
- 30.3. FromIterator
- 31. Modules
❱
- 31.1. Modules
- 31.2. Filesystem Hierarchy
- 31.3. Visibility
- 31.4. use, super, self
- 32. Exercises
- Day 4: Afternoon
- 33. Welcome
- 34. Testing
❱
- 34.1. Test Modules
- 34.2. Other Types of Tests
- 34.3. Compiler Lints and Clippy
- 35. Error Handling
❱
- 35.1. Panics
- 35.2. Try Operator
- 35.3. Try Conversions
- 35.4. Error Trait
- 35.5. thiserror and anyhow
- 36. Exercises
- Day 5: Morning
- 37. Welcome
- 38. Threads
❱
- 38.1. Scoped Threads
- 39. Channels
❱
- 39.1. Unbounded Channels
- 39.2. Bounded Channels
- 40. Send and Sync
❱
- 40.1. Send
- 40.2. Sync
- 40.3. Examples
- 41. Shared State
❱
- 41.1. Arc
- 41.2. Mutex
- 41.3. Example
- 42. Exercises
- Day 5: Afternoon
- 43. Async Basics
❱
- 43.1. async/await
- 43.2. Futures
- 43.3. Runtimes
❱
- 43.3.1. Tokio
- 43.4. Tasks
- 43.5. Async Channels
- 44. Control Flow
❱
- 44.1. Join
- 44.2. Select
- 45. Pitfalls
❱
- 45.1. Blocking the Executor
- Final Words
- 46. Thanks!
- 47. Glossary
- 48. Other Resources
- 49. Credits