- Introduction
 - 1. Notation
 - 2. Lexical structure
❱
 - 2.1. Input format
 - 2.2. Keywords
 - 2.3. Identifiers
 - 2.4. Comments
 - 2.5. Whitespace
 - 2.6. Tokens
 
- 3. Macros
❱
 - 3.1. Macros by example
 - 3.2. Procedural macros
 
- 4. Crates and source files
 - 5. Conditional compilation
 - 6. Items
❱
 - 6.1. Modules
 - 6.2. Extern crates
 - 6.3. Use declarations
 - 6.4. Functions
 - 6.5. Type aliases
 - 6.6. Structs
 - 6.7. Enumerations
 - 6.8. Unions
 - 6.9. Constant items
 - 6.10. Static items
 - 6.11. Traits
 - 6.12. Implementations
 - 6.13. External blocks
 - 6.14. Generic parameters
 - 6.15. Associated items
 
- 7. Attributes
❱
 - 7.1. Testing
 - 7.2. Derive
 - 7.3. Diagnostics
 - 7.4. Code generation
 - 7.5. Limits
 - 7.6. Type system
 - 7.7. Debugger
 
- 8. Statements and expressions
❱
 - 8.1. Statements
 - 8.2. Expressions
❱
 - 8.2.1. Literal expressions
 - 8.2.2. Path expressions
 - 8.2.3. Block expressions
 - 8.2.4. Operator expressions
 - 8.2.5. Grouped expressions
 - 8.2.6. Array and index expressions
 - 8.2.7. Tuple and index expressions
 - 8.2.8. Struct expressions
 - 8.2.9. Call expressions
 - 8.2.10. Method call expressions
 - 8.2.11. Field access expressions
 - 8.2.12. Closure expressions
 - 8.2.13. Loop expressions
 - 8.2.14. Range expressions
 - 8.2.15. If expressions
 - 8.2.16. Match expressions
 - 8.2.17. Return expressions
 - 8.2.18. Await expressions
 - 8.2.19. Underscore expressions
 
- 9. Patterns
 - 10. Type system
❱
 - 10.1. Types
❱
 - 10.1.1. Boolean type
 - 10.1.2. Numeric types
 - 10.1.3. Textual types
 - 10.1.4. Never type
 - 10.1.5. Tuple types
 - 10.1.6. Array types
 - 10.1.7. Slice types
 - 10.1.8. Struct types
 - 10.1.9. Enumerated types
 - 10.1.10. Union types
 - 10.1.11. Function item types
 - 10.1.12. Closure types
 - 10.1.13. Pointer types
 - 10.1.14. Function pointer types
 - 10.1.15. Trait object types
 - 10.1.16. Impl trait type
 - 10.1.17. Type parameters
 - 10.1.18. Inferred type
 
- 10.2. Dynamically sized types
 - 10.3. Type layout
 - 10.4. Interior mutability
 - 10.5. Subtyping and variance
 - 10.6. Trait and lifetime bounds
 - 10.7. Type coercions
 - 10.8. Destructors
 - 10.9. Lifetime elision
 
- 11. Special types and traits
 - 12. Names
❱
 - 12.1. Namespaces
 - 12.2. Scopes
 - 12.3. Preludes
 - 12.4. Paths
 - 12.5. Name resolution
 - 12.6. Visibility and privacy
 
- 13. Memory model
❱
 - 13.1. Memory allocation and lifetime
 - 13.2. Variables
 
- 14. Panic
 - 15. Linkage
 - 16. Inline assembly
 - 17. Unsafety
❱
 - 17.1. The unsafe keyword
 - 17.2. Behavior considered undefined
 - 17.3. Behavior not considered unsafe
 
- 18. Constant evaluation
 - 19. Application binary interface
 - 20. The Rust runtime
 - 21. Appendices
❱
 - 21.1. Grammar summary
 - 21.2. Macro follow-set ambiguity formal specification
 - 21.3. Influences
 - 21.4. Test summary
 - 21.5. Glossary