- Introduction
 - 1. Hello World
❱
 - 1.1. Comments
 - 1.2. Formatted print
❱
 - 1.2.1. Debug
 - 1.2.2. Display
❱
 - 1.2.2.1. Testcase: List
 
- 1.2.3. Formatting
 
- 2. Primitives
❱
 - 2.1. Literals and operators
 - 2.2. Tuples
 - 2.3. Arrays and Slices
 
- 3. Custom Types
❱
 - 3.1. Structures
 - 3.2. Enums
❱
 - 3.2.1. use
 - 3.2.2. C-like
 - 3.2.3. Testcase: linked-list
 
- 3.3. constants
 
- 4. Variable Bindings
❱
 - 4.1. Mutability
 - 4.2. Scope and Shadowing
 - 4.3. Declare first
 - 4.4. Freezing
 
- 5. Types
❱
 - 5.1. Casting
 - 5.2. Literals
 - 5.3. Inference
 - 5.4. Aliasing
 
- 6. Conversion
❱
 - 6.1. From and Into
 - 6.2. TryFrom and TryInto
 - 6.3. To and from Strings
 
- 7. Expressions
 - 8. Flow of Control
❱
 - 8.1. if/else
 - 8.2. loop
❱
 - 8.2.1. Nesting and labels
 - 8.2.2. Returning from loops
 
- 8.3. while
 - 8.4. for and range
 - 8.5. match
❱
 - 8.5.1. Destructuring
❱
 - 8.5.1.1. tuples
 - 8.5.1.2. arrays/slices
 - 8.5.1.3. enums
 - 8.5.1.4. pointers/ref
 - 8.5.1.5. structs
 
- 8.5.2. Guards
 - 8.5.3. Binding
 
- 8.6. if let
 - 8.7. let-else
 - 8.8. while let
 
- 9. Functions
❱
 - 9.1. Methods
 - 9.2. Closures
❱
 - 9.2.1. Capturing
 - 9.2.2. As input parameters
 - 9.2.3. Type anonymity
 - 9.2.4. Input functions
 - 9.2.5. As output parameters
 - 9.2.6. Examples in std
❱
 - 9.2.6.1. Iterator::any
 - 9.2.6.2. Searching through iterators
 
- 9.3. Higher Order Functions
 - 9.4. Diverging functions
 
- 10. Modules
❱
 - 10.1. Visibility
 - 10.2. Struct visibility
 - 10.3. The use declaration
 - 10.4. super and self
 - 10.5. File hierarchy
 
- 11. Crates
❱
 - 11.1. Creating a Library
 - 11.2. Using a Library
 
- 12. Cargo
❱
 - 12.1. Dependencies
 - 12.2. Conventions
 - 12.3. Tests
 - 12.4. Build Scripts
 
- 13. Attributes
❱
 - 13.1. dead_code
 - 13.2. Crates
 - 13.3. cfg
❱
 - 13.3.1. Custom
 
- 14. Generics
❱
 - 14.1. Functions
 - 14.2. Implementation
 - 14.3. Traits
 - 14.4. Bounds
❱
 - 14.4.1. Testcase: empty bounds
 
- 14.5. Multiple bounds
 - 14.6. Where clauses
 - 14.7. New Type Idiom
 - 14.8. Associated items
❱
 - 14.8.1. The Problem
 - 14.8.2. Associated types
 
- 14.9. Phantom type parameters
❱
 - 14.9.1. Testcase: unit clarification
 
- 15. Scoping rules
❱
 - 15.1. RAII
 - 15.2. Ownership and moves
❱
 - 15.2.1. Mutability
 - 15.2.2. Partial moves
 
- 15.3. Borrowing
❱
 - 15.3.1. Mutability
 - 15.3.2. Aliasing
 - 15.3.3. The ref pattern
 
- 15.4. Lifetimes
❱
 - 15.4.1. Explicit annotation
 - 15.4.2. Functions
 - 15.4.3. Methods
 - 15.4.4. Structs
 - 15.4.5. Traits
 - 15.4.6. Bounds
 - 15.4.7. Coercion
 - 15.4.8. Static
 - 15.4.9. Elision
 
- 16. Traits
❱
 - 16.1. Derive
 - 16.2. Returning Traits with dyn
 - 16.3. Operator Overloading
 - 16.4. Drop
 - 16.5. Iterators
 - 16.6. impl Trait
 - 16.7. Clone
 - 16.8. Supertraits
 - 16.9. Disambiguating overlapping traits
 
- 17. macro_rules!
❱
 - 17.1. Syntax
❱
 - 17.1.1. Designators
 - 17.1.2. Overload
 - 17.1.3. Repeat
 
- 17.2. DRY (Don't Repeat Yourself)
 - 17.3. DSL (Domain Specific Languages)
 - 17.4. Variadics
 
- 18. Error handling
❱
 - 18.1. panic
 - 18.2. abort & unwind
 - 18.3. Option & unwrap
❱
 - 18.3.1. Unpacking options with ?
 - 18.3.2. Combinators: map
 - 18.3.3. Combinators: and_then
 - 18.3.4. Defaults: or, or_else, get_or_insert, get_or_insert_with
 
- 18.4. Result
❱
 - 18.4.1. map for Result
 - 18.4.2. aliases for Result
 - 18.4.3. Early returns
 - 18.4.4. Introducing ?
 
- 18.5. Multiple error types
❱
 - 18.5.1. Pulling Results out of Options
 - 18.5.2. Defining an error type
 - 18.5.3. Boxing errors
 - 18.5.4. Other uses of ?
 - 18.5.5. Wrapping errors
 
- 18.6. Iterating over Results
 
- 19. Std library types
❱
 - 19.1. Box, stack and heap
 - 19.2. Vectors
 - 19.3. Strings
 - 19.4. Option
 - 19.5. Result
❱
 - 19.5.1. ?
 
- 19.6. panic!
 - 19.7. HashMap
❱
 - 19.7.1. Alternate/custom key types
 - 19.7.2. HashSet
 
- 19.8. Rc
 - 19.9. Arc
 
- 20. Std misc
❱
 - 20.1. Threads
❱
 - 20.1.1. Testcase: map-reduce
 
- 20.2. Channels
 - 20.3. Path
 - 20.4. File I/O
❱
 - 20.4.1. open
 - 20.4.2. create
 - 20.4.3. read_lines
 
- 20.5. Child processes
❱
 - 20.5.1. Pipes
 - 20.5.2. Wait
 
- 20.6. Filesystem Operations
 - 20.7. Program arguments
❱
 - 20.7.1. Argument parsing
 
- 20.8. Foreign Function Interface
 
- 21. Testing
❱
 - 21.1. Unit testing
 - 21.2. Documentation testing
 - 21.3. Integration testing
 - 21.4. Dev-dependencies
 
- 22. Unsafe Operations
❱
 - 22.1. Inline assembly
 
- 23. Compatibility
❱
 - 23.1. Raw identifiers
 
- 24. Meta
❱
 - 24.1. Documentation
 - 24.2. Playground