- 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