gitextract_tbjns9bv/ ├── .cargo/ │ └── config.toml ├── .git-blame-ignore-revs ├── .gitattributes ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ └── new_translation.md │ └── workflows/ │ └── main.yml ├── .gitignore ├── 2018-edition/ │ ├── book.toml │ ├── dot/ │ │ ├── trpl04-01.dot │ │ ├── trpl04-02.dot │ │ ├── trpl04-03.dot │ │ ├── trpl04-04.dot │ │ ├── trpl04-05.dot │ │ ├── trpl04-06.dot │ │ ├── trpl15-01.dot │ │ ├── trpl15-02.dot │ │ └── trpl15-03.dot │ ├── ferris.css │ ├── ferris.js │ └── src/ │ ├── SUMMARY.md │ ├── appendix-00.md │ ├── appendix-01-keywords.md │ ├── appendix-02-operators.md │ ├── appendix-03-derivable-traits.md │ ├── appendix-04-useful-development-tools.md │ ├── appendix-05-editions.md │ ├── appendix-06-translation.md │ ├── appendix-07-nightly-rust.md │ ├── ch00-00-introduction.md │ ├── ch01-00-getting-started.md │ ├── ch01-01-installation.md │ ├── ch01-02-hello-world.md │ ├── ch01-03-hello-cargo.md │ ├── ch02-00-guessing-game-tutorial.md │ ├── ch03-00-common-programming-concepts.md │ ├── ch03-01-variables-and-mutability.md │ ├── ch03-02-data-types.md │ ├── ch03-03-how-functions-work.md │ ├── ch03-04-comments.md │ ├── ch03-05-control-flow.md │ ├── ch04-00-understanding-ownership.md │ ├── ch04-01-what-is-ownership.md │ ├── ch04-02-references-and-borrowing.md │ ├── ch04-03-slices.md │ ├── ch05-00-structs.md │ ├── ch05-01-defining-structs.md │ ├── ch05-02-example-structs.md │ ├── ch05-03-method-syntax.md │ ├── ch06-00-enums.md │ ├── ch06-01-defining-an-enum.md │ ├── ch06-02-match.md │ ├── ch06-03-if-let.md │ ├── ch07-00-packages-crates-and-modules.md │ ├── ch07-01-packages-and-crates-for-making-libraries-and-executables.md │ ├── ch07-02-modules-and-use-to-control-scope-and-privacy.md │ ├── ch08-00-common-collections.md │ ├── ch08-01-vectors.md │ ├── ch08-02-strings.md │ ├── ch08-03-hash-maps.md │ ├── ch09-00-error-handling.md │ ├── ch09-01-unrecoverable-errors-with-panic.md │ ├── ch09-02-recoverable-errors-with-result.md │ ├── ch09-03-to-panic-or-not-to-panic.md │ ├── ch10-00-generics.md │ ├── ch10-01-syntax.md │ ├── ch10-02-traits.md │ ├── ch10-03-lifetime-syntax.md │ ├── ch11-00-testing.md │ ├── ch11-01-writing-tests.md │ ├── ch11-02-running-tests.md │ ├── ch11-03-test-organization.md │ ├── ch12-00-an-io-project.md │ ├── ch12-01-accepting-command-line-arguments.md │ ├── ch12-02-reading-a-file.md │ ├── ch12-03-improving-error-handling-and-modularity.md │ ├── ch12-04-testing-the-librarys-functionality.md │ ├── ch12-05-working-with-environment-variables.md │ ├── ch12-06-writing-to-stderr-instead-of-stdout.md │ ├── ch13-00-functional-features.md │ ├── ch13-01-closures.md │ ├── ch13-02-iterators.md │ ├── ch13-03-improving-our-io-project.md │ ├── ch13-04-performance.md │ ├── ch14-00-more-about-cargo.md │ ├── ch14-01-release-profiles.md │ ├── ch14-02-publishing-to-crates-io.md │ ├── ch14-03-cargo-workspaces.md │ ├── ch14-04-installing-binaries.md │ ├── ch14-05-extending-cargo.md │ ├── ch15-00-smart-pointers.md │ ├── ch15-01-box.md │ ├── ch15-02-deref.md │ ├── ch15-03-drop.md │ ├── ch15-04-rc.md │ ├── ch15-05-interior-mutability.md │ ├── ch15-06-reference-cycles.md │ ├── ch16-00-concurrency.md │ ├── ch16-01-threads.md │ ├── ch16-02-message-passing.md │ ├── ch16-03-shared-state.md │ ├── ch16-04-extensible-concurrency-sync-and-send.md │ ├── ch17-00-oop.md │ ├── ch17-01-what-is-oo.md │ ├── ch17-02-trait-objects.md │ ├── ch17-03-oo-design-patterns.md │ ├── ch18-00-patterns.md │ ├── ch18-01-all-the-places-for-patterns.md │ ├── ch18-02-refutability.md │ ├── ch18-03-pattern-syntax.md │ ├── ch19-00-advanced-features.md │ ├── ch19-01-unsafe-rust.md │ ├── ch19-02-advanced-lifetimes.md │ ├── ch19-03-advanced-traits.md │ ├── ch19-04-advanced-types.md │ ├── ch19-05-advanced-functions-and-closures.md │ ├── ch19-06-macros.md │ ├── ch20-00-final-project-a-web-server.md │ ├── ch20-01-single-threaded.md │ ├── ch20-02-multithreaded.md │ ├── ch20-03-graceful-shutdown-and-cleanup.md │ └── foreword.md ├── ADMIN_TASKS.md ├── CONTRIBUTING.md ├── COPYRIGHT ├── Cargo.toml ├── LICENSE-APACHE ├── LICENSE-MIT ├── README.md ├── TODO.md ├── book.toml ├── ci/ │ ├── dictionary.txt │ ├── spellcheck.sh │ └── validate.sh ├── dot/ │ ├── trpl04-01.dot │ ├── trpl04-02.dot │ ├── trpl04-03.dot │ ├── trpl04-04.dot │ ├── trpl04-05.dot │ ├── trpl04-06.dot │ ├── trpl04-07.dot │ ├── trpl15-01.dot │ ├── trpl15-02.dot │ ├── trpl15-03.dot │ ├── trpl15-04.dot │ ├── trpl17-01.dot │ ├── trpl17-02.dot │ ├── trpl17-03.dot │ ├── trpl17-04.dot │ ├── trpl17-05.dot │ ├── trpl17-06.dot │ ├── trpl17-07.dot │ ├── trpl17-08.dot │ └── trpl17-09.dot ├── dprint.jsonc ├── ferris.css ├── ferris.js ├── first-edition/ │ ├── book.toml │ └── src/ │ ├── README.md │ ├── SUMMARY.md │ ├── associated-types.md │ ├── attributes.md │ ├── bibliography.md │ ├── borrow-and-asref.md │ ├── casting-between-types.md │ ├── choosing-your-guarantees.md │ ├── closures.md │ ├── comments.md │ ├── concurrency.md │ ├── conditional-compilation.md │ ├── const-and-static.md │ ├── crates-and-modules.md │ ├── deref-coercions.md │ ├── documentation.md │ ├── drop.md │ ├── effective-rust.md │ ├── enums.md │ ├── error-handling.md │ ├── ffi.md │ ├── functions.md │ ├── generics.md │ ├── getting-started.md │ ├── glossary.md │ ├── guessing-game.md │ ├── if-let.md │ ├── if.md │ ├── iterators.md │ ├── lifetimes.md │ ├── loops.md │ ├── macros.md │ ├── match.md │ ├── method-syntax.md │ ├── mutability.md │ ├── operators-and-overloading.md │ ├── ownership.md │ ├── patterns.md │ ├── primitive-types.md │ ├── procedural-macros.md │ ├── raw-pointers.md │ ├── references-and-borrowing.md │ ├── release-channels.md │ ├── strings.md │ ├── structs.md │ ├── syntax-and-semantics.md │ ├── syntax-index.md │ ├── testing.md │ ├── the-stack-and-the-heap.md │ ├── trait-objects.md │ ├── traits.md │ ├── type-aliases.md │ ├── ufcs.md │ ├── unsafe.md │ ├── unsized-types.md │ ├── using-rust-without-the-standard-library.md │ ├── variable-bindings.md │ └── vectors.md ├── listings/ │ ├── ch02-guessing-game-tutorial/ │ │ ├── listing-02-01/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-02-02/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-02-03/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-02-04/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-02-05/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-02-06/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-01-cargo-new/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-02-without-expect/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-03-convert-string-to-number/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-04-looping/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ └── no-listing-05-quitting/ │ │ ├── Cargo.toml │ │ └── src/ │ │ └── main.rs │ ├── ch03-common-programming-concepts/ │ │ ├── listing-03-01/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-03-02/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-03-03/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-03-04/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-03-05/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-01-variables-are-immutable/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-02-adding-mut/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-03-shadowing/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-04-shadowing-can-change-types/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-05-mut-cant-change-types/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-06-floating-point/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-07-numeric-operations/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-08-boolean/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-09-char/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-10-tuples/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-11-destructuring-tuples/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-12-tuple-indexing/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-13-arrays/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-14-array-indexing/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-15-invalid-array-access/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-16-functions/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-17-functions-with-parameters/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-18-functions-with-multiple-parameters/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-19-statements-vs-expressions/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ ├── rustfmt-ignore │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-20-blocks-are-expressions/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-21-function-return-values/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-22-function-parameter-and-return/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-23-statements-dont-return-values/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-24-comments-end-of-line/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-25-comments-above-line/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-26-if-true/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-27-if-false/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-28-if-condition-must-be-bool/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-29-if-not-equal-0/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-30-else-if/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-31-arms-must-return-same-type/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-32-5-loop-labels/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-32-loop/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-33-return-value-from-loop/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-34-for-range/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ └── output-only-01-no-type-annotations/ │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src/ │ │ └── main.rs │ ├── ch04-understanding-ownership/ │ │ ├── listing-04-01/ │ │ │ ├── Cargo.toml │ │ │ ├── rustfmt-ignore │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-04-02/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-04-03/ │ │ │ ├── Cargo.toml │ │ │ ├── rustfmt-ignore │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-04-04/ │ │ │ ├── Cargo.toml │ │ │ ├── rustfmt-ignore │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-04-05/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-04-06/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-04-07/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-04-08/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-04-09/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-01-can-mutate-string/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-02-string-scope/ │ │ │ ├── Cargo.toml │ │ │ ├── rustfmt-ignore │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-03-string-move/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-04-cant-use-after-move/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-04b-replacement-drop/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-05-clone/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-06-copy/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-07-reference/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-08-reference-with-annotations/ │ │ │ ├── Cargo.toml │ │ │ ├── rustfmt-ignore │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-09-fixes-listing-04-06/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-10-multiple-mut-not-allowed/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-11-muts-in-separate-scopes/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-12-immutable-and-mutable-not-allowed/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-13-reference-scope-ends/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-14-dangling-reference/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-15-dangling-reference-annotated/ │ │ │ ├── Cargo.toml │ │ │ ├── rustfmt-ignore │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-16-no-dangle/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-17-slice/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-18-first-word-slice/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ └── no-listing-19-slice-error/ │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src/ │ │ └── main.rs │ ├── ch05-using-structs-to-structure-related-data/ │ │ ├── listing-05-01/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-05-02/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-05-03/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-05-04/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-05-05/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-05-06/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-05-07/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-05-08/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-05-09/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-05-10/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-05-11/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-05-12/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-05-13/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-05-14/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-05-15/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-05-16/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-01-tuple-structs/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-02-reference-in-struct/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-03-associated-functions/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-04-unit-like-structs/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-05-dbg-macro/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-06-method-field-interaction/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── output-only-01-debug/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ └── output-only-02-pretty-debug/ │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src/ │ │ └── main.rs │ ├── ch06-enums-and-pattern-matching/ │ │ ├── listing-06-01/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-06-02/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-06-03/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-06-04/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-06-05/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-06-06/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-06-07/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-06-08/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-06-09/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-01-defining-enums/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-02-enum-with-data/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-03-variants-with-different-data/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-04-structs-similar-to-message-enum/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-05-methods-on-enums/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-06-option-examples/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-07-cant-use-option-directly/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-08-match-arm-multiple-lines/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-09-variable-in-pattern/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-10-non-exhaustive-match/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-12-if-let/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-13-count-and-announce-match/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-14-count-and-announce-if-let-else/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-15-binding-catchall/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-16-underscore-catchall/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ └── no-listing-17-underscore-unit/ │ │ ├── Cargo.toml │ │ └── src/ │ │ └── main.rs │ ├── ch07-managing-growing-projects/ │ │ ├── listing-07-01/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-07-03/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-07-05/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-07-07/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-07-08/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-07-09/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-07-10/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-07-11/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-07-12/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-07-13/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-07-14/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-07-15/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-07-16/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-07-17/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-07-18/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-07-19/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-07-20/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-07-21-and-22/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── front_of_house.rs │ │ │ └── lib.rs │ │ ├── no-listing-01-use-std-unnested/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-02-extracting-hosting/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── front_of_house/ │ │ │ │ └── hosting.rs │ │ │ ├── front_of_house.rs │ │ │ └── lib.rs │ │ └── quick-reference-example/ │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src/ │ │ ├── garden/ │ │ │ └── vegetables.rs │ │ ├── garden.rs │ │ └── main.rs │ ├── ch08-common-collections/ │ │ ├── listing-08-01/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-08-02/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-08-03/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-08-04/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-08-05/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-08-06/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-08-07/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-08-08/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-08-09/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-08-10/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-08-11/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-08-12/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-08-13/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-08-14/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-08-15/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-08-16/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-08-17/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-08-18/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-08-19/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-08-20/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-08-21/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-08-22/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-08-23/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-08-24/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-08-25/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-01-concat-multiple-strings/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-02-format/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-03-iterate-over-hashmap/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ └── output-only-01-not-char-boundary/ │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src/ │ │ └── main.rs │ ├── ch09-error-handling/ │ │ ├── listing-09-01/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-09-03/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-09-04/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-09-05/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-09-06/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-09-07/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-09-08/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-09-09/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-09-10/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-09-11/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-09-12/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-09-13/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── guessing_game.rs │ │ │ └── main.rs │ │ ├── no-listing-01-panic/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-04-unwrap/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-05-expect/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-08-unwrap-that-cant-fail/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ └── no-listing-09-guess-out-of-range/ │ │ ├── Cargo.toml │ │ └── src/ │ │ └── main.rs │ ├── ch10-generic-types-traits-and-lifetimes/ │ │ ├── listing-10-01/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-10-02/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-10-03/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-10-04/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-10-05/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-10-06/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-10-07/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-10-08/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-10-09/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-10-10/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-10-11/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-10-12/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-10-13/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-10-14/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-10-15/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-10-16/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-10-17/ │ │ │ ├── Cargo.toml │ │ │ ├── rustfmt-ignore │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-10-18/ │ │ │ ├── Cargo.toml │ │ │ ├── rustfmt-ignore │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-10-19/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-10-20/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-10-21/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-10-22/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-10-23/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-10-24/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-10-25/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-01-calling-trait-method/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ ├── no-listing-02-calling-default-impl/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ ├── no-listing-03-default-impl-calls-other-methods/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ ├── no-listing-04-traits-as-parameters/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── no-listing-05-returning-impl-trait/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── no-listing-06-impl-trait-returns-one-type/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── no-listing-07-where-clause/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── no-listing-08-only-one-reference-with-lifetime/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-09-unrelated-lifetime/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-10-lifetimes-on-methods/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ └── no-listing-11-generics-traits-and-lifetimes/ │ │ ├── Cargo.toml │ │ └── src/ │ │ └── main.rs │ ├── ch11-writing-automated-tests/ │ │ ├── listing-11-01/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-11-03/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-11-05/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-11-06/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-11-07/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-11-08/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-11-09/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-11-10/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-11-11/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-11-12/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-11-13/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ ├── src/ │ │ │ │ └── lib.rs │ │ │ └── tests/ │ │ │ └── integration_test.rs │ │ ├── no-listing-01-changing-test-name/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── no-listing-02-adding-another-rectangle-test/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── no-listing-03-introducing-a-bug/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── no-listing-04-bug-in-add-two/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── no-listing-05-greeter/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── no-listing-06-greeter-with-bug/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── no-listing-07-custom-failure-message/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── no-listing-08-guess-with-bug/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── no-listing-09-guess-with-panic-msg-bug/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── no-listing-10-result-in-tests/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── no-listing-11-ignore-a-test/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── no-listing-12-shared-test-code-problem/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ ├── src/ │ │ │ │ └── lib.rs │ │ │ └── tests/ │ │ │ ├── common.rs │ │ │ └── integration_test.rs │ │ ├── no-listing-13-fix-shared-test-code-problem/ │ │ │ ├── Cargo.toml │ │ │ ├── src/ │ │ │ │ └── lib.rs │ │ │ └── tests/ │ │ │ ├── common/ │ │ │ │ └── mod.rs │ │ │ └── integration_test.rs │ │ ├── output-only-01-show-output/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── output-only-02-single-test/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── output-only-03-multiple-tests/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── output-only-04-running-ignored/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── lib.rs │ │ └── output-only-05-single-integration/ │ │ ├── Cargo.toml │ │ ├── output.txt │ │ ├── src/ │ │ │ └── lib.rs │ │ └── tests/ │ │ └── integration_test.rs │ ├── ch12-an-io-project/ │ │ ├── listing-12-01/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-12-02/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-12-03/ │ │ │ ├── Cargo.toml │ │ │ ├── poem.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-12-04/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ ├── poem.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-12-05/ │ │ │ ├── Cargo.toml │ │ │ ├── poem.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-12-06/ │ │ │ ├── Cargo.toml │ │ │ ├── poem.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-12-07/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ ├── poem.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-12-08/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ ├── poem.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-12-09/ │ │ │ ├── Cargo.toml │ │ │ ├── poem.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-12-10/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ ├── poem.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-12-11/ │ │ │ ├── Cargo.toml │ │ │ ├── poem.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-12-12/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ ├── poem.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-12-13/ │ │ │ ├── Cargo.toml │ │ │ ├── poem.txt │ │ │ └── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ ├── listing-12-14/ │ │ │ ├── Cargo.toml │ │ │ ├── poem.txt │ │ │ └── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ ├── listing-12-15/ │ │ │ ├── Cargo.toml │ │ │ ├── poem.txt │ │ │ └── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ ├── listing-12-16/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ ├── poem.txt │ │ │ └── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ ├── listing-12-17/ │ │ │ ├── Cargo.toml │ │ │ ├── poem.txt │ │ │ └── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ ├── listing-12-18/ │ │ │ ├── Cargo.toml │ │ │ ├── poem.txt │ │ │ └── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ ├── listing-12-19/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ ├── poem.txt │ │ │ └── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ ├── listing-12-20/ │ │ │ ├── Cargo.toml │ │ │ ├── poem.txt │ │ │ └── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ ├── listing-12-21/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ ├── poem.txt │ │ │ └── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ ├── listing-12-22/ │ │ │ ├── Cargo.toml │ │ │ ├── poem.txt │ │ │ └── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ ├── listing-12-23/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ ├── poem.txt │ │ │ └── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ ├── listing-12-24/ │ │ │ ├── Cargo.toml │ │ │ ├── poem.txt │ │ │ └── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ ├── no-listing-01-handling-errors-in-main/ │ │ │ ├── Cargo.toml │ │ │ ├── poem.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-02-using-search-in-run/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ ├── poem.txt │ │ │ └── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ ├── output-only-01-with-args/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── output-only-02-missing-lifetimes/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ ├── poem.txt │ │ │ └── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ ├── output-only-03-multiple-matches/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ ├── poem.txt │ │ │ └── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ └── output-only-04-no-matches/ │ │ ├── Cargo.toml │ │ ├── output.txt │ │ ├── poem.txt │ │ └── src/ │ │ ├── lib.rs │ │ └── main.rs │ ├── ch13-functional-features/ │ │ ├── listing-12-23-reproduced/ │ │ │ ├── Cargo.toml │ │ │ ├── poem.txt │ │ │ └── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ ├── listing-12-24-reproduced/ │ │ │ ├── Cargo.toml │ │ │ ├── poem.txt │ │ │ └── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ ├── listing-13-01/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-13-02/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-13-03/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-13-04/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-13-05/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-13-06/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-13-07/ │ │ │ ├── .rustfmt.toml │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-13-08/ │ │ │ ├── .rustfmt.toml │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-13-09/ │ │ │ ├── .rustfmt.toml │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-13-10/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-13-11/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-13-12/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-13-13/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-13-14/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-13-15/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-13-16/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-13-18/ │ │ │ ├── Cargo.toml │ │ │ ├── poem.txt │ │ │ └── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ ├── listing-13-19/ │ │ │ ├── Cargo.toml │ │ │ ├── poem.txt │ │ │ └── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ ├── listing-13-20/ │ │ │ ├── Cargo.toml │ │ │ ├── poem.txt │ │ │ └── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ └── listing-13-22/ │ │ ├── Cargo.toml │ │ ├── poem.txt │ │ └── src/ │ │ ├── lib.rs │ │ └── main.rs │ ├── ch14-more-about-cargo/ │ │ ├── listing-14-01/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-14-02/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-14-03/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-14-04/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ ├── listing-14-05/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-14-06/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ ├── listing-14-07/ │ │ │ └── add/ │ │ │ ├── Cargo.toml │ │ │ ├── add_one/ │ │ │ │ ├── Cargo.toml │ │ │ │ └── src/ │ │ │ │ └── lib.rs │ │ │ └── adder/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-01-workspace/ │ │ │ └── add/ │ │ │ ├── Cargo.toml │ │ │ └── rustfmt-ignore │ │ ├── no-listing-02-workspace-with-two-crates/ │ │ │ └── add/ │ │ │ ├── Cargo.toml │ │ │ ├── add_one/ │ │ │ │ ├── Cargo.toml │ │ │ │ └── src/ │ │ │ │ └── lib.rs │ │ │ └── adder/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-03-workspace-with-external-dependency/ │ │ │ └── add/ │ │ │ ├── Cargo.toml │ │ │ ├── add_one/ │ │ │ │ ├── Cargo.toml │ │ │ │ └── src/ │ │ │ │ └── lib.rs │ │ │ └── adder/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-04-workspace-with-tests/ │ │ │ └── add/ │ │ │ ├── Cargo.toml │ │ │ ├── add_one/ │ │ │ │ ├── Cargo.toml │ │ │ │ └── src/ │ │ │ │ └── lib.rs │ │ │ └── adder/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── output-only-01-adder-crate/ │ │ │ └── add/ │ │ │ ├── .gitignore │ │ │ ├── Cargo.toml │ │ │ └── rustfmt-ignore │ │ ├── output-only-02-add-one/ │ │ │ └── add/ │ │ │ ├── Cargo.toml │ │ │ ├── add_one/ │ │ │ │ ├── Cargo.toml │ │ │ │ └── src/ │ │ │ │ └── lib.rs │ │ │ └── adder/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ └── output-only-03-use-rand/ │ │ └── add/ │ │ ├── Cargo.toml │ │ ├── add_one/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ └── adder/ │ │ ├── Cargo.toml │ │ └── src/ │ │ └── main.rs │ ├── ch15-smart-pointers/ │ │ ├── listing-15-01/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-15-02/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-15-03/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-15-05/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-15-06/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-15-07/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-15-08/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-15-09/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-15-10/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-15-11/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-15-12/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-15-13/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-15-14/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-15-15/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-15-16/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-15-17/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-15-18/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-15-19/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-15-20/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-15-21/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-15-22/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-15-23/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-15-24/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-15-25/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-15-26/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-15-27/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-15-28/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-15-29/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-01-cant-borrow-immutable-as-mutable/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ └── output-only-01-comparing-to-reference/ │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src/ │ │ └── main.rs │ ├── ch16-fearless-concurrency/ │ │ ├── listing-16-01/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-16-02/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-16-03/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-16-04/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-16-05/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-16-06/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-16-07/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-16-08/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-16-09/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-16-10/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-16-11/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-16-12/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-16-13/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-16-14/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-16-15/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-01-join-too-early/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-02-no-loop-to-understand-error/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ └── output-only-01-move-drop/ │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src/ │ │ └── main.rs │ ├── ch17-async-await/ │ │ ├── listing-17-01/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-17-02/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-17-03/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-17-04/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-17-05/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-17-06/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-17-07/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-17-08/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-17-09/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-17-10/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-17-11/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-17-12/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-17-13/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-17-14/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-17-15/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-17-16/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-17-17/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-17-18/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-17-19/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-17-20/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-17-21/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-17-22/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-17-23/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-17-24/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-17-25/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-state-machine/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── lib.rs │ │ └── no-listing-stream-ext/ │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src/ │ │ └── lib.rs │ ├── ch18-oop/ │ │ ├── listing-18-01/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-18-02/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-18-03/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-18-04/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-18-05/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-18-06/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-18-07/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-18-08/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ ├── listing-18-09/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ ├── listing-18-10/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ ├── listing-18-11/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-18-12/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ ├── listing-18-13/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ ├── listing-18-14/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ ├── listing-18-15/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ ├── listing-18-16/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ ├── listing-18-17/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ ├── listing-18-18/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ ├── listing-18-19/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-18-20/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ └── listing-18-21/ │ │ ├── Cargo.toml │ │ └── src/ │ │ ├── lib.rs │ │ └── main.rs │ ├── ch19-patterns-and-matching/ │ │ ├── listing-19-01/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-19-02/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-19-03/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-19-04/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-19-05/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-19-06/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-19-07/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-19-08/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-19-09/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-19-10/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-19-11/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-19-12/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-19-13/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-19-14/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-19-15/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-19-16/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-19-17/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-19-18/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-19-19/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-19-20/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-19-21/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-19-22/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-19-23/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-19-24/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-19-25/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ ├── rustfmt-ignore │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-19-26/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-19-27/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-19-28/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-19-29/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-01-literals/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-02-multiple-patterns/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-03-ranges/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-04-ranges-of-char/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ └── no-listing-05-destructuring-structs-and-tuples/ │ │ ├── Cargo.toml │ │ └── src/ │ │ └── main.rs │ ├── ch20-advanced-features/ │ │ ├── listing-20-01/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-20-02/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-20-03/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-20-04/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-20-05/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-20-06/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-20-07/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-20-08/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-20-09/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-20-10/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-20-11/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-20-12/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-20-13/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-20-14/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-20-15/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-20-16/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-20-17/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-20-18/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-20-19/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-20-20/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-20-21/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-20-22/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-20-23/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-20-24/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-20-25/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-20-26/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-20-28/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-20-29/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-20-30/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-20-31/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-20-32/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-20-33/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-20-34/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-20-35/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-20-37/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-20-38/ │ │ │ └── hello_macro/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── listing-20-39/ │ │ │ ├── hello_macro/ │ │ │ │ ├── Cargo.toml │ │ │ │ └── src/ │ │ │ │ └── lib.rs │ │ │ └── pancakes/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── listing-20-40/ │ │ │ └── hello_macro/ │ │ │ ├── Cargo.toml │ │ │ ├── hello_macro_derive/ │ │ │ │ ├── Cargo.toml │ │ │ │ └── src/ │ │ │ │ └── lib.rs │ │ │ └── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ ├── listing-20-42/ │ │ │ └── hello_macro/ │ │ │ ├── Cargo.toml │ │ │ ├── hello_macro_derive/ │ │ │ │ ├── Cargo.toml │ │ │ │ └── src/ │ │ │ │ └── lib.rs │ │ │ └── src/ │ │ │ ├── lib.rs │ │ │ └── main.rs │ │ ├── no-listing-01-unsafe-fn/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-02-impl-outlineprint-for-point/ │ │ │ ├── Cargo.toml │ │ │ ├── output.txt │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-03-impl-display-for-point/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-04-kilometers-alias/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-05-write-trait/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── no-listing-06-result-alias/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── no-listing-07-never-type/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── no-listing-08-match-arms-different-types/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-09-unwrap-definition/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── no-listing-10-loop-returns-never/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-11-cant-create-str/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-12-generic-fn-definition/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── no-listing-13-generic-implicit-sized-bound/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── no-listing-14-generic-maybe-sized/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── no-listing-18-returns-closure/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── no-listing-21-pancakes/ │ │ │ ├── hello_macro/ │ │ │ │ ├── Cargo.toml │ │ │ │ ├── hello_macro_derive/ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src/ │ │ │ │ │ └── lib.rs │ │ │ │ └── src/ │ │ │ │ ├── lib.rs │ │ │ │ └── main.rs │ │ │ └── pancakes/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── no-listing-22-iterator-on-counter/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ └── output-only-01-missing-unsafe/ │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src/ │ │ └── main.rs │ └── ch21-web-server/ │ ├── listing-21-01/ │ │ ├── Cargo.toml │ │ └── src/ │ │ └── main.rs │ ├── listing-21-02/ │ │ ├── Cargo.toml │ │ └── src/ │ │ └── main.rs │ ├── listing-21-03/ │ │ ├── Cargo.toml │ │ └── src/ │ │ └── main.rs │ ├── listing-21-05/ │ │ ├── Cargo.toml │ │ ├── hello.html │ │ └── src/ │ │ └── main.rs │ ├── listing-21-06/ │ │ ├── Cargo.toml │ │ ├── hello.html │ │ └── src/ │ │ └── main.rs │ ├── listing-21-07/ │ │ ├── 404.html │ │ ├── Cargo.toml │ │ ├── hello.html │ │ └── src/ │ │ └── main.rs │ ├── listing-21-09/ │ │ ├── 404.html │ │ ├── Cargo.toml │ │ ├── hello.html │ │ └── src/ │ │ └── main.rs │ ├── listing-21-10/ │ │ ├── 404.html │ │ ├── Cargo.toml │ │ ├── hello.html │ │ └── src/ │ │ └── main.rs │ ├── listing-21-11/ │ │ ├── 404.html │ │ ├── Cargo.toml │ │ ├── hello.html │ │ └── src/ │ │ └── main.rs │ ├── listing-21-12/ │ │ ├── 404.html │ │ ├── Cargo.toml │ │ ├── hello.html │ │ ├── output.txt │ │ └── src/ │ │ └── main.rs │ ├── listing-21-13/ │ │ ├── 404.html │ │ ├── Cargo.toml │ │ ├── hello.html │ │ └── src/ │ │ ├── lib.rs │ │ └── main.rs │ ├── listing-21-14/ │ │ ├── 404.html │ │ ├── Cargo.toml │ │ ├── hello.html │ │ └── src/ │ │ ├── lib.rs │ │ └── main.rs │ ├── listing-21-15/ │ │ ├── 404.html │ │ ├── Cargo.toml │ │ ├── hello.html │ │ └── src/ │ │ ├── lib.rs │ │ └── main.rs │ ├── listing-21-16/ │ │ ├── 404.html │ │ ├── Cargo.toml │ │ ├── hello.html │ │ └── src/ │ │ ├── lib.rs │ │ └── main.rs │ ├── listing-21-17/ │ │ ├── 404.html │ │ ├── Cargo.toml │ │ ├── hello.html │ │ ├── output.txt │ │ └── src/ │ │ ├── lib.rs │ │ └── main.rs │ ├── listing-21-18/ │ │ ├── 404.html │ │ ├── Cargo.toml │ │ ├── hello.html │ │ └── src/ │ │ ├── lib.rs │ │ └── main.rs │ ├── listing-21-19/ │ │ ├── 404.html │ │ ├── Cargo.toml │ │ ├── hello.html │ │ └── src/ │ │ ├── lib.rs │ │ └── main.rs │ ├── listing-21-20/ │ │ ├── 404.html │ │ ├── Cargo.toml │ │ ├── hello.html │ │ └── src/ │ │ ├── lib.rs │ │ └── main.rs │ ├── listing-21-21/ │ │ ├── 404.html │ │ ├── Cargo.toml │ │ ├── hello.html │ │ └── src/ │ │ ├── lib.rs │ │ └── main.rs │ ├── listing-21-22/ │ │ ├── 404.html │ │ ├── Cargo.toml │ │ ├── hello.html │ │ ├── output.txt │ │ └── src/ │ │ ├── lib.rs │ │ └── main.rs │ ├── listing-21-23/ │ │ ├── 404.html │ │ ├── Cargo.toml │ │ ├── hello.html │ │ └── src/ │ │ ├── lib.rs │ │ └── main.rs │ ├── listing-21-24/ │ │ ├── 404.html │ │ ├── Cargo.toml │ │ ├── hello.html │ │ └── src/ │ │ ├── lib.rs │ │ └── main.rs │ ├── listing-21-25/ │ │ ├── 404.html │ │ ├── Cargo.toml │ │ ├── hello.html │ │ └── src/ │ │ ├── lib.rs │ │ └── main.rs │ ├── no-listing-01-define-threadpool-struct/ │ │ ├── 404.html │ │ ├── Cargo.toml │ │ ├── hello.html │ │ ├── output.txt │ │ └── src/ │ │ ├── lib.rs │ │ └── main.rs │ ├── no-listing-02-impl-threadpool-new/ │ │ ├── 404.html │ │ ├── Cargo.toml │ │ ├── hello.html │ │ ├── output.txt │ │ └── src/ │ │ ├── lib.rs │ │ └── main.rs │ ├── no-listing-03-define-execute/ │ │ ├── 404.html │ │ ├── Cargo.toml │ │ ├── hello.html │ │ ├── output.txt │ │ └── src/ │ │ ├── lib.rs │ │ └── main.rs │ ├── no-listing-04-update-drop-definition/ │ │ ├── 404.html │ │ ├── Cargo.toml │ │ ├── hello.html │ │ ├── output.txt │ │ └── src/ │ │ ├── lib.rs │ │ └── main.rs │ ├── no-listing-05-fix-worker-new/ │ │ ├── 404.html │ │ ├── Cargo.toml │ │ ├── hello.html │ │ └── src/ │ │ ├── lib.rs │ │ └── main.rs │ ├── no-listing-06-fix-threadpool-drop/ │ │ ├── 404.html │ │ ├── Cargo.toml │ │ ├── hello.html │ │ └── src/ │ │ ├── lib.rs │ │ └── main.rs │ └── no-listing-07-final-code/ │ ├── 404.html │ ├── Cargo.toml │ ├── hello.html │ └── src/ │ ├── lib.rs │ └── main.rs ├── nostarch/ │ ├── appendix.md │ ├── appendix_a.md │ ├── appendix_b.md │ ├── appendix_c.md │ ├── appendix_d.md │ ├── appendix_e.md │ ├── bio.md │ ├── book.toml │ ├── chapter00.md │ ├── chapter01.md │ ├── chapter02.md │ ├── chapter03.md │ ├── chapter04.md │ ├── chapter05.md │ ├── chapter06.md │ ├── chapter07.md │ ├── chapter08.md │ ├── chapter09.md │ ├── chapter10.md │ ├── chapter11.md │ ├── chapter12.md │ ├── chapter13.md │ ├── chapter14.md │ ├── chapter15.md │ ├── chapter16.md │ ├── chapter17.md │ ├── chapter18.md │ ├── chapter19.md │ ├── chapter20.md │ ├── chapter21.md │ ├── docx/ │ │ ├── appendix_a.docx │ │ ├── appendix_b.docx │ │ ├── appendix_c.docx │ │ ├── appendix_d.docx │ │ ├── appendix_e.docx │ │ ├── backports/ │ │ │ └── Index.docx │ │ ├── chapter01.docx │ │ ├── chapter02.docx │ │ ├── chapter03.docx │ │ ├── chapter04.docx │ │ ├── chapter05.docx │ │ ├── chapter06.docx │ │ ├── chapter07.docx │ │ ├── chapter08.docx │ │ ├── chapter09.docx │ │ ├── chapter10.docx │ │ ├── chapter11.docx │ │ ├── chapter12.docx │ │ ├── chapter13.docx │ │ ├── chapter14.docx │ │ ├── chapter15.docx │ │ ├── chapter16.docx │ │ ├── chapter17.docx │ │ ├── chapter18.docx │ │ ├── chapter19.docx │ │ ├── chapter20.docx │ │ ├── chapter21.docx │ │ └── frontmatter.docx │ ├── foreword.md │ ├── frontmatter.md │ ├── introduction.md │ └── preface.md ├── packages/ │ ├── mdbook-trpl/ │ │ ├── Cargo.toml │ │ ├── README.md │ │ ├── src/ │ │ │ ├── bin/ │ │ │ │ ├── README - mdbook-trpl-note.md │ │ │ │ ├── figure.rs │ │ │ │ ├── heading.rs │ │ │ │ ├── listing.rs │ │ │ │ └── note.rs │ │ │ ├── config/ │ │ │ │ ├── mod.rs │ │ │ │ └── tests.rs │ │ │ ├── figure/ │ │ │ │ ├── mod.rs │ │ │ │ └── tests.rs │ │ │ ├── heading/ │ │ │ │ ├── mod.rs │ │ │ │ └── tests.rs │ │ │ ├── lib.rs │ │ │ ├── listing/ │ │ │ │ ├── mod.rs │ │ │ │ └── tests.rs │ │ │ └── note/ │ │ │ ├── mod.rs │ │ │ └── tests.rs │ │ └── tests/ │ │ └── integration/ │ │ └── main.rs │ ├── tools/ │ │ ├── Cargo.toml │ │ └── src/ │ │ └── bin/ │ │ ├── cleanup_blockquotes.rs │ │ ├── concat_chapters.rs │ │ ├── convert_quotes.rs │ │ ├── lfp.rs │ │ ├── link2print.rs │ │ ├── release_listings.rs │ │ ├── remove_hidden_lines.rs │ │ ├── remove_links.rs │ │ └── remove_markup.rs │ └── trpl/ │ ├── CHANGELOG.md │ ├── CONTRIBUTING.md │ ├── Cargo.toml │ ├── LICENSE-APACHE │ ├── LICENSE-MIT │ ├── README.md │ ├── src/ │ │ └── lib.rs │ └── tests/ │ └── integration/ │ ├── main.rs │ └── to-read.txt ├── redirects/ │ ├── README.md │ ├── SUMMARY.md │ ├── associated-types.md │ ├── attributes.md │ ├── bibliography.md │ ├── borrow-and-asref.md │ ├── casting-between-types.md │ ├── choosing-your-guarantees.md │ ├── closures.md │ ├── comments.md │ ├── compiler-plugins.md │ ├── concurrency.md │ ├── conditional-compilation.md │ ├── const-and-static.md │ ├── crates-and-modules.md │ ├── deref-coercions.md │ ├── documentation.md │ ├── drop.md │ ├── effective-rust.md │ ├── enums.md │ ├── error-handling.md │ ├── ffi.md │ ├── functions.md │ ├── generics.md │ ├── getting-started.md │ ├── glossary.md │ ├── guessing-game.md │ ├── if-let.md │ ├── if.md │ ├── iterators.md │ ├── lifetimes.md │ ├── loops.md │ ├── macros.md │ ├── match.md │ ├── method-syntax.md │ ├── mutability.md │ ├── operators-and-overloading.md │ ├── ownership.md │ ├── patterns.md │ ├── primitive-types.md │ ├── procedural-macros.md │ ├── raw-pointers.md │ ├── references-and-borrowing.md │ ├── release-channels.md │ ├── strings.md │ ├── structs.md │ ├── syntax-and-semantics.md │ ├── syntax-index.md │ ├── testing.md │ ├── the-stack-and-the-heap.md │ ├── trait-objects.md │ ├── traits.md │ ├── type-aliases.md │ ├── ufcs.md │ ├── unsafe.md │ ├── unsized-types.md │ ├── using-rust-without-the-standard-library.md │ ├── variable-bindings.md │ └── vectors.md ├── rust-toolchain ├── rustfmt.toml ├── second-edition/ │ ├── book.toml │ ├── dot/ │ │ ├── trpl04-01.dot │ │ ├── trpl04-02.dot │ │ ├── trpl04-03.dot │ │ ├── trpl04-04.dot │ │ ├── trpl04-05.dot │ │ ├── trpl04-06.dot │ │ ├── trpl15-01.dot │ │ ├── trpl15-02.dot │ │ └── trpl15-03.dot │ └── src/ │ ├── SUMMARY.md │ ├── appendix-00.md │ ├── appendix-01-keywords.md │ ├── appendix-02-operators.md │ ├── appendix-03-derivable-traits.md │ ├── appendix-04-macros.md │ ├── appendix-05-translation.md │ ├── appendix-06-newest-features.md │ ├── appendix-07-nightly-rust.md │ ├── ch00-00-introduction.md │ ├── ch01-00-getting-started.md │ ├── ch01-01-installation.md │ ├── ch01-02-hello-world.md │ ├── ch01-03-hello-cargo.md │ ├── ch02-00-guessing-game-tutorial.md │ ├── ch03-00-common-programming-concepts.md │ ├── ch03-01-variables-and-mutability.md │ ├── ch03-02-data-types.md │ ├── ch03-03-how-functions-work.md │ ├── ch03-04-comments.md │ ├── ch03-05-control-flow.md │ ├── ch04-00-understanding-ownership.md │ ├── ch04-01-what-is-ownership.md │ ├── ch04-02-references-and-borrowing.md │ ├── ch04-03-slices.md │ ├── ch05-00-structs.md │ ├── ch05-01-defining-structs.md │ ├── ch05-02-example-structs.md │ ├── ch05-03-method-syntax.md │ ├── ch06-00-enums.md │ ├── ch06-01-defining-an-enum.md │ ├── ch06-02-match.md │ ├── ch06-03-if-let.md │ ├── ch07-00-modules.md │ ├── ch07-01-mod-and-the-filesystem.md │ ├── ch07-02-controlling-visibility-with-pub.md │ ├── ch07-03-importing-names-with-use.md │ ├── ch08-00-common-collections.md │ ├── ch08-01-vectors.md │ ├── ch08-02-strings.md │ ├── ch08-03-hash-maps.md │ ├── ch09-00-error-handling.md │ ├── ch09-01-unrecoverable-errors-with-panic.md │ ├── ch09-02-recoverable-errors-with-result.md │ ├── ch09-03-to-panic-or-not-to-panic.md │ ├── ch10-00-generics.md │ ├── ch10-01-syntax.md │ ├── ch10-02-traits.md │ ├── ch10-03-lifetime-syntax.md │ ├── ch11-00-testing.md │ ├── ch11-01-writing-tests.md │ ├── ch11-02-running-tests.md │ ├── ch11-03-test-organization.md │ ├── ch12-00-an-io-project.md │ ├── ch12-01-accepting-command-line-arguments.md │ ├── ch12-02-reading-a-file.md │ ├── ch12-03-improving-error-handling-and-modularity.md │ ├── ch12-04-testing-the-librarys-functionality.md │ ├── ch12-05-working-with-environment-variables.md │ ├── ch12-06-writing-to-stderr-instead-of-stdout.md │ ├── ch13-00-functional-features.md │ ├── ch13-01-closures.md │ ├── ch13-02-iterators.md │ ├── ch13-03-improving-our-io-project.md │ ├── ch13-04-performance.md │ ├── ch14-00-more-about-cargo.md │ ├── ch14-01-release-profiles.md │ ├── ch14-02-publishing-to-crates-io.md │ ├── ch14-03-cargo-workspaces.md │ ├── ch14-04-installing-binaries.md │ ├── ch14-05-extending-cargo.md │ ├── ch15-00-smart-pointers.md │ ├── ch15-01-box.md │ ├── ch15-02-deref.md │ ├── ch15-03-drop.md │ ├── ch15-04-rc.md │ ├── ch15-05-interior-mutability.md │ ├── ch15-06-reference-cycles.md │ ├── ch16-00-concurrency.md │ ├── ch16-01-threads.md │ ├── ch16-02-message-passing.md │ ├── ch16-03-shared-state.md │ ├── ch16-04-extensible-concurrency-sync-and-send.md │ ├── ch17-00-oop.md │ ├── ch17-01-what-is-oo.md │ ├── ch17-02-trait-objects.md │ ├── ch17-03-oo-design-patterns.md │ ├── ch18-00-patterns.md │ ├── ch18-01-all-the-places-for-patterns.md │ ├── ch18-02-refutability.md │ ├── ch18-03-pattern-syntax.md │ ├── ch19-00-advanced-features.md │ ├── ch19-01-unsafe-rust.md │ ├── ch19-02-advanced-lifetimes.md │ ├── ch19-03-advanced-traits.md │ ├── ch19-04-advanced-types.md │ ├── ch19-05-advanced-functions-and-closures.md │ ├── ch20-00-final-project-a-web-server.md │ ├── ch20-01-single-threaded.md │ ├── ch20-02-multithreaded.md │ ├── ch20-03-graceful-shutdown-and-cleanup.md │ └── foreword.md ├── src/ │ ├── SUMMARY.md │ ├── appendix-00.md │ ├── appendix-01-keywords.md │ ├── appendix-02-operators.md │ ├── appendix-03-derivable-traits.md │ ├── appendix-04-useful-development-tools.md │ ├── appendix-05-editions.md │ ├── appendix-06-translation.md │ ├── appendix-07-nightly-rust.md │ ├── ch00-00-introduction.md │ ├── ch01-00-getting-started.md │ ├── ch01-01-installation.md │ ├── ch01-02-hello-world.md │ ├── ch01-03-hello-cargo.md │ ├── ch02-00-guessing-game-tutorial.md │ ├── ch03-00-common-programming-concepts.md │ ├── ch03-01-variables-and-mutability.md │ ├── ch03-02-data-types.md │ ├── ch03-03-how-functions-work.md │ ├── ch03-04-comments.md │ ├── ch03-05-control-flow.md │ ├── ch04-00-understanding-ownership.md │ ├── ch04-01-what-is-ownership.md │ ├── ch04-02-references-and-borrowing.md │ ├── ch04-03-slices.md │ ├── ch05-00-structs.md │ ├── ch05-01-defining-structs.md │ ├── ch05-02-example-structs.md │ ├── ch05-03-method-syntax.md │ ├── ch06-00-enums.md │ ├── ch06-01-defining-an-enum.md │ ├── ch06-02-match.md │ ├── ch06-03-if-let.md │ ├── ch07-00-managing-growing-projects-with-packages-crates-and-modules.md │ ├── ch07-01-packages-and-crates.md │ ├── ch07-02-defining-modules-to-control-scope-and-privacy.md │ ├── ch07-03-paths-for-referring-to-an-item-in-the-module-tree.md │ ├── ch07-04-bringing-paths-into-scope-with-the-use-keyword.md │ ├── ch07-05-separating-modules-into-different-files.md │ ├── ch08-00-common-collections.md │ ├── ch08-01-vectors.md │ ├── ch08-02-strings.md │ ├── ch08-03-hash-maps.md │ ├── ch09-00-error-handling.md │ ├── ch09-01-unrecoverable-errors-with-panic.md │ ├── ch09-02-recoverable-errors-with-result.md │ ├── ch09-03-to-panic-or-not-to-panic.md │ ├── ch10-00-generics.md │ ├── ch10-01-syntax.md │ ├── ch10-02-traits.md │ ├── ch10-03-lifetime-syntax.md │ ├── ch11-00-testing.md │ ├── ch11-01-writing-tests.md │ ├── ch11-02-running-tests.md │ ├── ch11-03-test-organization.md │ ├── ch12-00-an-io-project.md │ ├── ch12-01-accepting-command-line-arguments.md │ ├── ch12-02-reading-a-file.md │ ├── ch12-03-improving-error-handling-and-modularity.md │ ├── ch12-04-testing-the-librarys-functionality.md │ ├── ch12-05-working-with-environment-variables.md │ ├── ch12-06-writing-to-stderr-instead-of-stdout.md │ ├── ch13-00-functional-features.md │ ├── ch13-01-closures.md │ ├── ch13-02-iterators.md │ ├── ch13-03-improving-our-io-project.md │ ├── ch13-04-performance.md │ ├── ch14-00-more-about-cargo.md │ ├── ch14-01-release-profiles.md │ ├── ch14-02-publishing-to-crates-io.md │ ├── ch14-03-cargo-workspaces.md │ ├── ch14-04-installing-binaries.md │ ├── ch14-05-extending-cargo.md │ ├── ch15-00-smart-pointers.md │ ├── ch15-01-box.md │ ├── ch15-02-deref.md │ ├── ch15-03-drop.md │ ├── ch15-04-rc.md │ ├── ch15-05-interior-mutability.md │ ├── ch15-06-reference-cycles.md │ ├── ch16-00-concurrency.md │ ├── ch16-01-threads.md │ ├── ch16-02-message-passing.md │ ├── ch16-03-shared-state.md │ ├── ch16-04-extensible-concurrency-sync-and-send.md │ ├── ch17-00-async-await.md │ ├── ch17-01-futures-and-syntax.md │ ├── ch17-02-concurrency-with-async.md │ ├── ch17-03-more-futures.md │ ├── ch17-04-streams.md │ ├── ch17-05-traits-for-async.md │ ├── ch17-06-futures-tasks-threads.md │ ├── ch18-00-oop.md │ ├── ch18-01-what-is-oo.md │ ├── ch18-02-trait-objects.md │ ├── ch18-03-oo-design-patterns.md │ ├── ch19-00-patterns.md │ ├── ch19-01-all-the-places-for-patterns.md │ ├── ch19-02-refutability.md │ ├── ch19-03-pattern-syntax.md │ ├── ch20-00-advanced-features.md │ ├── ch20-01-unsafe-rust.md │ ├── ch20-02-advanced-traits.md │ ├── ch20-03-advanced-types.md │ ├── ch20-04-advanced-functions-and-closures.md │ ├── ch20-05-macros.md │ ├── ch21-00-final-project-a-web-server.md │ ├── ch21-01-single-threaded.md │ ├── ch21-02-multithreaded.md │ ├── ch21-03-graceful-shutdown-and-cleanup.md │ ├── foreword.md │ └── title-page.md ├── style-guide.md ├── theme/ │ ├── 2018-edition.css │ ├── listing.css │ └── semantic-notes.css └── tools/ ├── convert-quotes.sh ├── doc-to-md.sh ├── docx-to-md.xsl ├── generate-preview.sh ├── megadiff.sh ├── nostarch.sh ├── preview-robots.txt ├── update-editions.sh └── update-rustc.sh