# Summary

[Introduction](index.md)

- [Hello World](hello.md)
    - [Comments](hello/comment.md)
    - [Formatted print](hello/print.md)
        - [Debug](hello/print/print_debug.md)
        - [Display](hello/print/print_display.md)
            - [Testcase: List](hello/print/print_display/testcase_list.md)
        - [Formatting](hello/print/fmt.md)

- [Primitives](primitives.md)
    - [Literals and operators](primitives/literals.md)
    - [Tuples](primitives/tuples.md)
    - [Arrays and Slices](primitives/array.md)

- [Custom Types](custom_types.md)
    - [Structures](custom_types/structs.md)
    - [Enums](custom_types/enum.md)
        - [use](custom_types/enum/enum_use.md)
        - [C-like](custom_types/enum/c_like.md)
        - [Testcase: linked-list](custom_types/enum/testcase_linked_list.md)
    - [constants](custom_types/constants.md)

- [Variable Bindings](variable_bindings.md)
    - [Mutability](variable_bindings/mut.md)
    - [Scope and Shadowing](variable_bindings/scope.md)
    - [Declare first](variable_bindings/declare.md)
    - [Freezing](variable_bindings/freeze.md)

- [Types](types.md)
    - [Casting](types/cast.md)
    - [Literals](types/literals.md)
    - [Inference](types/inference.md)
    - [Aliasing](types/alias.md)

- [Conversion](conversion.md)
    - [`From` and `Into`](conversion/from_into.md)
    - [`TryFrom` and `TryInto`](conversion/try_from_try_into.md)
    - [To and from `String`s](conversion/string.md)

- [Expressions](expression.md)

- [Flow of Control](flow_control.md)
    - [if/else](flow_control/if_else.md)
    - [loop](flow_control/loop.md)
        - [Nesting and labels](flow_control/loop/nested.md)
        - [Returning from loops](flow_control/loop/return.md)
    - [while](flow_control/while.md)
    - [for and range](flow_control/for.md)
    - [match](flow_control/match.md)
        - [Destructuring](flow_control/match/destructuring.md)
            - [tuples](flow_control/match/destructuring/destructure_tuple.md)
            - [arrays/slices](flow_control/match/destructuring/destructure_slice.md)
            - [enums](flow_control/match/destructuring/destructure_enum.md)
            - [pointers/ref](flow_control/match/destructuring/destructure_pointers.md)
            - [structs](flow_control/match/destructuring/destructure_structures.md)
        - [Guards](flow_control/match/guard.md)
        - [Binding](flow_control/match/binding.md)
    - [if let](flow_control/if_let.md)
    - [let-else](flow_control/let_else.md)
    - [while let](flow_control/while_let.md)

- [Functions](fn.md)
    - [Methods](fn/methods.md)
    - [Closures](fn/closures.md)
        - [Capturing](fn/closures/capture.md)
        - [As input parameters](fn/closures/input_parameters.md)
        - [Type anonymity](fn/closures/anonymity.md)
        - [Input functions](fn/closures/input_functions.md)
        - [As output parameters](fn/closures/output_parameters.md)
        - [Examples in `std`](fn/closures/closure_examples.md)
            - [Iterator::any](fn/closures/closure_examples/iter_any.md)
            - [Searching through iterators](fn/closures/closure_examples/iter_find.md)
    - [Higher Order Functions](fn/hof.md)
    - [Diverging functions](fn/diverging.md)

- [Modules](mod.md)
    - [Visibility](mod/visibility.md)
    - [Struct visibility](mod/struct_visibility.md)
    - [The `use` declaration](mod/use.md)
    - [`super` and `self`](mod/super.md)
    - [File hierarchy](mod/split.md)

- [Crates](crates.md)
    - [Creating a Library](crates/lib.md)
    - [Using a Library](crates/using_lib.md)

- [Cargo](cargo.md)
    - [Dependencies](cargo/deps.md)
    - [Conventions](cargo/conventions.md)
    - [Tests](cargo/test.md)
    - [Build Scripts](cargo/build_scripts.md)

- [Attributes](attribute.md)
    - [`dead_code`](attribute/unused.md)
    - [Crates](attribute/crate.md)
    - [`cfg`](attribute/cfg.md)
        - [Custom](attribute/cfg/custom.md)

- [Generics](generics.md)
    - [Functions](generics/gen_fn.md)
    - [Implementation](generics/impl.md)
    - [Traits](generics/gen_trait.md)
    - [Bounds](generics/bounds.md)
        - [Testcase: empty bounds](generics/bounds/testcase_empty.md)
    - [Multiple bounds](generics/multi_bounds.md)
    - [Where clauses](generics/where.md)
    - [New Type Idiom](generics/new_types.md)
    - [Associated items](generics/assoc_items.md)
        - [The Problem](generics/assoc_items/the_problem.md)
        - [Associated types](generics/assoc_items/types.md)
    - [Phantom type parameters](generics/phantom.md)
        - [Testcase: unit clarification](generics/phantom/testcase_units.md)

- [Scoping rules](scope.md)
    - [RAII](scope/raii.md)
    - [Ownership and moves](scope/move.md)
        - [Mutability](scope/move/mut.md)
        - [Partial moves](scope/move/partial_move.md)
    - [Borrowing](scope/borrow.md)
        - [Mutability](scope/borrow/mut.md)
        - [Aliasing](scope/borrow/alias.md)
        - [The ref pattern](scope/borrow/ref.md)
    - [Lifetimes](scope/lifetime.md)
        - [Explicit annotation](scope/lifetime/explicit.md)
        - [Functions](scope/lifetime/fn.md)
        - [Methods](scope/lifetime/methods.md)
        - [Structs](scope/lifetime/struct.md)
        - [Traits](scope/lifetime/trait.md)
        - [Bounds](scope/lifetime/lifetime_bounds.md)
        - [Coercion](scope/lifetime/lifetime_coercion.md)
        - [Static](scope/lifetime/static_lifetime.md)
        - [Elision](scope/lifetime/elision.md)

- [Traits](trait.md)
    - [Derive](trait/derive.md)
    - [Returning Traits with `dyn`](trait/dyn.md)
    - [Operator Overloading](trait/ops.md)
    - [Drop](trait/drop.md)
    - [Iterators](trait/iter.md)
    - [`impl Trait`](trait/impl_trait.md)
    - [Clone](trait/clone.md)
    - [Supertraits](trait/supertraits.md)
    - [Disambiguating overlapping traits](trait/disambiguating.md)

- [macro_rules!](macros.md)
    - [Syntax](macros/syntax.md)
        - [Designators](macros/designators.md)
        - [Overload](macros/overload.md)
        - [Repeat](macros/repeat.md)
    - [DRY (Don't Repeat Yourself)](macros/dry.md)
    - [DSL (Domain Specific Languages)](macros/dsl.md)
    - [Variadics](macros/variadics.md)

- [Error handling](error.md)
    - [`panic`](error/panic.md)
    - [`abort` & `unwind`](error/abort_unwind.md)
    - [`Option` & `unwrap`](error/option_unwrap.md)
        - [Unpacking options with `?`](error/option_unwrap/question_mark.md)
        - [Combinators: `map`](error/option_unwrap/map.md)
        - [Combinators: `and_then`](error/option_unwrap/and_then.md)
        - [Defaults: `or`, `or_else`, `get_or_insert`, 'get_or_insert_with`](error/option_unwrap/defaults.md)
    - [`Result`](error/result.md)
        - [`map` for `Result`](error/result/result_map.md)
        - [aliases for `Result`](error/result/result_alias.md)
        - [Early returns](error/result/early_returns.md)
        - [Introducing `?`](error/result/enter_question_mark.md)
    - [Multiple error types](error/multiple_error_types.md)
        - [Pulling `Result`s out of `Option`s](error/multiple_error_types/option_result.md)
        - [Defining an error type](error/multiple_error_types/define_error_type.md)
        - [`Box`ing errors](error/multiple_error_types/boxing_errors.md)
        - [Other uses of `?`](error/multiple_error_types/reenter_question_mark.md)
        - [Wrapping errors](error/multiple_error_types/wrap_error.md)
    - [Iterating over `Result`s](error/iter_result.md)

- [Std library types](std.md)
    - [Box, stack and heap](std/box.md)
    - [Vectors](std/vec.md)
    - [Strings](std/str.md)
    - [`Option`](std/option.md)
    - [`Result`](std/result.md)
        - [`?`](std/result/question_mark.md)
    - [`panic!`](std/panic.md)
    - [HashMap](std/hash.md)
        - [Alternate/custom key types](std/hash/alt_key_types.md)
        - [HashSet](std/hash/hashset.md)
    - [`Rc`](std/rc.md)
    - [`Arc`](std/arc.md)

- [Std misc](std_misc.md)
    - [Threads](std_misc/threads.md)
        - [Testcase: map-reduce](std_misc/threads/testcase_mapreduce.md)
    - [Channels](std_misc/channels.md)
    - [Path](std_misc/path.md)
    - [File I/O](std_misc/file.md)
        - [`open`](std_misc/file/open.md)
        - [`create`](std_misc/file/create.md)
        - [`read lines`](std_misc/file/read_lines.md)
    - [Child processes](std_misc/process.md)
        - [Pipes](std_misc/process/pipe.md)
        - [Wait](std_misc/process/wait.md)
    - [Filesystem Operations](std_misc/fs.md)
    - [Program arguments](std_misc/arg.md)
        - [Argument parsing](std_misc/arg/matching.md)
    - [Foreign Function Interface](std_misc/ffi.md)

- [Testing](testing.md)
    - [Unit testing](testing/unit_testing.md)
    - [Documentation testing](testing/doc_testing.md)
    - [Integration testing](testing/integration_testing.md)
    - [Dev-dependencies](testing/dev_dependencies.md)

- [Unsafe Operations](unsafe.md)
    - [Inline assembly](unsafe/asm.md)

- [Compatibility](compatibility.md)
    - [Raw identifiers](compatibility/raw_identifiers.md)

- [Meta](meta.md)
    - [Documentation](meta/doc.md)
    - [Playground](meta/playground.md)
