# Summary

- [Rust](./index.md)

- [Self Introduction](./rust/self-introduction/index.md)
  - [Who am I?](./rust/self-introduction/who-am-i.md)
  - [Who are you?](./rust/self-introduction/who-are-you.md)

- [Introduction to Rust](./rust/introduction/index.md)
  - [Why Rust?](./rust/introduction/why-rust.md)
  - [Why Rust - Performance](./rust/introduction/rust-performance.md)
  - [What is written in Rust?](./rust/introduction/what-is-written-in-rust.md)
  - [Why Rust - Reliability](./rust/introduction/rust-reliability.md)
  - [Why Rust - Productivity](./rust/introduction/rust-productivity.md)
  - [Major features of Rust](./rust/introduction/major-features-of-rust.md)
  - [Rust Jobs](./rust/introduction/rust-jobs.md)
  - [Memory allocation](./rust/introduction/memory-allocation.md)
  - [Rust Books](./rust/introduction/rust-books.md)
  - [Crates (3rd party libraries)](./rust/introduction/crates-io.md)
  - [Rust exercises with feedback](./rust/introduction/rust-exercises-with-feedback.md)
  - [Podcast, newsleter](./rust/introduction/rust-podcast.md)
  - [Other Rust learning resources](./rust/introduction/other-rust-learning-resources.md)
  - [Rust in other languages](./rust/introduction/rust-in-other-languages.md)
  - [Articles about Rust](./rust/introduction/articles-about-rust.md)
  - [Rust community](./rust/introduction/rust-community.md)
  - [Demo None handling](./rust/introduction/demo-none-handling.md)
  - [Demo Option to handle None](./rust/introduction/demo-option-to-handle-none.md)
  - [Demo None handling with Option](./rust/introduction/demo-none-handling-with-option.md)
  - [Error handling](./rust/introduction/error-handling.md)
  - [Demo error handling with Result](./rust/introduction/demo-error-handling-with-result.md)
  - [Demo error handling with Result and question mark](./rust/introduction/demo-error-handling-with-pass-through.md)
  - [Error handling](./rust/introduction/error-handling-demo.md)

- [Hello World](./rust/hello-world/index.md)
  - [Install Rust](./rust/hello-world/rust-installation.md)
  - [Editor and IDE](./rust/hello-world/rust-editor-and-ide.md)
  - [Hello World](./rust/hello-world/rust-hello-world.md)
  - [Hello World with Cargo](./rust/hello-world/hello-world-with-cargo.md)
  - [Cargo build](./rust/hello-world/cargo-build.md)
  - [Run in release mode](./rust/hello-world/cargo-run-release.md)
  - [Use of macros with parentheses, square brackets, or curly braces](./rust/hello-world/use-of-macros.md)
  - [Rust and comments](./rust/hello-world/rust-comments.md)
  - [Rust - Hello Foo](./rust/hello-world/hello-foo.md)
  - [Interpolation](./rust/hello-world/string-interpolation.md)
  - [Printing a variable](./rust/hello-world/printing-a-variable.md)
  - [Printing a variable fixed](./rust/hello-world/printing-a-variable-fixed.md)
  - [Debugging print](./rust/hello-world/debugging-print.md)
  - [Rust and print](./rust/hello-world/rust-and-print.md)
  - [Exercise: Hello World](./rust/hello-world/exercise-helo-world.md)

- [Variables](./rust/variables/index.md)
  - [Variables are immutable](./rust/variables/variables-are-immutable.md)
  - [Number in a mutable variable](./rust/variables/rust-number-in-a-mutable-variable.md)
  - [Literal strings in variables are immutable](./rust/variables/literal-strings-in-variables-are-immutable.md)
  - [Literal string in a mutable variable can be replaced](./rust/variables/a-literal-string-in-mutable-variable.md)
  - [A really mutable string](./rust/variables/really-mutable-string.md)
  - [A literal string cannot be changed](./rust/variables/a-literal-string-cannot-be-changed.md)
  - [Cannot change the type of a variable](./rust/variables/cannot-change-variable-type.md)
  - [Redeclare immutable variable - Shadowing](./rust/variables/rust-redeclared-immutable-variable.md)
  - [Redeclare immutable variable and change type - Shadowing](./rust/variables/rust-redeclared-immutable-variable-change-type.md)

- [Convert string to number](./rust/string-to-number/index.md)
  - [Convert string to (integer) number - parse, turbofish](./rust/string-to-number/rust-convert-string-to-number.md)
  - [Convert string to number that ends with newline](./rust/string-to-number/rust-convert-string-to-number-end-with-newline.md)
  - [Convert string to number after removing whitespaces](./rust/string-to-number/rust-convert-string-to-number-trim.md)
  - [Convert string to float](./rust/string-to-number/convert-string-to-float.md)

- [Command line arguments - ARGS intro](./rust/args-intro/index.md)
  - [Command line arguments - args](./rust/args-intro/command-line-arguments.md)
  - [Exercise: Rectangle ARGS](./rust/args-intro/exercise-rectangle-args.md)
  - [Exercise: Circle ARGS](./rust/args-intro/exercise-circle-args.md)
  - [Exercise: basic math operations](./rust/args-intro/exercise-basic-math-operations-args.md)
  - [Solution: Rectangle ARGS](./rust/args-intro/solution-rectangle-args.md)
  - [Solution: Circle ARGS](./rust/args-intro/solution-circle-args.md)
  - [Solution: basic math operations](./rust/args-intro/solution-basic-math-operations-args.md)

- [Development tools](./rust/tools/index.md)
  - [Code formatting](./rust/tools/code-formatting.md)
  - [Clippy](./rust/tools/clippy.md)
  - [Extreme Clippy](./rust/tools/extreme-clippy.md)
  - [Cargo audit](./rust/tools/cargo-audit.md)
  - [Cargo watch](./rust/tools/cargo-watch.md)
  - [Pre-commit hook](./rust/tools/pre-commit.md)
  - [Continuous Integration](./rust/tools/continuous-integration.md)

- [Use libraries](./rust/use-libraries/use.md)
  - [Using the Standard library](./rust/use-libraries/using-the-standard-library.md)
  - [Using a single value from the Standard library](./rust/use-libraries/using-a-single-value-from-the-standard-library.md)
  - [Use (import) a name higher up in the hierarchy](./rust/use-libraries/use-a-name-higher-up-in-the-hierachy.md)
  - [Using a library with an alias](./rust/use-libraries/using-library-with-alias.md)
  - [TODO: Crate library and use local library](./rust/use-libraries/use-local-library.md)

- [Rust types](./rust/types/index.md)
  - [Rust Types](./rust/types/rust-types.md)
  - [Rust infers the type of variables](./rust/types/infer-the-type-of-variable.md)
  - [Showing type](./rust/types/showing-type.md)
  - [Print type of variable](./rust/types/print-type-of-variable.md)

- [Numbers](./rust/numbers/index.md)
  - [Rust numerical types](./rust/numbers/rust-numerical-types.md)
  - [Numerical operations on integers](./rust/numbers/numerical-operations-integers.md)
  - [Divide integers and get float](./rust/numbers/divide-integers-and-get-float.md)
  - [Rust type mismatch in numerical operation](./rust/numbers/rust-type-mismatch-in-numerical-operation.md)
  - [Increment integers - augmented assignment](./rust/numbers/increment-integers.md)
  - [unfit in i8 - compile time](./rust/numbers/unfit-in-i8-compile-time.md)
  - [unfit in i8 - run time - overflow](./rust/numbers/unfit-in-i8-run-time.md)
  - [How to find code that might overflow / underflow?](./rust/numbers/how-to-find-overflow.md)
  - [Handle overflow and underflow - saturating](./rust/numbers/handle-overflow-and-underflow-saturating.md)
  - [Handle overflow and underflow - checked](./rust/numbers/handle-overflow-and-underflow-checked.md)
  - [Handle overflow and underflow - overflowing](./rust/numbers/handle-overflow-and-underflow-overflowing.md)
  - [Handle overflow and underflow - carrying](./rust/numbers/handle-overflow-and-underflow-carrying.md)
  - [Handle overflow and underflow - strict](./rust/numbers/handle-overflow-and-underflow-strict.md)
  - [Compare integers](./rust/numbers/compare-integers.md)
  - [Compare integers in and if-statement](./rust/numbers/compare-integers-if-statement.md)
  - [Exponent - power](./rust/numbers/exponent-power.md)
  - [Exponent protecting  against overflow - checked_pow, saturating_pow](./rust/numbers/exponent-with-overflow-protection.md)
  - [Square root (sqrt)](./rust/numbers/square-root.md)
  - [Square root of integer numbers](./rust/numbers/square-root-of-integers.md)
  - [Floating point imprecision](./rust/numbers/floating-point-imprecision.md)
  - [Compare floating point numbers](./rust/numbers/compare-floating-pount-numbers.md)
  - [rounding float](./rust/numbers/rounding-float.md)
  - [Compare floating point numbers by rounding](./rust/numbers/compare-floating-point-numbers-by-rounding.md)
  - [Approximately compare floating point numbers](./rust/numbers/approximately-compare-floating-point-numbers.md)
  - [NaN - Not a Number](./rust/numbers/not-a-number.md)
  - [Infinite floating point numbers](./rust/numbers/infinite-floating-point-numbers.md)
  - [Complex numbers](./rust/numbers/complex-numbers.md)
  - [Functions and test adding numbers](./rust/numbers/functions-and-test-adding-numbers.md)
  - [Exercise: Rectangle ARGS with protection](./rust/numbers/exercise-rectangle-args-with-protection.md)
  - [Exercise: Rectangle add tests](./rust/numbers/exercise-rectangle-add-tests.md)
  - [Exercise: Circle add tests](./rust/numbers/exercise-circle-add-tests.md)
  - [Solution: Rectangle ARGS with protection](./rust/numbers/solution-rectangle-args-with-protection.md)

- [Constants](./rust/constants/index.md)
  - [Rust constants](./rust/constants/rust-constants.md)
  - [Constant shadowing](./rust/constants/constant-shadowing.md)

- [Characters](./rust/chars/index.md)
  - [Single character](./rust/chars/single-character.md)

- [Random](./rust/random/index.md)
  - [Using 3rd party libraries](./rust/random/using-3rd-party-libraries.md)
  - [Random module](./rust/random/random-module.md)

- [STDIN](./rust/stdin/index.md)
  - [Rust - read input from STDIN](./rust/stdin/rust-hello-name.md)
  - [Rust - read STDIN - remove trailing newline (trim, chomp)](./rust/stdin/rust-read-stdin-chomp.md)
  - [Rust - flush STDOUT - read STDIN](./rust/stdin/rust-flush-stdout-read-stdin-chomp.md)
  - [Get number from STDIN](./rust/stdin/get-number-from-stdin.md)
  - [Get number from STDIN - same variable](./rust/stdin/get-number-from-stdin-same-variable.md)
  - [Get number (i32) in using a function](./rust/stdin/get-number-using-function.md)
  - [Exercise: STDIN rectangle](./rust/stdin/exercise-stdin-rectangle.md)
  - [Exercise: STDIN circle](./rust/stdin/exercise-stdin-circle.md)
  - [Exercise: STDIN calculator](./rust/stdin/exercise-stdin-calculator.md)
  - [Solution STDIN rectangle](./rust/stdin/solution-stdin-rectangle.md)
  - [Solution: STDIN calculator](./rust/stdin/solution-stdin-calculator.md)

- [Loops in Rust](./rust/loops/index.md)
  - [Three types of loops in Rust](./rust/loops/three-types-of-loops.md)
  - [While loop in Rust](./rust/loops/rust-while-loop.md)
  - [Rust: loop with break](./rust/loops/rust-loop-with-break.md)
  - [break returns value from loop](./rust/loops/break-retursn-value-from-loop.md)
  - [for loop in Rust](./rust/loops/rust-for-loop.md)


- [Conditional operation and boolean values in Rust](./rust/boolean/index.md)
  - [Conditional: if](./rust/boolean/rust-conditional-if.md)
  - [Conditional: if - else](./rust/boolean/rust-conditional-if-else.md)
  - [Conditional: else - if](./rust/boolean/rust-conditional-else-if.md)
  - [Avoid the comparison chain using match](./rust/boolean/avoid-the-comparison-chain.md)
  - [Rust: boolean values true and false](./rust/boolean/rust-boolean-values.md)
  - [Assign result of conditional to variable](./rust/boolean/assign-result-to-variable.md)
  - [Rust: other types don't have true/false values](./rust/boolean/rust-boolean-only.md)
  - [Toggle](./rust/boolean/toggle.md)
  - [if-else returns a value](./rust/boolean/if-else-returns-value.md)
  - [Conditional (Ternary) operator](./rust/boolean/ternary-operator.md)
  - [match](./rust/boolean/match.md)
  - [match all the numbers of an integer type](./rust/boolean/match-all-the-numbers-of-an-integer-type.md)
  - [match all the numbers of a float type](./rust/boolean/match-all-the-numbers-of-a-float-type.md)
  - [match with conditions](./rust/boolean/match-with-conditions.md)
  - [Exercise: one-dimensional space-fight](./rust/boolean/exercise-one-dimensional-space-fight.md)
  - [Solution: one-dimensional space-fight](./rust/boolean/solution-one-dimensional-space-fight.md)

- [Arrays in Rust](./rust/arrays/index.md)
  - [Arrays in Rust](./rust/arrays/arrays-in-rust.md)
  - [Rust array of numbers, length of array](./rust/arrays/rust-array.md)
  - [Array of strings - access element by index](./rust/arrays/array-of-strings.md)
  - [Array of structs](./rust/arrays/array-of-structs.md)
  - [Array iterate on elements](./rust/arrays/array-iterate.md)
  - [Rust array iterate over idices](./rust/arrays/rust-array-iterate-indices.md)
  - [Rust array iterate indices and elements with enumerate](./rust/arrays/rust-array-indices.md)
  - [Rust arrays are not mutable](./rust/arrays/rust-array-not-mutable.md)
  - [Make the Rust array mutable](./rust/arrays/rust-array-mutable.md)
  - [Creating an array with the same value](./rust/arrays/creating-array-with-the-same-value.md)
  - [Exercise: Count digits](./rust/arrays/exercise-count-digits.md)
  - [Solution: Count digits](./rust/arrays/solution-count-digits.md)

- [Option](./rust/option/index.md)
  - [The Option enum](./rust/option/the-option-enum.md)
  - [Create Option](./rust/option/create-option.md)
  - [Checked rectangle](./rust/option/checked-rectangle.md)
  - [Get language function returning Option](./rust/option/get-language-function.md)

- [Strings in Rust](./rust/strings/index.md)
  - [Create a String](./rust/strings/create-string.md)
  - [Create empty string and grow it using push and push_str](./rust/strings/create-empty-string.md)
  - [Length of string](./rust/strings/length-of-string.md)
  - [Capacity of string](./rust/strings/capacity-of-string.md)
  - [Strings and memory allocation](./rust/strings/strings-and-memory-allocation.md)
  - [Rust - string ends with](./rust/strings/rust-string-ends-with.md)
  - [Rust - string starts with](./rust/strings/rust-string-starts-with.md)
  - [To lower, to upper case](./rust/strings/to-lowercase.md)
  - [Accessing characters in a string](./rust/strings/accessing-characters-in-a-string.md)
  - [Rust - string slices](./rust/strings/rust-string-slices.md)
  - [Rust - string characters](./rust/strings/rust-string-character.md)
  - [Iterate over the characters of a string](./rust/strings/iterate-over-characters.md)
  - [Rust - reverse string](./rust/strings/rust-reverse-string.md)
  - [Concatenation str with str](./rust/strings/concatetation-str-with-str.md)
  - [Concatenation String with String](./rust/strings/concatetation-string-with-string.md)
  - [Concatenation String with String (clone)](./rust/strings/concatetation-string-with-string-clone.md)
  - [Concatenation String with str](./rust/strings/concatetation-string-with-str.md)
  - [Concatenate strings using format!](./rust/strings/concatenate-strings-using-format.md)
  - [concat](./rust/strings/concat.md)
  - [Split string](./rust/strings/split-string.md)
  - [Split string on whitespace](./rust/strings/split-string-on-whitespace.md)
  - [Split on newlines - use lines](./rust/strings/split-on-newlines.md)
  - [Append to string with push_str](./rust/strings/append-to-string-with-push-str.md)
  - [Create String from literal string using to_string](./rust/strings/create-string-from-literal-string.md)
  - [Str and String equality](./rust/strings/str-string-equality.md)
  - [String notes](./rust/strings/string-notes.md)
  - [String replace all](./rust/strings/string-replace.md)
  - [String replace limited times](./rust/strings/string-replacen.md)
  - [String replace range](./rust/strings/string-replace-range.md)
  - [Function to combine two strings](./rust/strings/function-to-combine-two-strings.md)
  - [Ownership and strings](./rust/strings/ownership-and-strings.md)
  - [Slice and change string](./rust/strings/slice-and-change-string.md)
  - [Compare strings](./rust/strings/compare-strings.md)
  - [Is one string in another string - contains?](./rust/strings/string-contains.md)
  - [Embed double quotes in string](./rust/strings/embed-double-quotes-in-string.md)
  - [Remove leading and trailing whitespace](./rust/strings/remove-leading-and-trailing-whitespace.md)
  - [Remove extra whitespace from string](./rust/strings/remove-extra-whitespace-from-string.md)
  - [String is alphabetic or alphanumeric](./rust/strings/string-is-alphabetic.md)
  - [Compare memory address (pointer)](./rust/strings/compare-memory-address.md)
  - [Exercise: Count digits from string](./rust/strings/exercise-count-digits-from-string.md)
  - [Exercise: concatenate strings](./rust/strings/exercise-concatenate-strings.md)
  - [Exercise: is it a palindrome?](./rust/strings/exercise-palindrome.md)
  - [Exercise: is it an anagram?](./rust/strings/exercise-anagram.md)
  - [Exercise: Get nth double character](./rust/strings/exercise-get-nth-double-character.md)
  - [Exercise: get first word](./rust/strings/exercise-get-first-word.md)
  - [Solution: Count digits from string](./rust/strings/solution-count-digits-from-string.md)

- [Command line arguments - ARGS](./rust/args/index.md)
  - [Command line arguments - print all args](./rust/args/command-line-arguments-print-all-args.md)
  - [Command line program with a single file parameter](./rust/args/command-line-program.md)
  - [Exercise: calucaltor args](./rust/args/exercise-calculator-args.md)
  - [Solution: calucaltor args](./rust/args/solution-calculator-args.md)
  - [Default value on the command line](./rust/args/default-value-for-args.md)
  - [Default path - return PathBuf](./rust/args/return-pathbuf.md)


- [Tuples in Rust](./rust/tuples/index.md)
  - [Rust tuple - fixed-sizes, mixed, ordered collection](./rust/tuples/rust-tuple.md)
  - [Define the types in the tuple](./rust/tuples/define-the-types-in-the-tuple.md)
  - [Change tuple (mutable)](./rust/tuples/change-tuple.md)
  - [Create tuple with types, but without values](./rust/tuples/create-tuple-with-types-but-without-values.md)
  - [Destructuring tuple](./rust/tuples/destructuring-tuple.md)
  - [The empty tuple is called the unit](./rust/tuples/empty-tuple-unit.md)
  - [One element tuple](./rust/tuples/one-element-tuple.md)
  - [Enumerate over vector uses tuples](./rust/tuples/enumerate-over-vector.md)
  - [Return multiple values from a function](./rust/tuples/return-multiple-values-from-a-functions.md)

- [struct](./rust/struct/index.md)
  - [Create simple struct](./rust/struct/create-simple-struct.md)
  - [Change attributes of a mutable struct](./rust/struct/mutable-struct.md)
  - [Implement a method for a struct](./rust/struct/struct-method.md)
  - [Struct method to modify fields](./rust/struct/struct-method-to-modify-fields.md)
  - [Struct inheritance](./rust/struct/struct-inheritance.md)
  - [Struct composition: Circle](./rust/struct/struct-composition.md)
  - [Struct composition: Line](./rust/struct/struct-composition-line.md)
  - [Struct with vector of structs - Polygon](./rust/struct/struct-with-vector.md)
  - [Printing struct fails](./rust/struct/printing-struct-fails.md)
  - [Print struct - implement Display](./rust/struct/print-struct.md)
  - [Debug struct - implement Debug](./rust/struct/debug-struct.md)
  - [Derive Debug for struct](./rust/struct/derive-debug-for-struct.md)
  - [Struct with vector and optional value](./rust/struct/struct-with-vector-and-optional-value.md)
  - [Printing and debug-printing simple struct](./rust/struct/printing-simple-struct.md)
  - [Use a tuple as a struct to represent color](./rust/struct/use-a-typle-as-struct.md)
  - [Add method to tuple-based struct](./rust/struct/method-to-tuple-based-struct.md)
  - [Struct with method](./rust/struct/struct-with-method.md)
  - [Structs and circural references](./rust/struct/structs-and-circular-references.md)
  - [new method with default values for struct](./rust/struct/new-method-with-default-values.md)
  - [The new method has no special feature](./rust/struct/new-method-no-special-feature.md)
  - [Default values](./rust/struct/default-values.md)
  - [Empty string and zero as default values](./rust/struct/empty-string-and-zero-as-default-values.md)
  - [Derived Default values](./rust/struct/derived-default-values.md)
  - [Default for composite struct](./rust/struct/default-for-composite-struct.md)
  - [Compare structs for Equality](./rust/struct/compare-structs-for-equality.md)
  - [Compare structs for Equality - manual implementation](./rust/struct/compare-structs-for-equality-manual-implementation.md)
  - [Compare structs for partial equality - PartialEq](./rust/struct/compare-structs-for-partial-equality.md)
  - [Compare structs for ordering (sorting) - Ord](./rust/struct/compare-structs-for-ordering.md)
  - [Compare structs for partial ordering (sorting) - PartialOrd](./rust/struct/compare-structs-for-partial-ordering.md)
  - [Manually implement ordering](./rust/struct/manually-implement-ordering.md)
  - [Compare structs where some attributes are not comparable](./rust/struct/compare-structs-where-some-attributes-are-uncomparable.md)
  - [Copy attributes from struct instance](./rust/struct/copy-attributes-from-struct-insrance.md)
  - [Drop - destructor](./rust/struct/drop.md)
  - [Exercise - struct for contact info](./rust/struct/exercise-struct-for-contact-info.md)
  - [Solution - struct for contact info](./rust/struct/solution-struct-for-contact-info.md)
  - [Read from a file and return a struct](./rust/struct/read-from-a-file-and-return-struct.md)
  - [Converting between types: The From and Into traits](./rust/struct/from-and-into.md)
  - [From and Into for String and &str](./rust/struct/from-and-into-for-string.md)
  - [Implementing the From trait for 2D and 3D point structs](./rust/struct/implementing-the-from-trait-for-2d-and-3d-structs.md)
  - [Other: Struct and type alias - Polygon](./rust/struct/struct-and-type-alias.md)
  - [Other: Struct duplicate](./rust/struct/struct-duplicate.md)
  - [Other: Multiple referene to a struct](./rust/struct/multiple-reference-to-a-struct.md)
  - [Other: Print struct (Point)](./rust/struct/print-struct-point.md)
  - [Other: Debug struct (Point)](./rust/struct/debug-struct-point.md)

- [Vectors in Rust](./rust/vectors/index.md)
  - [Fixed vector of numbers](./rust/vectors/fixed-vector-of-numbers.md)
  - [Iterate over elements of vector using for-loop](./rust/vectors/iterate-over-element-of-vector.md)
  - [Mutable vector of numbers, append (push) values](./rust/vectors/mutable-numbers-vector.md)
  - [Mutable empty vector for numbers (push)](./rust/vectors/mutable-empty-vector-for-numbers.md)
  - [Mutable empty vector for strings](./rust/vectors/mutable-empty-vector-for-strings.md)
  - [Mutable empty vector with type definition](./rust/vectors/rust-vector.md)
  - [Mutable vector of strings](./rust/vectors/mutable-vector-of-strings.md)
  - [Remove the last element using pop, reduce capacity](./rust/vectors/remove-last-element-using-pop.md)
  - [Stack and the capacity of a vector](./rust/vectors/stack-and-the-capacity-of-a-vector.md)
  - [Extend vectors of numbers (combining two vectors)](./rust/vectors/vector-extend-numbers.md)
  - [Extend vector of Strings (combining two vectors)](./rust/vectors/vector-extend-strings.md)
  - [Append vector of Strings (moving over elements)](./rust/vectors/vector-append-strings.md)
  - [Split string into iterator](./rust/vectors/split-string-into-iterator.md)
  - [Split string into vector](./rust/vectors/split-string-into-vector.md)
  - [Sort vector of numbers](./rust/vectors/sort-vector-of-numbers.md)
  - [Sort vector of strings using sorting condition](./rust/vectors/sort-vector-of-strings.md)
  - [Exercise: Median](./rust/vectors/exercise-median.md)
  - [Exercise: ROT13](./rust/vectors/exercise-rot13.md)
  - [Solution: Median](./rust/vectors/solution-median.md)
  - [Solution: ROT13](./rust/vectors/solution-rot13.md)
  - [Convert vector of chars to String](./rust/vectors/chars-to-string.md)
  - [Vector of tuples](./rust/vectors/vector-of-tuples.md)
  - [Vector of structs](./rust/vectors/vector-of-structs.md)
  - [Vector of structs - change value](./rust/vectors/vector-of-structs-change-value.md)
  - [Join elements of vector into a string](./rust/vectors/join-elements-of-vector.md)
  - [Join vector of integers](./rust/vectors/join-vector-of-integers.md)
  - [Maximum value of a vector](./rust/vectors/maximum-vale-of-a-vector.md)
  - [Longest or shortest string in a vector](./rust/vectors/longes-or-shortest-string-in-vector.md)
  - [Change vector of numbers using map](./rust/vectors/change-vector-using-map.md)
  - [Update values in vector of structs using map](./rust/vectors/update-values-in-vector-of-structs-using-map.md)
  - [map is lazy](./rust/vectors/map-is-lazy.md)
  - [map is lazy that can cause problems](./rust/vectors/map-is-lazy-with-problems.md)
  - [filter numbers](./rust/vectors/filter-numbers.md)
  - [filter numbers iter into](./rust/vectors/filter-numbers-iter-into.md)
  - [filter numbers by named function](./rust/vectors/filter-numbers-by-named-function.md)
  - [filter string](./rust/vectors/filter-string.md)
  - [Two references to the same vector](./rust/vectors/two-refernces-to-the-same-vector.md)
  - [Filter vector of structs (cloning)](./rust/vectors/filter-vector-of-structs-cloning.md)
  - [Convert vector of structs to vector of references](./rust/vectors/convert-vector-of-structs-to-vector-of-references.md)
  - [Filter vector of structs without copy](./rust/vectors/filter-vector-of-structs-without-copy.md)
  - [Combine filter and map into filter_map](./rust/vectors/combine-filter-and-map.md)
  - [Accessing the last element of a vector](./rust/vectors/accessing-the-last-element-of-a-vector.md)
  - [Insert element in vector](./rust/vectors/instert-element-in-vector.md)
  - [Vector with optional values - None or out of range?](./rust/vectors/none-or-out-of-range.md)
  - [Vector with optional values](./rust/vectors/vector-with-optional-values.md)
  - [Vector length and capacity](./rust/vectors/vector-length-and-capacity.md)
  - [References to numbers](./rust/vectors/references-to-numbers.md)
  - [Queue](./rust/vectors/queue.md)
  - [Iterate over both index and value of a vector (enumerate)](./rust/vectors/iterate-over-vector-index-value.md)
  - [Create vector of strings from array of str using from_iter](./rust/vectors/create-vector-of-strings.md)
  - [Memory allocation of vector of numbers](./rust/vectors/memory-allocation-of-vector-of-integers.md)
  - [Memory allocation of vector of strings](./rust/vectors/memory-allocation-of-vector-of-strings.md)
  - [Exercise: Count words using two vectors](./rust/vectors/exercise-count-words-using-two-vectors.md)
  - [Solution: Count words using two vectors](./rust/vectors/solution-count-words-using-two-vectors.md)


- [HashMap in Rust](./rust/hashmap/index.md)
  - [What is a HashMap?](./rust/hashmap/what-is-a-hashmap.md)
  - [Create empty HashMap, insert key-value pairs](./rust/hashmap/create-empty-hash.md)
  - [Create immutable hash with data](./rust/hashmap/create-hash-with-data.md)
  - [Check if hash contains key (key exists)](./rust/hashmap/hash-containes-key.md)
  - [Get value from hash](./rust/hashmap/get-value-from-hash.md)
  - [Iterate over keys of a hash](./rust/hashmap/iterate-over-keys-of-hash.md)
  - [Iterate over key-value pairs in a Hash](./rust/hashmap/iterate-over-key-value-pairs-of-hash.md)
  - [Rust hash update value](./rust/hashmap/rust-hashmap-update-value.md)
  - [Rust update values in a hash - count words](./rust/hashmap/rust-update-values-in-a-hash.md)
  - [Remove element from hash](./rust/hashmap/remove-element-from-hash.md)
  - [Accessing values](./rust/hashmap/accessing-values.md)
  - [Split string create hash](./rust/hashmap/split-string-create-hash.md)
  - [Create hash from key-value pairs after split](./rust/hashmap/create-hash-from-key-value-pairs.md)
  - [Read key-value pairs from file](./rust/hashmap/read-key-value-pairs-from-file.md)
  - [Sort vector of hashes](./rust/hashmap/sort-vector-of-hashes.md)
  - [Mapping structs based on more than one key](./rust/hashmap/mapping-structs-based-on-more-than-one-key.md)
  - [Mapping structs based on more than one key from a vector](./rust/hashmap/mapping-structs-based-on-more-than-one-key-from-a-vector.md)
  - [Create hash from vector of tuple pairs](./rust/hashmap/create-hash-from-vector-of-pairs.md)
  - [Hash of vectors in Rust](./rust/hashmap/hash-of-vectors.md)
  - [Add items to a hash of vectors using a function](./rust/hashmap/hash-of-vectors-in-a-function.md)
  - [Integers as keys of a HashMap](./rust/hashmap/integers-as-keys-of-a-hashmap.md)
  - [Tuples as keys of a HashMap](./rust/hashmap/tuples-as-keys-of-a-hashmap.md)
  - [Structs as keys of a HashMap](./rust/hashmap/structs-as-keys-of-a-hashmap.md)
  - [Merge HashMaps (extend)](./rust/hashmap/merge-hashmaps.md)
  - [Merge two HashMaps adding the values](./rust/hashmap/merge-hashmaps-adding-the-values.md)
  - [Merge two HashMaps adding the values implemented as a function](./rust/hashmap/function-to-merge-hashmaps-adding-the-values.md)
  - [Merge two HashMaps adding the values in a function](./rust/hashmap/merge-hashmaps-adding-the-values-in-a-function.md)
  - [Convert HashMap to vector of tuples and sort by key or by value](./rust/hashmap/convert-hashmap-to-vector-and-sort-by-key-or-by-value.md)
  - [Other: Add method to HashMap that sums the values](./rust/hashmap/add-method-to-hashmap-that-sums-the-values.md)

- [Enums](./rust/enums/index.md)
  - [Why enums](./rust/enums/why-enums.md)
  - [Enum to represent exit status](./rust/enums/enum-to-represent-exit-status.md)
  - [Enum to represent exit code](./rust/enums/enum-to-represent-exit-code.md)
  - [Enumeration of the 7 days of the week](./rust/enums/enumeration-of-days-of-week.md)
  - [Enumeration with non-exhaustive patterns](./rust/enums/enumeration-non-exhaustive-match.md)
  - [Enumeration and manual comparision](./rust/enums/enumeration-and-manual-comparision.md)
  - [Enumeration and order](./rust/enums/enumeration-and-order.md)
  - [Enumeration colors - functions and String](./rust/enums/enumeration-colors-with-functions-and-string.md)
  - [Enumeration colors - functions and str](./rust/enums/enumeration-colors-with-functions-and-str.md)
  - [Enumeration colors - with method](./rust/enums/enumeration-colors-with-method.md)
  - [Enumeration colors - with constructor](./rust/enums/enumeration-colors-with-constructor.md)
  - [Enumerate without PartialEq using match](./rust/enums/enumerat-with-match.md)
  - [Struct using enum](./rust/enums/struct-using-enum.md)
  - [Exercise: enum for programming languages](./rust/enums/exercise-enum-for-programming-languages.md)
  - [Solution: enum for programming languages](./rust/enums/solution-enum-for-programming-languages.md)
  - [The Result enum](./rust/enums/the-result-enum.md)
  - [Iterate over the variants of an enum](./rust/enums/iterate-over-variants-of-enum.md)

- [Files](./rust/files/index.md)
  - [Rust - write to file](./rust/files/rust-write-to-file.md)
  - [Rust - read content of a file as a string](./rust/files/rust-read-content-of-a-file-as-a-string.md)
  - [Rust - read file line-by-line](./rust/files/rust-read-file-line-by-line.md)
  - [Rust - read file line-by-line with row number (enumerate)](./rust/files/rust-read-file-line-by-line-enumerate.md)
  - [Rust - counter](./rust/files/rust-counte.md)
  - [Rust list content of directory](./rust/files/rust-list-directory.md)
  - [Rust list directory content recursively (tree)](./rust/files/directory-tree-recursively.md)
  - [Makedir](./rust/files/makedir.md)
  - [Makedirs](./rust/files/makedirs.md)
  - [Get the temporary directory](./rust/files/get-the-temporary-directory.md)
  - [Create temporary directory](./rust/files/temporary-directory.md)
  - [Current working directory](./rust/files/current-working-directory.md)
  - [Change directory](./rust/files/change-directory.md)
  - [Append to file](./rust/files/append-to-file.md)
  - [Show size of file](./rust/files/show-size-of-file.md)
  - [du - disk usage](./rust/files/du.md)
  - [Error handling in file operations](./rust/files/error-handling-in-file-operations.md)
  - [Exercise count digits in file](./rust/files/exercise-count-digits-in-file.md)
  - [Exercise - wc (word count)](./rust/files/exercise-word-count.md)
  - [Exercise - simple grep](./rust/files/exercise-simple-grep.md)
  - [Exercise - du (disk usage)](./rust/files/exercise-disk-usage.md)
  - [Solution: count digits in file](./rust/files/solution-count-digits-in-file.md)


- [Path](./rust/path/index.md)
  - [Return vector of Path or PathBuf](./rust/path/return-vector-of-path.md)
  - [Convert the PathBuf to String to compare](./rust/path/convert-pathbuf-to-string-to-compare.md)
  - [get file extension](./rust/path/get-file-extension.md)
  - [file extension](./rust/path/file-extension.md)
  - [parent directory](./rust/path/parent-directory.md)
  - [directory ancestors (parent directories)](./rust/path/directory-ancestors.md)
  - [directory ancestor (n level)](./rust/path/directory-ancestor.md)
  - [join pathes](./rust/path/join-pathes.md)
  - [basename (file_name)](./rust/path/basename.md)
  - [Relative and absolute path](./rust/path/relative-and-absolute-path.md)
  - [List content of a directory - listdir](./rust/path/list-content-of-a-directory.md)
  - [List dir recursively](./rust/path/list-dir-recursively.md)

- [Functions](./rust/functions/index.md)
  - [Rust main function](./rust/functions/rust-main-function.md)
  - [Rust hello world function](./rust/functions/rust-hello-world-functio.md)
  - [Rust function with parameter (&str)](./rust/functions/rust-function-with-parameter.md)
  - [Rust functions return the unit by default](./rust/functions/rust-function-return-nothing-by-default.md)
  - [Rust function return value (integer i32)](./rust/functions/rust-function-return-value.md)
  - [Return the last expression (no return)](./rust/functions/return-the-last-expression.md)
  - [Return a string](./rust/functions/return-a-string.md)
  - [Rust recursive functions: factorial](./rust/functions/rust-recursive-functions-factorial.md)
  - [Rust recursive functions: Fibonacci](./rust/functions/rust-recursive-functions-fibonacci.md)
  - [Make function argument mutable inside the function](./rust/functions/make-function-argument-mutable-inside-the-function.md)
  - [Cannot decalre the same function twice](./rust/functions/cannot-declare-the-same-function-name-twice.md)
  - [Pass by reference to change external variable - Increment in a function](./rust/functions/increment-in-a-function.md)
  - [Count digits using functions](./rust/functions/count-digits-functions.md)
  - [Function returning multiple values](./rust/functions/function-returning-multiple-values.md)
  - [Function accepting multiple types (e.g. any type of numbers)](./rust/functions/function-accepting-multiple-types.md)
  - [Function that can accept any number (any integer or any float)](./rust/functions/function-to-accept-any-number.md)
  - [Exercise rectangle functions](./rust/functions/exercise-rectangle-functions.md)
  - [Exercise: is prime?](./rust/functions/exercise-is-prime.md)
  - [Scoped functions](./rust/functions/scoped-functions.md)

- [Variable ownership in Rust](./rust/ownership/index.md)
  - [Stack and Heap](./rust/ownership/stack-and-heap.md)
  - [Integers are copies](./rust/ownership/integers-are-copies.md)
  - [Passing integers to functions and returning integer](./rust/ownership/passing-integers-to-functions-and-returning-integer.md)
  - [Mutable integers are copies](./rust/ownership/mutable-integers-are-copies.md)
  - [Immutable integers are copies](./rust/ownership/immutable-integer-are-copies.md)
  - [Pass integer to function return changed value](./rust/ownership/pass-integer-to-function-return-changed-value.md)
  - [Pass mutable reference of integer to function](./rust/ownership/pass-mutable-reference-of-inteher-to-function.md)
  - [Literal string](./rust/ownership/literal-string.md)
  - [Literal string in mutable variable](./rust/ownership/literal-string-in-mutable-variable.md)
  - [Passing literal string to function](./rust/ownership/passing-literal-string-to-function.md)
  - [Mutable string in immutable variable](./rust/ownership/mutable-string-in-immutable-variable.md)
  - [Mutable string](./rust/ownership/mutable-string.md)
  - [Move strings](./rust/ownership/move-string.md)
  - [Move mutable string](./rust/ownership/move-mutable-string.md)
  - [Rust clone a String](./rust/ownership/rust-ownership-clone-string.md)
  - [Rust ownership - borrow String](./rust/ownership/rust-ownership-borrow-string.md)
  - [Pass ownership of String to function](./rust/ownership/pass-ownership-of-string-to-function.md)
  - [Borrow String when passing to a function](./rust/ownership/rust-ownership-borrow-string-in-function.md)
  - [Borrow &str when passing String to a function](./rust/ownership/rust-ownership-string-in-function.md)
  - [Rust function to change string](./rust/ownership/rust-function-to-change-string.md)
  - [Rust function to change integer (i32)](./rust/ownership/rust-function-to-change-integer.md)
  - [Lifetime annotation](./rust/ownership/lifetime-annotation.md)
  - [Change vector of structs](./rust/ownership/change-vector-of-structs.md)
  - [Try to return &str from function](./rust/ownership/try-to-return-str-from-function.md)
  - [Exercise: concatenate file content](./rust/ownership/exercise-concatenate-file-content.md)
  - [Pass vector to function](./rust/ownership/pass-vector-to-function.md)

- [Date and Time](./rust/datetime/index.md)
  - [Measure elapsed time](./rust/datetime/measure-elapsed-time.md)
  - [Duration](./rust/datetime/duration.md)
  - [Instant sleep Duration](./rust/datetime/instant-sleep-duration.md)
  - [Handle time (using the time crate)](./rust/datetime/handle-time.md)
  - [Next month charge date](./rust/datetime/next-month-charge-date.md)

- [Modules](./rust/modules/index.md)
  - [Function in the main.rs file](./rust/modules/function-in-the-main-rs-file.md)
  - [Module defined in the main.rs file](./rust/modules/module-defined-in-main-rs-file.md)
  - [Module in other file](./rust/modules/module-in-other-file.md)
  - [Modules and enums](./rust/modules/modules-and-enums.md)
  - [Modules and structs](./rust/modules/modules-and-structs.md)

- [Crates](./rust/crates/index.md)
  - [Create a crate](./rust/crates/crate-a-crate.md)

- [Sets](./rust/sets/index.md)
  - [HashSet](./rust/sets/hashset.md)
  - [Basic Set operations in Rust](./rust/sets/basic-set-operations.md)
  - [Union and bitor](./rust/sets/union.md)
  - [Difference](./rust/sets/difference.md)

- [Lifetime](./rust/lifetime/index.md)
  - [Lifetime elision rules](./rust/lifetime/lifetime-elision-rules.md)
  - [Function receiving and returning one reference](./rust/lifetime/function-receiving-and-returning-one-reference.md)
  - [Function receiving two and returning one reference](./rust/lifetime/function-receiving-two-and-returning-one-reference.md)
  - [Exercise: longest string](./rust/lifetime/exercise-lifetime-longest-string.md)
  - [Exercise: lifetime](./rust/lifetime/exercise-lifetime-longer-or-static.md)

- [Iterators](./rust/iterators/index.md)
  - [Iterate over vector of numbers](./rust/iterators/iterate-over-vector-of-numbers.md)
  - [Alternatively, we could create an iterator using the iter method](./rust/iterators/use-the-iter-method.md)
  - [Count number of elements of an iterator](./rust/iterators/count-number-of-elements-of-an-iterator.md)
  - [Iterator: all the elements](./rust/iterators/all-the-elements.md)
  - [Iteration moves values](./rust/iterators/iteration-moves-values.md)
  - [Iterator that restarts](./rust/iterators/iterator-that-restarts.md)
  - [Circular Iterator that restarts](./rust/iterators/circular-iterator-that-restarts.md)
  - [Create a simple iterator to count up to a number](./rust/iterators/create-simple-iterator-to-count.md)
  - [Create a simple iterator to count boundless](./rust/iterators/create-simple-iterator-to-count-boundless.md)
  - [Iterate over files in current directory](./rust/iterators/iterate-over-files-in-current-directory.md)
  - [Iterate over files in current directory calling next](./rust/iterators/iterate-over-files-in-current-directory-calling-next.md)
  - [Iterator to walk directory tree](./rust/iterators/walk-directory-tree.md)
  - [Mutable iterator](./rust/iterators/mutable-iterator.md)
  - [Take the first N elements of an iterator](./rust/iterators/take-the-first-n-iterations.md)
  - [Skip the first N elements of an iterator](./rust/iterators/skip-the-first-n-iterations.md)
  - [Skip and take from an iterator](./rust/iterators/skip-and-take-from-iterator.md)
  - [Counting the number of iterations - count vs collect-len](./rust/iterators/counting-the-number-of-iterations.md)
  - [Exercise: Iterator for the Fibonacci series](./rust/iterators/exercise-fibonacci-iterator.md)
  - [Solution: Iterator for the Fibonacci series](./rust/iterators/solution-fibonacci-iterator.md)
  - [Iter strings](./rust/iterators/iter-strings.md)
  - [Non-circular iterators](./rust/iterators/non-cicrucular-iterator.md)


- [Advanced Functions](./rust/advanced-functions/index.md)
  - [Pass function as argument - hello world](./rust/advanced-functions/pass-function-as-argument-hello-world.md)
  - [Pass function with parameter as an argument](./rust/advanced-functions/pass-function-with-parameter-as-an-argument.md)
  - [Dispatch table - Calculator](./rust/advanced-functions/dispatch-table.md)
  - [Dispatch table - Calculator](./rust/advanced-functions/dispatch-table-take-2.md)
  - [Generic functions to add numbers](./rust/advanced-functions/generic-functions.md)
  - [Generic functions to add numbers using where clause](./rust/advanced-functions/generic-functions-where-clause.md)
  - [Exercise: generic function](./rust/advanced-functions/exercise-generic-function.md)
  - [Exercise: call the add function for two points](./rust/advanced-functions/exercise-call-the-add-function-for-two-points.md)
  - [Exercise: Implement function to repeate a string](./rust/advanced-functions/exercise-repeate-string.md)
  - [Solution: Implement function to repeate a string](./rust/advanced-functions/solution-repeate-string.md)
  - [Solution: call the add function for two points](./rust/advanced-functions/solution-call-the-add-function-for-two-points.md)

- [DateTime with Chrono](./rust/chrono/index.md)
  - [Chrono now](./rust/chrono/chrono-now.md)
  - [Elapsed time](./rust/chrono/elapsed-time.md)
  - [Date and time arithmetic](./rust/chrono/date-and-time-arithmetic.md)
  - [Compare chrono dates](./rust/chrono/compare-chrono-dates.md)
  - [Format DateTime](./rust/chrono/format-datetime.md)
  - [Parse string to datetime](./rust/chrono/parse-string-to-datetime.md)

- [Testing](./rust/testing/index.md)
  - [Testing a library crate](./rust/testing/testing-a-library-crate.md)
  - [Test coverage report with tarpaulin](./rust/testing/test-coverage-with-tarpaulin.md)
  - [Test a function in a crate](./rust/testing/test-a-function.md)
  - [Show STDOUT and STDERR during testing](./rust/testing/show-stdout-and-stderr-during-testing.md)
  - [Testing with temporary directory passed as an environment variable (test in a single thread RUST_TEST_THREADS)](./rust/testing/testing-with-temporary-directory-passed-as-en-environment-variable.md)
  - [Testing with temorary directory passed in a thread-local variable](./rust/testing/testing-with-temporary-directory-passed-in-a-thread-local-variable.md)
  - [Testing crates](./rust/testing/testing-crates.md)
  - [Parametrization of tests](./rust/testing/parametrizations-of-tests.md)
  - [Rust testing setup and teardown fixtures](./rust/testing/rust-testing-with-fixtures.md)

- [TOML](./rust/toml/index.md)
  - [Reading a TOML file](./rust/toml/reading-toml-file.md)
  - [Parsing TOML values](./rust/toml/parsing-toml-values.md)

- [Execute and run external commands](./rust/external/index.md)
  - [The external program we'll run](./rust/external/the-external-program.md)
  - [Run external programs](./rust/external/run-external-programs.md)
  - [Run external program combining parameters](./rust/external/run-external-prorgam-combining-parameter.md)
  - [Run a command provided as a string](./rust/external/run-a-command-provided-as-a-string.md)
  - [Run external command in another directory](./rust/external/run-external-program-in-another-directory.md)

