- Introduction
- 1. Getting Started
- 2. Tutorial: Guessing Game
- 3. Syntax and Semantics
- 3.1. Variable Bindings
- 3.2. Functions
- 3.3. Primitive Types
- 3.4. Comments
- 3.5. if
- 3.6. Loops
- 3.7. Vectors
- 3.8. Ownership
- 3.9. References and Borrowing
- 3.10. Lifetimes
- 3.11. Mutability
- 3.12. Structs
- 3.13. Enums
- 3.14. Match
- 3.15. Patterns
- 3.16. Method Syntax
- 3.17. Strings
- 3.18. Generics
- 3.19. Traits
- 3.20. Drop
- 3.21. if let
- 3.22. Trait Objects
- 3.23. Closures
- 3.24. Universal Function Call Syntax
- 3.25. Crates and Modules
- 3.26. const and static
- 3.27. Attributes
- 3.28. type aliases
- 3.29. Casting between types
- 3.30. Associated Types
- 3.31. Unsized Types
- 3.32. Operators and Overloading
- 3.33. Deref coercions
- 3.34. Macros
- 3.35. Raw Pointers
- 3.36. unsafe
- 4. Effective Rust
- 4.1. The Stack and the Heap
- 4.2. Testing
- 4.3. Conditional Compilation
- 4.4. Documentation
- 4.5. Iterators
- 4.6. Concurrency
- 4.7. Error Handling
- 4.8. Choosing your Guarantees
- 4.9. FFI
- 4.10. Borrow and AsRef
- 4.11. Release Channels
- 4.12. Using Rust without the standard library
- 4.13. Procedural Macros (and custom derive)
- 5. Glossary
- 6. Syntax Index
- 7. Bibliography