├── .cargo └── config ├── .gitattributes ├── .github ├── ISSUE_TEMPLATE │ ├── feature_request.md │ └── 章節審核.md └── workflows │ └── main.yml ├── .gitignore ├── CONTRIBUTING.md ├── COPYRIGHT ├── Cargo.lock ├── Cargo.toml ├── LICENSE-APACHE ├── LICENSE-MIT ├── README.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 ├── trpl15-01.dot ├── trpl15-02.dot ├── trpl15-03.dot └── trpl15-04.dot ├── ferris.css ├── ferris.js ├── listings ├── ch02-guessing-game-tutorial │ ├── listing-02-01 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-02-02 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-02-03 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-02-04 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-02-05 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-02-06 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-01-cargo-new │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── no-listing-02-without-expect │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── no-listing-03-convert-string-to-number │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-04-looping │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ └── no-listing-05-quitting │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ └── main.rs ├── ch03-common-programming-concepts │ ├── listing-03-01 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-03-02 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-03-03 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-03-04 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-03-05 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-01-variables-are-immutable │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── no-listing-02-adding-mut │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── no-listing-03-shadowing │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── no-listing-04-shadowing-can-change-types │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-05-mut-cant-change-types │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── no-listing-06-floating-point │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-07-numeric-operations │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-08-boolean │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-09-char │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-10-tuples │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-11-destructuring-tuples │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-12-tuple-indexing │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-13-arrays │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-14-array-indexing │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-15-invalid-array-access │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-16-functions │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── no-listing-17-functions-with-parameters │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── no-listing-18-functions-with-multiple-parameters │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── no-listing-19-statements-vs-expressions │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ ├── rustfmt-ignore │ │ └── src │ │ │ └── main.rs │ ├── no-listing-20-blocks-are-expressions │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-21-function-return-values │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── no-listing-22-function-parameter-and-return │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-23-statements-dont-return-values │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── no-listing-24-comments-end-of-line │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-25-comments-above-line │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-26-if-true │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── no-listing-27-if-false │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── no-listing-28-if-condition-must-be-bool │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── no-listing-29-if-not-equal-0 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-30-else-if │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── no-listing-31-arms-must-return-same-type │ │ ├── Cargo.lock │ │ ├── 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.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-33-return-value-from-loop │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-34-for-range │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ └── output-only-01-no-type-annotations │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ └── main.rs ├── ch04-understanding-ownership │ ├── listing-04-01 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── rustfmt-ignore │ │ └── src │ │ │ └── main.rs │ ├── listing-04-02 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-04-03 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── rustfmt-ignore │ │ └── src │ │ │ └── main.rs │ ├── listing-04-04 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── rustfmt-ignore │ │ └── src │ │ │ └── main.rs │ ├── listing-04-05 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-04-06 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-04-07 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-04-08 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-04-09 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-01-can-mutate-string │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-02-string-scope │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── rustfmt-ignore │ │ └── src │ │ │ └── main.rs │ ├── no-listing-03-string-move │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-04-cant-use-after-move │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── no-listing-05-clone │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-06-copy │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-07-reference │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-08-reference-with-annotations │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── rustfmt-ignore │ │ └── src │ │ │ └── main.rs │ ├── no-listing-09-fixes-listing-04-06 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-10-multiple-mut-not-allowed │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── no-listing-11-muts-in-separate-scopes │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-12-immutable-and-mutable-not-allowed │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── no-listing-13-reference-scope-ends │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-14-dangling-reference │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── no-listing-15-dangling-reference-annotated │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── rustfmt-ignore │ │ └── src │ │ │ └── main.rs │ ├── no-listing-16-no-dangle │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-17-slice │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-18-first-word-slice │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ └── no-listing-19-slice-error │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ └── main.rs ├── ch05-using-structs-to-structure-related-data │ ├── listing-05-01 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-05-02 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-05-03 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-05-04 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-05-05 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-05-06 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-05-07 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-05-08 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-05-09 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-05-10 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-05-11 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-05-12 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-05-13 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-05-14 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-05-15 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-05-16 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-01-tuple-structs │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-02-reference-in-struct │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── no-listing-03-associated-functions │ │ ├── Cargo.lock │ │ ├── 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.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── output-only-01-debug │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ └── output-only-02-pretty-debug │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ └── main.rs ├── ch06-enums-and-pattern-matching │ ├── listing-06-01 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-06-02 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-06-03 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-06-04 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-06-05 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-06-06 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-01-defining-enums │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-02-enum-with-data │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-03-variants-with-different-data │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-04-structs-similar-to-message-enum │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-05-methods-on-enums │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-06-option-examples │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-07-cant-use-option-directly │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── no-listing-08-match-arm-multiple-lines │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-09-variable-in-pattern │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-10-non-exhaustive-match │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── no-listing-12-if-let │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-13-count-and-announce-match │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-14-count-and-announce-if-let-else │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-15-binding-catchall │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-16-underscore-catchall │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ └── no-listing-17-underscore-unit │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ └── main.rs ├── ch07-managing-growing-projects │ ├── listing-07-01 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── listing-07-03 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── lib.rs │ ├── listing-07-05 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── lib.rs │ ├── listing-07-07 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── listing-07-08 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── listing-07-09 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── listing-07-10 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── listing-07-11 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── listing-07-12 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── lib.rs │ ├── listing-07-13 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── listing-07-14 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-07-15 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── listing-07-16 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── listing-07-17 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── listing-07-18 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-07-19 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── listing-07-20 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── listing-07-21-and-22 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ ├── front_of_house.rs │ │ │ └── lib.rs │ ├── no-listing-01-use-std-unnested │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-02-extracting-hosting │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ ├── front_of_house.rs │ │ │ ├── front_of_house │ │ │ └── hosting.rs │ │ │ └── lib.rs │ └── quick-reference-example │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ ├── garden.rs │ │ ├── garden │ │ └── vegetables.rs │ │ └── main.rs ├── ch08-common-collections │ ├── listing-08-01 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-08-02 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-08-03 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-08-04 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-08-05 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-08-06 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-08-07 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-08-08 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-08-09 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-08-10 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-08-11 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-08-12 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-08-13 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-08-14 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-08-15 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-08-16 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-08-17 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-08-18 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-08-19 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-08-20 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-08-21 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-08-22 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-08-23 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-08-24 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-08-25 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-01-concat-multiple-strings │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-02-format │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-03-iterate-over-hashmap │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ └── output-only-01-not-char-boundary │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ └── main.rs ├── ch09-error-handling │ ├── listing-09-01 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-09-03 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-09-04 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-09-05 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-09-06 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-09-07 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-09-08 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-09-09 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-09-10 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-09-11 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-09-12 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-09-13 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-01-panic │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── no-listing-04-unwrap │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-05-expect │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-08-unwrap-that-cant-fail │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ └── no-listing-09-guess-out-of-range │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ └── main.rs ├── ch10-generic-types-traits-and-lifetimes │ ├── listing-10-01 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-10-02 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-10-03 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-10-04 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-10-05 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-10-06 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-10-07 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-10-08 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-10-09 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-10-10 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-10-11 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-10-12 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── listing-10-13 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── listing-10-14 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── listing-10-15 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── listing-10-16 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-10-17 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── rustfmt-ignore │ │ └── src │ │ │ └── main.rs │ ├── listing-10-18 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── rustfmt-ignore │ │ └── src │ │ │ └── main.rs │ ├── listing-10-19 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-10-20 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-10-21 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-10-22 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-10-23 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-10-24 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-10-25 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-01-calling-trait-method │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ ├── lib.rs │ │ │ └── main.rs │ ├── no-listing-02-calling-default-impl │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ ├── lib.rs │ │ │ └── main.rs │ ├── no-listing-03-default-impl-calls-other-methods │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ ├── lib.rs │ │ │ └── main.rs │ ├── no-listing-04-traits-as-parameters │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── no-listing-05-returning-impl-trait │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── no-listing-06-impl-trait-returns-one-type │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── no-listing-07-where-clause │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── no-listing-08-only-one-reference-with-lifetime │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-09-unrelated-lifetime │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── no-listing-10-lifetimes-on-methods │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ └── no-listing-11-generics-traits-and-lifetimes │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ └── main.rs ├── ch11-writing-automated-tests │ ├── listing-11-01 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── lib.rs │ ├── listing-11-03 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── lib.rs │ ├── listing-11-05 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── listing-11-06 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── lib.rs │ ├── listing-11-07 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── lib.rs │ ├── listing-11-08 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── lib.rs │ ├── listing-11-09 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── listing-11-10 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── lib.rs │ ├── listing-11-11 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── lib.rs │ ├── listing-11-12 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── listing-11-13 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ ├── src │ │ │ └── lib.rs │ │ └── tests │ │ │ └── integration_test.rs │ ├── no-listing-01-changing-test-name │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── lib.rs │ ├── no-listing-02-adding-another-rectangle-test │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── lib.rs │ ├── no-listing-03-introducing-a-bug │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── lib.rs │ ├── no-listing-04-bug-in-add-two │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── lib.rs │ ├── no-listing-05-greeter │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── no-listing-06-greeter-with-bug │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── lib.rs │ ├── no-listing-07-custom-failure-message │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── lib.rs │ ├── no-listing-08-guess-with-bug │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── lib.rs │ ├── no-listing-09-guess-with-panic-msg-bug │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── lib.rs │ ├── no-listing-10-result-in-tests │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── no-listing-11-ignore-a-test │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── lib.rs │ ├── no-listing-12-shared-test-code-problem │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ ├── src │ │ │ └── lib.rs │ │ └── tests │ │ │ ├── common.rs │ │ │ └── integration_test.rs │ ├── no-listing-13-fix-shared-test-code-problem │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── src │ │ │ └── lib.rs │ │ └── tests │ │ │ ├── common │ │ │ └── mod.rs │ │ │ └── integration_test.rs │ ├── output-only-01-show-output │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── lib.rs │ ├── output-only-02-single-test │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── lib.rs │ ├── output-only-03-multiple-tests │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── lib.rs │ ├── output-only-04-running-ignored │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── lib.rs │ └── output-only-05-single-integration │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ ├── src │ │ └── lib.rs │ │ └── tests │ │ └── integration_test.rs ├── ch12-an-io-project │ ├── listing-12-01 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-12-02 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-12-03 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── poem.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-12-04 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ ├── poem.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-12-05 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── poem.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-12-06 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── poem.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-12-07 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ ├── poem.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-12-08 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ ├── poem.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-12-09 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── poem.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-12-10 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ ├── poem.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-12-11 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── poem.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-12-12 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ ├── poem.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-12-13 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── poem.txt │ │ └── src │ │ │ ├── lib.rs │ │ │ └── main.rs │ ├── listing-12-14 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── poem.txt │ │ └── src │ │ │ ├── lib.rs │ │ │ └── main.rs │ ├── listing-12-15 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── poem.txt │ │ └── src │ │ │ ├── lib.rs │ │ │ └── main.rs │ ├── listing-12-16 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ ├── poem.txt │ │ └── src │ │ │ ├── lib.rs │ │ │ └── main.rs │ ├── listing-12-17 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── poem.txt │ │ └── src │ │ │ ├── lib.rs │ │ │ └── main.rs │ ├── listing-12-18 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── poem.txt │ │ └── src │ │ │ ├── lib.rs │ │ │ └── main.rs │ ├── listing-12-19 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ ├── poem.txt │ │ └── src │ │ │ ├── lib.rs │ │ │ └── main.rs │ ├── listing-12-20 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── poem.txt │ │ └── src │ │ │ ├── lib.rs │ │ │ └── main.rs │ ├── listing-12-21 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ ├── poem.txt │ │ └── src │ │ │ ├── lib.rs │ │ │ └── main.rs │ ├── listing-12-22 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── poem.txt │ │ └── src │ │ │ ├── lib.rs │ │ │ └── main.rs │ ├── listing-12-23 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ ├── poem.txt │ │ └── src │ │ │ ├── lib.rs │ │ │ └── main.rs │ ├── listing-12-24 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── poem.txt │ │ └── src │ │ │ ├── lib.rs │ │ │ └── main.rs │ ├── no-listing-01-handling-errors-in-main │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── poem.txt │ │ └── src │ │ │ └── main.rs │ ├── no-listing-02-using-search-in-run │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ ├── poem.txt │ │ └── src │ │ │ ├── lib.rs │ │ │ └── main.rs │ ├── output-only-01-with-args │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── output-only-02-missing-lifetimes │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ ├── poem.txt │ │ └── src │ │ │ ├── lib.rs │ │ │ └── main.rs │ ├── output-only-03-multiple-matches │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ ├── poem.txt │ │ └── src │ │ │ ├── lib.rs │ │ │ └── main.rs │ └── output-only-04-no-matches │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ ├── poem.txt │ │ └── src │ │ ├── lib.rs │ │ └── main.rs ├── ch13-functional-features │ ├── listing-12-23-reproduced │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── poem.txt │ │ └── src │ │ │ ├── lib.rs │ │ │ └── main.rs │ ├── listing-12-24-reproduced │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── poem.txt │ │ └── src │ │ │ ├── lib.rs │ │ │ └── main.rs │ ├── listing-13-01 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-13-02 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-13-03 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-13-04 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-13-05 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-13-06 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-13-07 │ │ ├── .rustfmt.toml │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-13-08 │ │ ├── .rustfmt.toml │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-13-09 │ │ ├── .rustfmt.toml │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-13-10 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-13-11 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-13-12 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── listing-13-13 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── listing-13-14 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-13-15 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-13-16 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── listing-13-18 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── poem.txt │ │ └── src │ │ │ ├── lib.rs │ │ │ └── main.rs │ ├── listing-13-19 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── poem.txt │ │ └── src │ │ │ ├── lib.rs │ │ │ └── main.rs │ ├── listing-13-20 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ ├── lib.rs │ │ │ └── main.rs │ └── listing-13-22 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── poem.txt │ │ └── src │ │ ├── lib.rs │ │ └── main.rs ├── ch14-more-about-cargo │ ├── listing-14-01 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── listing-14-02 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── listing-14-03 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── listing-14-04 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ ├── lib.rs │ │ │ └── main.rs │ ├── listing-14-05 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── listing-14-06 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ ├── lib.rs │ │ │ └── main.rs │ ├── listing-14-07 │ │ └── add │ │ │ ├── Cargo.lock │ │ │ ├── Cargo.toml │ │ │ ├── add_one │ │ │ ├── Cargo.toml │ │ │ └── src │ │ │ │ └── lib.rs │ │ │ └── adder │ │ │ ├── Cargo.toml │ │ │ └── src │ │ │ └── main.rs │ ├── no-listing-01-workspace-with-adder-crate │ │ └── add │ │ │ ├── Cargo.lock │ │ │ ├── Cargo.toml │ │ │ └── adder │ │ │ ├── Cargo.toml │ │ │ └── src │ │ │ └── main.rs │ ├── no-listing-02-workspace-with-two-crates │ │ └── add │ │ │ ├── Cargo.lock │ │ │ ├── Cargo.toml │ │ │ ├── add_one │ │ │ ├── Cargo.toml │ │ │ └── src │ │ │ │ └── lib.rs │ │ │ └── adder │ │ │ ├── Cargo.toml │ │ │ └── src │ │ │ └── main.rs │ ├── no-listing-03-workspace-with-external-dependency │ │ └── add │ │ │ ├── Cargo.lock │ │ │ ├── Cargo.toml │ │ │ ├── add_one │ │ │ ├── Cargo.toml │ │ │ └── src │ │ │ │ └── lib.rs │ │ │ └── adder │ │ │ ├── Cargo.toml │ │ │ └── src │ │ │ └── main.rs │ ├── no-listing-04-workspace-with-tests │ │ └── add │ │ │ ├── Cargo.lock │ │ │ ├── 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.lock │ │ │ ├── Cargo.toml │ │ │ ├── add_one │ │ │ ├── Cargo.toml │ │ │ └── src │ │ │ │ └── lib.rs │ │ │ └── adder │ │ │ ├── Cargo.toml │ │ │ └── src │ │ │ └── main.rs │ └── output-only-03-use-rand │ │ └── add │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── add_one │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ │ └── adder │ │ ├── Cargo.toml │ │ └── src │ │ └── main.rs ├── ch15-smart-pointers │ ├── listing-15-01 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-15-02 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-15-03 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-15-05 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-15-06 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-15-07 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-15-08 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-15-09 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-15-10 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-15-11 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-15-12 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-15-13 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-15-14 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-15-15 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-15-16 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-15-17 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-15-18 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-15-19 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-15-20 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── listing-15-21 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── lib.rs │ ├── listing-15-22 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── listing-15-23 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── lib.rs │ ├── listing-15-24 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-15-25 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-15-26 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-15-27 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-15-28 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-15-29 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-01-cant-borrow-immutable-as-mutable │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ └── output-only-01-comparing-to-reference │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ └── main.rs ├── ch16-fearless-concurrency │ ├── listing-16-01 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-16-02 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-16-03 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-16-04 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-16-05 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-16-06 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-16-07 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-16-08 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-16-09 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-16-10 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-16-11 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-16-12 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-16-13 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-16-14 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-16-15 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-01-join-too-early │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-02-no-loop-to-understand-error │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ └── output-only-01-move-drop │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ └── main.rs ├── ch17-oop │ ├── listing-17-01 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── listing-17-02 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── listing-17-03 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── listing-17-04 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── listing-17-05 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── listing-17-06 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── listing-17-07 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── listing-17-08 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ ├── lib.rs │ │ │ └── main.rs │ ├── listing-17-09 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ ├── lib.rs │ │ │ └── main.rs │ ├── listing-17-10 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ ├── lib.rs │ │ │ └── main.rs │ ├── listing-17-11 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-17-12 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ ├── lib.rs │ │ │ └── main.rs │ ├── listing-17-13 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ ├── lib.rs │ │ │ └── main.rs │ ├── listing-17-14 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ ├── lib.rs │ │ │ └── main.rs │ ├── listing-17-15 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ ├── lib.rs │ │ │ └── main.rs │ ├── listing-17-16 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ ├── lib.rs │ │ │ └── main.rs │ ├── listing-17-17 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ ├── lib.rs │ │ │ └── main.rs │ ├── listing-17-18 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ ├── lib.rs │ │ │ └── main.rs │ ├── listing-17-19 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── listing-17-20 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ └── listing-17-21 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ ├── lib.rs │ │ └── main.rs ├── ch18-patterns-and-matching │ ├── listing-18-01 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-18-02 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-18-03 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-18-04 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-18-05 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-18-06 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-18-07 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-18-08 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-18-09 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-18-10 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-18-11 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-18-12 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-18-13 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-18-14 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-18-15 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-18-16 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-18-17 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-18-18 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-18-19 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-18-20 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-18-21 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-18-22 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-18-23 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-18-24 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-18-25 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ ├── rustfmt-ignore │ │ └── src │ │ │ └── main.rs │ ├── listing-18-26 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-18-27 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-18-28 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-18-29 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-01-literals │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-02-multiple-patterns │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-03-ranges │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-04-ranges-of-char │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ └── no-listing-05-destructuring-structs-and-tuples │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ └── main.rs ├── ch19-advanced-features │ ├── listing-19-01 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-19-02 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-19-03 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-19-04 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-19-05 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-19-06 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-19-07 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-19-08 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-19-09 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-19-10 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-19-11 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-19-12 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── listing-19-13 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── listing-19-14 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-19-15 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── listing-19-16 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-19-17 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-19-18 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-19-19 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-19-20 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-19-21 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── listing-19-22 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-19-23 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-19-24 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-19-25 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-19-27 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-19-28 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── listing-19-30 │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── listing-19-31 │ │ └── hello_macro │ │ │ ├── Cargo.lock │ │ │ ├── Cargo.toml │ │ │ ├── hello_macro_derive │ │ │ ├── Cargo.lock │ │ │ ├── Cargo.toml │ │ │ └── src │ │ │ │ └── lib.rs │ │ │ └── src │ │ │ ├── lib.rs │ │ │ └── main.rs │ ├── listing-19-33 │ │ └── hello_macro │ │ │ ├── Cargo.lock │ │ │ ├── Cargo.toml │ │ │ ├── hello_macro_derive │ │ │ ├── Cargo.lock │ │ │ ├── Cargo.toml │ │ │ └── src │ │ │ │ └── lib.rs │ │ │ └── src │ │ │ ├── lib.rs │ │ │ └── main.rs │ ├── no-listing-01-unsafe-fn │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-02-impl-outlineprint-for-point │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── main.rs │ ├── no-listing-03-impl-display-for-point │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-04-kilometers-alias │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-05-write-trait │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── no-listing-06-result-alias │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── no-listing-07-never-type │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── no-listing-08-match-arms-different-types │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-09-unwrap-definition │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── no-listing-10-loop-returns-never │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-11-cant-create-str │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-12-generic-fn-definition │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── no-listing-13-generic-implicit-sized-bound │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── no-listing-14-generic-maybe-sized │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── no-listing-15-map-closure │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-16-map-function │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-17-map-initializer │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── main.rs │ ├── no-listing-18-returns-closure │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ │ └── lib.rs │ ├── no-listing-19-returns-closure-trait-object │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ ├── no-listing-20-impl-hellomacro-for-pancakes │ │ ├── hello_macro │ │ │ ├── Cargo.lock │ │ │ ├── Cargo.toml │ │ │ └── src │ │ │ │ └── lib.rs │ │ └── pancakes │ │ │ ├── Cargo.lock │ │ │ ├── Cargo.toml │ │ │ └── src │ │ │ └── main.rs │ ├── no-listing-21-pancakes │ │ ├── hello_macro │ │ │ ├── Cargo.lock │ │ │ ├── Cargo.toml │ │ │ ├── hello_macro_derive │ │ │ │ ├── Cargo.lock │ │ │ │ ├── Cargo.toml │ │ │ │ └── src │ │ │ │ │ └── lib.rs │ │ │ └── src │ │ │ │ ├── lib.rs │ │ │ │ └── main.rs │ │ └── pancakes │ │ │ ├── Cargo.lock │ │ │ ├── Cargo.toml │ │ │ └── src │ │ │ └── main.rs │ ├── no-listing-22-iterator-on-counter │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ └── output-only-01-missing-unsafe │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── output.txt │ │ └── src │ │ └── main.rs └── ch20-web-server │ ├── listing-20-01 │ ├── Cargo.lock │ ├── Cargo.toml │ └── src │ │ └── main.rs │ ├── listing-20-02 │ ├── Cargo.lock │ ├── Cargo.toml │ └── src │ │ └── main.rs │ ├── listing-20-03 │ ├── Cargo.lock │ ├── Cargo.toml │ └── src │ │ └── main.rs │ ├── listing-20-05 │ ├── Cargo.lock │ ├── Cargo.toml │ ├── hello.html │ └── src │ │ └── main.rs │ ├── listing-20-06 │ ├── Cargo.lock │ ├── Cargo.toml │ ├── hello.html │ └── src │ │ └── main.rs │ ├── listing-20-07 │ ├── 404.html │ ├── Cargo.lock │ ├── Cargo.toml │ ├── hello.html │ └── src │ │ └── main.rs │ ├── listing-20-09 │ ├── 404.html │ ├── Cargo.lock │ ├── Cargo.toml │ ├── hello.html │ └── src │ │ └── main.rs │ ├── listing-20-10 │ ├── 404.html │ ├── Cargo.lock │ ├── Cargo.toml │ ├── hello.html │ └── src │ │ └── main.rs │ ├── listing-20-11 │ ├── 404.html │ ├── Cargo.lock │ ├── Cargo.toml │ ├── hello.html │ └── src │ │ └── main.rs │ ├── listing-20-12 │ ├── 404.html │ ├── Cargo.lock │ ├── Cargo.toml │ ├── hello.html │ ├── output.txt │ └── src │ │ └── main.rs │ ├── listing-20-13 │ ├── 404.html │ ├── Cargo.lock │ ├── Cargo.toml │ ├── hello.html │ └── src │ │ ├── lib.rs │ │ └── main.rs │ ├── listing-20-14 │ ├── 404.html │ ├── Cargo.lock │ ├── Cargo.toml │ ├── hello.html │ └── src │ │ ├── lib.rs │ │ └── main.rs │ ├── listing-20-15 │ ├── 404.html │ ├── Cargo.lock │ ├── Cargo.toml │ ├── hello.html │ └── src │ │ ├── lib.rs │ │ └── main.rs │ ├── listing-20-16 │ ├── 404.html │ ├── Cargo.lock │ ├── Cargo.toml │ ├── hello.html │ └── src │ │ ├── lib.rs │ │ └── main.rs │ ├── listing-20-17 │ ├── 404.html │ ├── Cargo.lock │ ├── Cargo.toml │ ├── hello.html │ ├── output.txt │ └── src │ │ ├── lib.rs │ │ └── main.rs │ ├── listing-20-18 │ ├── 404.html │ ├── Cargo.lock │ ├── Cargo.toml │ ├── hello.html │ └── src │ │ ├── lib.rs │ │ └── main.rs │ ├── listing-20-19 │ ├── 404.html │ ├── Cargo.lock │ ├── Cargo.toml │ ├── hello.html │ └── src │ │ ├── lib.rs │ │ └── main.rs │ ├── listing-20-20 │ ├── 404.html │ ├── Cargo.lock │ ├── Cargo.toml │ ├── hello.html │ └── src │ │ ├── lib.rs │ │ └── main.rs │ ├── listing-20-21 │ ├── 404.html │ ├── Cargo.lock │ ├── Cargo.toml │ ├── hello.html │ └── src │ │ ├── lib.rs │ │ └── main.rs │ ├── listing-20-22 │ ├── 404.html │ ├── Cargo.lock │ ├── Cargo.toml │ ├── hello.html │ ├── output.txt │ └── src │ │ ├── lib.rs │ │ └── main.rs │ ├── listing-20-23 │ ├── 404.html │ ├── Cargo.lock │ ├── Cargo.toml │ ├── hello.html │ └── src │ │ ├── lib.rs │ │ └── main.rs │ ├── listing-20-24 │ ├── 404.html │ ├── Cargo.lock │ ├── Cargo.toml │ ├── hello.html │ └── src │ │ ├── lib.rs │ │ └── main.rs │ ├── listing-20-25 │ ├── 404.html │ ├── Cargo.lock │ ├── Cargo.toml │ ├── hello.html │ └── src │ │ ├── lib.rs │ │ └── main.rs │ ├── no-listing-01-define-threadpool-struct │ ├── 404.html │ ├── Cargo.lock │ ├── Cargo.toml │ ├── hello.html │ ├── output.txt │ └── src │ │ ├── lib.rs │ │ └── main.rs │ ├── no-listing-02-impl-threadpool-new │ ├── 404.html │ ├── Cargo.lock │ ├── Cargo.toml │ ├── hello.html │ ├── output.txt │ └── src │ │ ├── lib.rs │ │ └── main.rs │ ├── no-listing-03-define-execute │ ├── 404.html │ ├── Cargo.lock │ ├── Cargo.toml │ ├── hello.html │ ├── output.txt │ └── src │ │ ├── lib.rs │ │ └── main.rs │ ├── no-listing-04-update-worker-definition │ ├── 404.html │ ├── Cargo.lock │ ├── Cargo.toml │ ├── hello.html │ ├── output.txt │ └── src │ │ ├── lib.rs │ │ └── main.rs │ ├── no-listing-05-fix-worker-new │ ├── 404.html │ ├── Cargo.lock │ ├── Cargo.toml │ ├── hello.html │ └── src │ │ ├── lib.rs │ │ └── main.rs │ ├── no-listing-06-fix-threadpool-drop │ ├── 404.html │ ├── Cargo.lock │ ├── Cargo.toml │ ├── hello.html │ ├── main.rs │ └── src │ │ └── lib.rs │ └── no-listing-07-final-code │ ├── 404.html │ ├── Cargo.lock │ ├── Cargo.toml │ ├── hello.html │ └── src │ ├── lib.rs │ └── main.rs ├── rust-toolchain ├── rustfmt.toml ├── 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 ├── appendix-08-terminology.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-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-traits.md ├── ch19-03-advanced-types.md ├── ch19-04-advanced-functions-and-closures.md ├── ch19-05-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 ├── img │ ├── ferris │ │ ├── does_not_compile.svg │ │ ├── not_desired_behavior.svg │ │ └── panics.svg │ ├── trpl04-01.svg │ ├── trpl04-02.svg │ ├── trpl04-03.svg │ ├── trpl04-04.svg │ ├── trpl04-05.svg │ ├── trpl04-06.svg │ ├── trpl14-01.png │ ├── trpl14-02.png │ ├── trpl14-03.png │ ├── trpl14-04.png │ ├── trpl15-01.svg │ ├── trpl15-02.svg │ ├── trpl15-03.svg │ ├── trpl15-04.svg │ └── trpl20-01.png └── title-page.md ├── style-guide.md ├── theme └── 2018-edition.css └── tools ├── convert-quotes.sh ├── doc-to-md.sh ├── docx-to-md.xsl ├── megadiff.sh ├── nostarch.sh ├── src └── bin │ ├── concat_chapters.rs │ ├── convert_quotes.rs │ ├── lfp.rs │ ├── link2print.rs │ ├── release_listings.rs │ ├── remove_hidden_lines.rs │ ├── remove_links.rs │ └── remove_markup.rs ├── update-edition.sh └── update-rustc.sh /.cargo/config: -------------------------------------------------------------------------------- 1 | [cargo-new] 2 | name = "Your Name" 3 | email = "you@example.com" 4 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Set the default behavior, in case people don't have core.autocrlf set. 2 | * text=auto eol=lf 3 | *.docx binary 4 | *.odt binary 5 | *.png binary 6 | 7 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | book/ 2 | *~ 3 | .idea 4 | .DS_Store 5 | target 6 | tmp 7 | 8 | -------------------------------------------------------------------------------- /ci/validate.sh: -------------------------------------------------------------------------------- 1 | for file in src/*.md ; do 2 | echo Checking references in $file 3 | cargo run --quiet --bin link2print < $file > /dev/null 4 | done -------------------------------------------------------------------------------- /listings/ch02-guessing-game-tutorial/no-listing-01-cargo-new/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | println!("Hello, world!"); 3 | } 4 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/listing-03-01/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "functions" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/listing-03-01/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | let y = 6; 3 | } 4 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/listing-03-02/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "branches" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/listing-03-02/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | let condition = true; 3 | let number = if condition { 5 } else { 6 }; 4 | 5 | println!("數字結果為:{number}"); 6 | } 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/listing-03-03/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "loops" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/listing-03-04/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "loops" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/listing-03-05/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "loops" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/listing-03-05/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | let a = [10, 20, 30, 40, 50]; 3 | 4 | for element in a { 5 | println!("數值為:{element}"); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-01-variables-are-immutable/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "variables" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-01-variables-are-immutable/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | let x = 5; 3 | println!("x 的數值為:{x}"); 4 | x = 6; 5 | println!("x 的數值為:{x}"); 6 | } 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-02-adding-mut/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "variables" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-02-adding-mut/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | let mut x = 5; 3 | println!("x 的數值為:{x}"); 4 | x = 6; 5 | println!("x 的數值為:{x}"); 6 | } 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-03-shadowing/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "variables" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-04-shadowing-can-change-types/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "variables" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-05-mut-cant-change-types/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "variables" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-06-floating-point/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "floating-point" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-06-floating-point/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | let x = 2.0; // f64 3 | 4 | let y: f32 = 3.0; // f32 5 | } 6 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-07-numeric-operations/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "numeric-operations" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-08-boolean/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "boolean" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-08-boolean/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | let t = true; 3 | 4 | let f: bool = false; // 型別詮釋的方式 5 | } 6 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-09-char/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "char" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-09-char/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | let c = 'z'; 3 | let z: char = 'ℤ'; // 明確標註型別的寫法 4 | let heart_eyed_cat = '😻'; 5 | } 6 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-10-tuples/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "tuples" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-10-tuples/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | let tup: (i32, f64, u8) = (500, 6.4, 1); 3 | } 4 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-11-destructuring-tuples/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "tuples" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-11-destructuring-tuples/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | let tup = (500, 6.4, 1); 3 | 4 | let (x, y, z) = tup; 5 | 6 | println!("y 的數值為:{y}"); 7 | } 8 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-12-tuple-indexing/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "tuples" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-13-arrays/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "arrays" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-13-arrays/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | let a = [1, 2, 3, 4, 5]; 3 | } 4 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-14-array-indexing/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "arrays" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-14-array-indexing/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | let a = [1, 2, 3, 4, 5]; 3 | 4 | let first = a[0]; 5 | let second = a[1]; 6 | } 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-15-invalid-array-access/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "arrays" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-16-functions/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "functions" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-17-functions-with-parameters/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "functions" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-18-functions-with-multiple-parameters/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "functions" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-19-statements-vs-expressions/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "functions" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-19-statements-vs-expressions/rustfmt-ignore: -------------------------------------------------------------------------------- 1 | This listing deliberately doesn't parse so rustfmt fails. 2 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-19-statements-vs-expressions/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | let x = (let y = 6); 3 | } 4 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-20-blocks-are-expressions/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "functions" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-21-function-return-values/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "functions" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-22-function-parameter-and-return/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "functions" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-23-statements-dont-return-values/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "functions" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-24-comments-end-of-line/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "comments" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-24-comments-end-of-line/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | let lucky_number = 7; // 幸運 777! 3 | } 4 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-25-comments-above-line/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "comments" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-25-comments-above-line/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | // 幸運 777! 3 | let lucky_number = 7; 4 | } 5 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-26-if-true/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "branches" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-27-if-false/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "branches" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-28-if-condition-must-be-bool/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "branches" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-28-if-condition-must-be-bool/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | let number = 3; 3 | 4 | if number { 5 | println!("數字為三"); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-29-if-not-equal-0/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "branches" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-29-if-not-equal-0/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | let number = 3; 3 | 4 | if number != 0 { 5 | println!("數字不為零"); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-30-else-if/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "branches" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-31-arms-must-return-same-type/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "branches" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-32-5-loop-labels/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "loops" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-32-loop/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "loops" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-32-loop/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | loop { 3 | println!("再一次!"); 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-33-return-value-from-loop/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "loops" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-34-for-range/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "loops" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/no-listing-34-for-range/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | for number in (1..4).rev() { 3 | println!("{number}!"); 4 | } 5 | println!("升空!!!"); 6 | } 7 | -------------------------------------------------------------------------------- /listings/ch03-common-programming-concepts/output-only-01-no-type-annotations/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | let guess = "42".parse().expect("這不是數字!"); 3 | } 4 | -------------------------------------------------------------------------------- /listings/ch04-understanding-ownership/listing-04-01/Cargo.lock: -------------------------------------------------------------------------------- 1 | [[package]] 2 | name = "ownership" 3 | version = "0.1.0" 4 | 5 | -------------------------------------------------------------------------------- /listings/ch04-understanding-ownership/listing-04-01/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "ownership" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch04-understanding-ownership/listing-04-02/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "ownership" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch04-understanding-ownership/listing-04-02/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | // ANCHOR: here 3 | let x = 5; 4 | let y = x; 5 | // ANCHOR_END: here 6 | } 7 | -------------------------------------------------------------------------------- /listings/ch04-understanding-ownership/listing-04-03/Cargo.lock: -------------------------------------------------------------------------------- 1 | [[package]] 2 | name = "ownership" 3 | version = "0.1.0" 4 | 5 | -------------------------------------------------------------------------------- /listings/ch04-understanding-ownership/listing-04-03/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "ownership" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch04-understanding-ownership/listing-04-04/Cargo.lock: -------------------------------------------------------------------------------- 1 | [[package]] 2 | name = "ownership" 3 | version = "0.1.0" 4 | 5 | -------------------------------------------------------------------------------- /listings/ch04-understanding-ownership/listing-04-04/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "ownership" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch04-understanding-ownership/listing-04-05/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "ownership" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch04-understanding-ownership/listing-04-06/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "ownership" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch04-understanding-ownership/listing-04-07/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "ownership" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch04-understanding-ownership/listing-04-08/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "ownership" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch04-understanding-ownership/listing-04-09/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "ownership" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch04-understanding-ownership/no-listing-01-can-mutate-string/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "ownership" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch04-understanding-ownership/no-listing-02-string-scope/Cargo.lock: -------------------------------------------------------------------------------- 1 | [[package]] 2 | name = "ownership" 3 | version = "0.1.0" 4 | 5 | -------------------------------------------------------------------------------- /listings/ch04-understanding-ownership/no-listing-02-string-scope/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "ownership" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch04-understanding-ownership/no-listing-03-string-move/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "ownership" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch04-understanding-ownership/no-listing-03-string-move/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | // ANCHOR: here 3 | let s1 = String::from("hello"); 4 | let s2 = s1; 5 | // ANCHOR_END: here 6 | } 7 | -------------------------------------------------------------------------------- /listings/ch04-understanding-ownership/no-listing-04-cant-use-after-move/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "ownership" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch04-understanding-ownership/no-listing-05-clone/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "ownership" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch04-understanding-ownership/no-listing-06-copy/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "ownership" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch04-understanding-ownership/no-listing-07-reference/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "ownership" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch04-understanding-ownership/no-listing-08-reference-with-annotations/Cargo.lock: -------------------------------------------------------------------------------- 1 | [[package]] 2 | name = "ownership" 3 | version = "0.1.0" 4 | 5 | -------------------------------------------------------------------------------- /listings/ch04-understanding-ownership/no-listing-08-reference-with-annotations/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "ownership" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch04-understanding-ownership/no-listing-09-fixes-listing-04-06/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "ownership" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch04-understanding-ownership/no-listing-10-multiple-mut-not-allowed/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "ownership" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch04-understanding-ownership/no-listing-11-muts-in-separate-scopes/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "ownership" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch04-understanding-ownership/no-listing-12-immutable-and-mutable-not-allowed/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "ownership" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch04-understanding-ownership/no-listing-13-reference-scope-ends/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "ownership" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch04-understanding-ownership/no-listing-14-dangling-reference/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "ownership" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch04-understanding-ownership/no-listing-15-dangling-reference-annotated/Cargo.lock: -------------------------------------------------------------------------------- 1 | [[package]] 2 | name = "ownership" 3 | version = "0.1.0" 4 | 5 | -------------------------------------------------------------------------------- /listings/ch04-understanding-ownership/no-listing-15-dangling-reference-annotated/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "ownership" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch04-understanding-ownership/no-listing-16-no-dangle/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "ownership" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch04-understanding-ownership/no-listing-17-slice/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "ownership" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch04-understanding-ownership/no-listing-18-first-word-slice/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "ownership" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch04-understanding-ownership/no-listing-19-slice-error/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "ownership" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch05-using-structs-to-structure-related-data/listing-05-01/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "structs" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch05-using-structs-to-structure-related-data/listing-05-02/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "structs" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch05-using-structs-to-structure-related-data/listing-05-03/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "structs" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch05-using-structs-to-structure-related-data/listing-05-04/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "structs" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch05-using-structs-to-structure-related-data/listing-05-05/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "structs" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch05-using-structs-to-structure-related-data/listing-05-06/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "structs" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch05-using-structs-to-structure-related-data/listing-05-07/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "structs" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch05-using-structs-to-structure-related-data/listing-05-08/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "rectangles" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch05-using-structs-to-structure-related-data/listing-05-09/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "rectangles" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch05-using-structs-to-structure-related-data/listing-05-10/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "rectangles" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch05-using-structs-to-structure-related-data/listing-05-11/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "rectangles" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch05-using-structs-to-structure-related-data/listing-05-12/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "rectangles" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch05-using-structs-to-structure-related-data/listing-05-13/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "rectangles" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch05-using-structs-to-structure-related-data/listing-05-14/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "rectangles" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch05-using-structs-to-structure-related-data/listing-05-15/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "rectangles" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch05-using-structs-to-structure-related-data/listing-05-16/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "rectangles" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch05-using-structs-to-structure-related-data/no-listing-01-tuple-structs/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "structs" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch05-using-structs-to-structure-related-data/no-listing-03-associated-functions/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "rectangles" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch05-using-structs-to-structure-related-data/no-listing-04-unit-like-structs/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "structs" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] -------------------------------------------------------------------------------- /listings/ch05-using-structs-to-structure-related-data/no-listing-04-unit-like-structs/src/main.rs: -------------------------------------------------------------------------------- 1 | struct AlwaysEqual; 2 | 3 | fn main() { 4 | let subject = AlwaysEqual; 5 | } -------------------------------------------------------------------------------- /listings/ch05-using-structs-to-structure-related-data/no-listing-05-dbg-macro/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "rectangles" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch05-using-structs-to-structure-related-data/no-listing-06-method-field-interaction/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "rectangles" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] -------------------------------------------------------------------------------- /listings/ch05-using-structs-to-structure-related-data/output-only-01-debug/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "rectangles" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch05-using-structs-to-structure-related-data/output-only-02-pretty-debug/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "rectangles" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch06-enums-and-pattern-matching/listing-06-01/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "enums" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch06-enums-and-pattern-matching/listing-06-02/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "enums" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch06-enums-and-pattern-matching/listing-06-03/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "enums" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch06-enums-and-pattern-matching/listing-06-04/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "enums" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch06-enums-and-pattern-matching/listing-06-05/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "enums" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch06-enums-and-pattern-matching/listing-06-06/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "enums" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch06-enums-and-pattern-matching/no-listing-01-defining-enums/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "enums" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch06-enums-and-pattern-matching/no-listing-02-enum-with-data/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "enums" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch06-enums-and-pattern-matching/no-listing-03-variants-with-different-data/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "enums" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch06-enums-and-pattern-matching/no-listing-04-structs-similar-to-message-enum/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "enums" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch06-enums-and-pattern-matching/no-listing-05-methods-on-enums/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "enums" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch06-enums-and-pattern-matching/no-listing-06-option-examples/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "enums" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch06-enums-and-pattern-matching/no-listing-07-cant-use-option-directly/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "enums" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch06-enums-and-pattern-matching/no-listing-08-match-arm-multiple-lines/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "enums" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch06-enums-and-pattern-matching/no-listing-09-variable-in-pattern/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "enums" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch06-enums-and-pattern-matching/no-listing-10-non-exhaustive-match/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "enums" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch06-enums-and-pattern-matching/no-listing-12-if-let/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "enums" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch06-enums-and-pattern-matching/no-listing-13-count-and-announce-match/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "enums" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch06-enums-and-pattern-matching/no-listing-14-count-and-announce-if-let-else/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "enums" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch06-enums-and-pattern-matching/no-listing-15-binding-catchall/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "enums" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch06-enums-and-pattern-matching/no-listing-16-underscore-catchall/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "enums" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch06-enums-and-pattern-matching/no-listing-17-underscore-unit/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "enums" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch07-managing-growing-projects/listing-07-01/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "restaurant" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch07-managing-growing-projects/listing-07-03/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "restaurant" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch07-managing-growing-projects/listing-07-05/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "restaurant" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch07-managing-growing-projects/listing-07-07/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "restaurant" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch07-managing-growing-projects/listing-07-08/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "restaurant" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch07-managing-growing-projects/listing-07-09/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "restaurant" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch07-managing-growing-projects/listing-07-10/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "restaurant" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch07-managing-growing-projects/listing-07-11/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "restaurant" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch07-managing-growing-projects/listing-07-12/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "restaurant" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch07-managing-growing-projects/listing-07-13/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "restaurant" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch07-managing-growing-projects/listing-07-14/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "restaurant" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch07-managing-growing-projects/listing-07-14/src/main.rs: -------------------------------------------------------------------------------- 1 | use std::collections::HashMap; 2 | 3 | fn main() { 4 | let mut map = HashMap::new(); 5 | map.insert(1, 2); 6 | } 7 | -------------------------------------------------------------------------------- /listings/ch07-managing-growing-projects/listing-07-15/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "restaurant" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch07-managing-growing-projects/listing-07-16/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "restaurant" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch07-managing-growing-projects/listing-07-17/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "restaurant" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch07-managing-growing-projects/listing-07-18/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "guessing_game" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | rand = "0.8.5" 8 | -------------------------------------------------------------------------------- /listings/ch07-managing-growing-projects/listing-07-19/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "restaurant" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch07-managing-growing-projects/listing-07-19/src/lib.rs: -------------------------------------------------------------------------------- 1 | use std::io; 2 | use std::io::Write; 3 | -------------------------------------------------------------------------------- /listings/ch07-managing-growing-projects/listing-07-20/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "restaurant" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch07-managing-growing-projects/listing-07-20/src/lib.rs: -------------------------------------------------------------------------------- 1 | use std::io::{self, Write}; 2 | -------------------------------------------------------------------------------- /listings/ch07-managing-growing-projects/listing-07-21-and-22/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "restaurant" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch07-managing-growing-projects/listing-07-21-and-22/src/front_of_house.rs: -------------------------------------------------------------------------------- 1 | pub mod hosting { 2 | pub fn add_to_waitlist() {} 3 | } 4 | -------------------------------------------------------------------------------- /listings/ch07-managing-growing-projects/no-listing-02-extracting-hosting/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "restaurant" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch07-managing-growing-projects/no-listing-02-extracting-hosting/src/front_of_house.rs: -------------------------------------------------------------------------------- 1 | pub mod hosting; 2 | -------------------------------------------------------------------------------- /listings/ch07-managing-growing-projects/no-listing-02-extracting-hosting/src/front_of_house/hosting.rs: -------------------------------------------------------------------------------- 1 | pub fn add_to_waitlist() {} 2 | -------------------------------------------------------------------------------- /listings/ch07-managing-growing-projects/quick-reference-example/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "backyard" 3 | version = "0.1.0" 4 | edition = "2021" 5 | -------------------------------------------------------------------------------- /listings/ch07-managing-growing-projects/quick-reference-example/src/garden.rs: -------------------------------------------------------------------------------- 1 | pub mod vegetables; 2 | -------------------------------------------------------------------------------- /listings/ch07-managing-growing-projects/quick-reference-example/src/garden/vegetables.rs: -------------------------------------------------------------------------------- 1 | #[derive(Debug)] 2 | pub struct Asparagus {} 3 | -------------------------------------------------------------------------------- /listings/ch08-common-collections/listing-08-01/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "collections" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch08-common-collections/listing-08-01/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | // ANCHOR: here 3 | let v: Vec = Vec::new(); 4 | // ANCHOR_END: here 5 | } 6 | -------------------------------------------------------------------------------- /listings/ch08-common-collections/listing-08-02/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "collections" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch08-common-collections/listing-08-02/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | // ANCHOR: here 3 | let v = vec![1, 2, 3]; 4 | // ANCHOR_END: here 5 | } 6 | -------------------------------------------------------------------------------- /listings/ch08-common-collections/listing-08-03/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "collections" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch08-common-collections/listing-08-04/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "collections" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch08-common-collections/listing-08-05/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "collections" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch08-common-collections/listing-08-06/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "collections" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch08-common-collections/listing-08-07/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "collections" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch08-common-collections/listing-08-08/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "collections" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch08-common-collections/listing-08-09/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "collections" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch08-common-collections/listing-08-10/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "collections" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch08-common-collections/listing-08-11/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "collections" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch08-common-collections/listing-08-11/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | // ANCHOR: here 3 | let mut s = String::new(); 4 | // ANCHOR_END: here 5 | } 6 | -------------------------------------------------------------------------------- /listings/ch08-common-collections/listing-08-12/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "collections" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch08-common-collections/listing-08-13/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "collections" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch08-common-collections/listing-08-13/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | // ANCHOR: here 3 | let s = String::from("初始內容"); 4 | // ANCHOR_END: here 5 | } 6 | -------------------------------------------------------------------------------- /listings/ch08-common-collections/listing-08-14/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "collections" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch08-common-collections/listing-08-15/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "collections" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch08-common-collections/listing-08-15/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | // ANCHOR: here 3 | let mut s = String::from("foo"); 4 | s.push_str("bar"); 5 | // ANCHOR_END: here 6 | } 7 | -------------------------------------------------------------------------------- /listings/ch08-common-collections/listing-08-16/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "collections" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch08-common-collections/listing-08-17/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "collections" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch08-common-collections/listing-08-17/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | // ANCHOR: here 3 | let mut s = String::from("lo"); 4 | s.push('l'); 5 | // ANCHOR_END: here 6 | } 7 | -------------------------------------------------------------------------------- /listings/ch08-common-collections/listing-08-18/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "collections" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch08-common-collections/listing-08-19/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "collections" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch08-common-collections/listing-08-19/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | // ANCHOR: here 3 | let s1 = String::from("hello"); 4 | let h = s1[0]; 5 | // ANCHOR_END: here 6 | } 7 | -------------------------------------------------------------------------------- /listings/ch08-common-collections/listing-08-20/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "collections" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch08-common-collections/listing-08-21/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "collections" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch08-common-collections/listing-08-22/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "collections" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch08-common-collections/listing-08-23/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "collections" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch08-common-collections/listing-08-24/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "collections" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch08-common-collections/listing-08-25/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "collections" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch08-common-collections/no-listing-01-concat-multiple-strings/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "collections" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch08-common-collections/no-listing-02-format/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "collections" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch08-common-collections/no-listing-03-iterate-over-hashmap/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "collections" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch08-common-collections/output-only-01-not-char-boundary/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "collections" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch08-common-collections/output-only-01-not-char-boundary/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | let hello = "Здравствуйте"; 3 | 4 | let s = &hello[0..1]; 5 | } 6 | -------------------------------------------------------------------------------- /listings/ch09-error-handling/listing-09-01/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "panic" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch09-error-handling/listing-09-01/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "panic" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch09-error-handling/listing-09-01/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | let v = vec![1, 2, 3]; 3 | 4 | v[99]; 5 | } 6 | -------------------------------------------------------------------------------- /listings/ch09-error-handling/listing-09-03/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "error-handling" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch09-error-handling/listing-09-03/src/main.rs: -------------------------------------------------------------------------------- 1 | use std::fs::File; 2 | 3 | fn main() { 4 | let greeting_file_result = File::open("hello.txt"); 5 | } 6 | -------------------------------------------------------------------------------- /listings/ch09-error-handling/listing-09-04/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "error-handling" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch09-error-handling/listing-09-05/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "error-handling" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch09-error-handling/listing-09-06/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "error-handling" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch09-error-handling/listing-09-07/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "error-handling" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch09-error-handling/listing-09-08/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "error-handling" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch09-error-handling/listing-09-09/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "error-handling" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch09-error-handling/listing-09-10/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "error-handling" 5 | version = "0.1.0" -------------------------------------------------------------------------------- /listings/ch09-error-handling/listing-09-10/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "error-handling" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch09-error-handling/listing-09-10/src/main.rs: -------------------------------------------------------------------------------- 1 | use std::fs::File; 2 | 3 | fn main() { 4 | let greeting_file = File::open("hello.txt")?; 5 | } 6 | -------------------------------------------------------------------------------- /listings/ch09-error-handling/listing-09-11/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "error-handling" 5 | version = "0.1.0" -------------------------------------------------------------------------------- /listings/ch09-error-handling/listing-09-11/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "error-handling" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch09-error-handling/listing-09-12/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "error-handling" 5 | version = "0.1.0" -------------------------------------------------------------------------------- /listings/ch09-error-handling/listing-09-12/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "error-handling" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch09-error-handling/listing-09-13/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "guessing_game" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | rand = "0.8.5" -------------------------------------------------------------------------------- /listings/ch09-error-handling/no-listing-01-panic/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "panic" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch09-error-handling/no-listing-01-panic/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | panic!("◢▆▅▄▃ 崩╰(〒皿〒)╯潰▃▄▅▆◣"); 3 | } 4 | -------------------------------------------------------------------------------- /listings/ch09-error-handling/no-listing-04-unwrap/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "error-handling" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch09-error-handling/no-listing-04-unwrap/src/main.rs: -------------------------------------------------------------------------------- 1 | use std::fs::File; 2 | 3 | fn main() { 4 | let greeting_file = File::open("hello.txt").unwrap(); 5 | } 6 | -------------------------------------------------------------------------------- /listings/ch09-error-handling/no-listing-05-expect/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "error-handling" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch09-error-handling/no-listing-05-expect/src/main.rs: -------------------------------------------------------------------------------- 1 | use std::fs::File; 2 | 3 | fn main() { 4 | let greeting_file = File::open("hello.txt") 5 | .expect("hello.txt 應該要存在此專案中"); 6 | } 7 | -------------------------------------------------------------------------------- /listings/ch09-error-handling/no-listing-08-unwrap-that-cant-fail/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "error-handling" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch09-error-handling/no-listing-09-guess-out-of-range/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "guessing_game" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | rand = "0.8.5" 8 | -------------------------------------------------------------------------------- /listings/ch10-generic-types-traits-and-lifetimes/listing-10-01/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "chapter10" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch10-generic-types-traits-and-lifetimes/listing-10-02/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "chapter10" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch10-generic-types-traits-and-lifetimes/listing-10-03/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "chapter10" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch10-generic-types-traits-and-lifetimes/listing-10-04/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "chapter10" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch10-generic-types-traits-and-lifetimes/listing-10-05/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "chapter10" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch10-generic-types-traits-and-lifetimes/listing-10-06/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "chapter10" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch10-generic-types-traits-and-lifetimes/listing-10-07/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "chapter10" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch10-generic-types-traits-and-lifetimes/listing-10-07/src/main.rs: -------------------------------------------------------------------------------- 1 | struct Point { 2 | x: T, 3 | y: T, 4 | } 5 | 6 | fn main() { 7 | let wont_work = Point { x: 5, y: 4.0 }; 8 | } 9 | -------------------------------------------------------------------------------- /listings/ch10-generic-types-traits-and-lifetimes/listing-10-08/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "chapter10" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch10-generic-types-traits-and-lifetimes/listing-10-09/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "chapter10" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch10-generic-types-traits-and-lifetimes/listing-10-10/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "chapter10" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch10-generic-types-traits-and-lifetimes/listing-10-11/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "chapter10" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch10-generic-types-traits-and-lifetimes/listing-10-12/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "aggregator" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch10-generic-types-traits-and-lifetimes/listing-10-12/src/lib.rs: -------------------------------------------------------------------------------- 1 | pub trait Summary { 2 | fn summarize(&self) -> String; 3 | } 4 | -------------------------------------------------------------------------------- /listings/ch10-generic-types-traits-and-lifetimes/listing-10-13/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "aggregator" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch10-generic-types-traits-and-lifetimes/listing-10-14/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "aggregator" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch10-generic-types-traits-and-lifetimes/listing-10-15/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "chapter10" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch10-generic-types-traits-and-lifetimes/listing-10-16/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "chapter10" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch10-generic-types-traits-and-lifetimes/listing-10-17/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "chapter10" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch10-generic-types-traits-and-lifetimes/listing-10-18/Cargo.lock: -------------------------------------------------------------------------------- 1 | [[package]] 2 | name = "chapter10" 3 | version = "0.1.0" 4 | 5 | -------------------------------------------------------------------------------- /listings/ch10-generic-types-traits-and-lifetimes/listing-10-18/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "chapter10" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch10-generic-types-traits-and-lifetimes/listing-10-19/Cargo.lock: -------------------------------------------------------------------------------- 1 | [[package]] 2 | name = "chapter10" 3 | version = "0.1.0" 4 | 5 | -------------------------------------------------------------------------------- /listings/ch10-generic-types-traits-and-lifetimes/listing-10-19/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "chapter10" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch10-generic-types-traits-and-lifetimes/listing-10-20/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "chapter10" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch10-generic-types-traits-and-lifetimes/listing-10-21/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "chapter10" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch10-generic-types-traits-and-lifetimes/listing-10-22/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "chapter10" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch10-generic-types-traits-and-lifetimes/listing-10-23/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "chapter10" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch10-generic-types-traits-and-lifetimes/listing-10-24/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "chapter10" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch10-generic-types-traits-and-lifetimes/listing-10-25/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "ownership" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch10-generic-types-traits-and-lifetimes/no-listing-01-calling-trait-method/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "aggregator" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch10-generic-types-traits-and-lifetimes/no-listing-02-calling-default-impl/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "aggregator" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch10-generic-types-traits-and-lifetimes/no-listing-03-default-impl-calls-other-methods/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "aggregator" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch10-generic-types-traits-and-lifetimes/no-listing-04-traits-as-parameters/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "aggregator" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch10-generic-types-traits-and-lifetimes/no-listing-05-returning-impl-trait/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "aggregator" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch10-generic-types-traits-and-lifetimes/no-listing-06-impl-trait-returns-one-type/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "aggregator" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch10-generic-types-traits-and-lifetimes/no-listing-08-only-one-reference-with-lifetime/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "chapter10" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch10-generic-types-traits-and-lifetimes/no-listing-09-unrelated-lifetime/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "chapter10" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch10-generic-types-traits-and-lifetimes/no-listing-10-lifetimes-on-methods/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "chapter10" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch10-generic-types-traits-and-lifetimes/no-listing-11-generics-traits-and-lifetimes/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "chapter10" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch11-writing-automated-tests/listing-11-01/src/lib.rs: -------------------------------------------------------------------------------- 1 | #[cfg(test)] 2 | mod tests { 3 | #[test] 4 | fn it_works() { 5 | let result = 2 + 2; 6 | assert_eq!(result, 4); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /listings/ch11-writing-automated-tests/listing-11-03/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "adder" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch11-writing-automated-tests/listing-11-05/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "rectangle" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch11-writing-automated-tests/listing-11-06/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "rectangle" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch11-writing-automated-tests/listing-11-07/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "adder" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch11-writing-automated-tests/listing-11-08/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "guessing_game" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch11-writing-automated-tests/listing-11-09/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "guessing_game" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch11-writing-automated-tests/listing-11-10/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "silly-function" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch11-writing-automated-tests/listing-11-11/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "adder" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch11-writing-automated-tests/listing-11-12/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "adder" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch11-writing-automated-tests/listing-11-13/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "adder" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch11-writing-automated-tests/listing-11-13/tests/integration_test.rs: -------------------------------------------------------------------------------- 1 | use adder; 2 | 3 | #[test] 4 | fn it_adds_two() { 5 | assert_eq!(4, adder::add_two(2)); 6 | } 7 | -------------------------------------------------------------------------------- /listings/ch11-writing-automated-tests/no-listing-01-changing-test-name/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "adder" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch11-writing-automated-tests/no-listing-01-changing-test-name/src/lib.rs: -------------------------------------------------------------------------------- 1 | #[cfg(test)] 2 | mod tests { 3 | #[test] 4 | fn exploration() { 5 | assert_eq!(2 + 2, 4); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /listings/ch11-writing-automated-tests/no-listing-02-adding-another-rectangle-test/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "rectangle" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch11-writing-automated-tests/no-listing-03-introducing-a-bug/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "rectangle" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch11-writing-automated-tests/no-listing-04-bug-in-add-two/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "adder" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch11-writing-automated-tests/no-listing-05-greeter/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "greeter" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch11-writing-automated-tests/no-listing-06-greeter-with-bug/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "greeter" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch11-writing-automated-tests/no-listing-07-custom-failure-message/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "greeter" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch11-writing-automated-tests/no-listing-08-guess-with-bug/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "guessing_game" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch11-writing-automated-tests/no-listing-09-guess-with-panic-msg-bug/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "guessing_game" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch11-writing-automated-tests/no-listing-10-result-in-tests/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "adder" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch11-writing-automated-tests/no-listing-11-ignore-a-test/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "adder" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch11-writing-automated-tests/no-listing-12-shared-test-code-problem/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "adder" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch11-writing-automated-tests/no-listing-12-shared-test-code-problem/tests/common.rs: -------------------------------------------------------------------------------- 1 | pub fn setup() { 2 | // 在此設置測試函式庫會用到的程式碼 3 | } 4 | -------------------------------------------------------------------------------- /listings/ch11-writing-automated-tests/no-listing-12-shared-test-code-problem/tests/integration_test.rs: -------------------------------------------------------------------------------- 1 | use adder; 2 | 3 | #[test] 4 | fn it_adds_two() { 5 | assert_eq!(4, adder::add_two(2)); 6 | } 7 | -------------------------------------------------------------------------------- /listings/ch11-writing-automated-tests/no-listing-13-fix-shared-test-code-problem/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "adder" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch11-writing-automated-tests/no-listing-13-fix-shared-test-code-problem/tests/common/mod.rs: -------------------------------------------------------------------------------- 1 | pub fn setup() { 2 | // 在此設置測試函式庫會用到的程式碼 3 | } 4 | -------------------------------------------------------------------------------- /listings/ch11-writing-automated-tests/output-only-01-show-output/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "silly-function" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch11-writing-automated-tests/output-only-02-single-test/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "adder" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch11-writing-automated-tests/output-only-03-multiple-tests/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "adder" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch11-writing-automated-tests/output-only-04-running-ignored/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "adder" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch11-writing-automated-tests/output-only-05-single-integration/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "adder" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch11-writing-automated-tests/output-only-05-single-integration/tests/integration_test.rs: -------------------------------------------------------------------------------- 1 | use adder; 2 | 3 | #[test] 4 | fn it_adds_two() { 5 | assert_eq!(4, adder::add_two(2)); 6 | } 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-01/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "minigrep" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-01/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "minigrep" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-01/src/main.rs: -------------------------------------------------------------------------------- 1 | use std::env; 2 | 3 | fn main() { 4 | let args: Vec = env::args().collect(); 5 | dbg!(args); 6 | } 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-02/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "minigrep" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-02/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "minigrep" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-03/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "minigrep" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-03/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "minigrep" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-04/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "minigrep" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-04/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "minigrep" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-05/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "minigrep" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-05/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "minigrep" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-06/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "minigrep" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-06/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "minigrep" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-07/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "minigrep" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-07/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "minigrep" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-08/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "minigrep" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-08/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "minigrep" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-09/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "minigrep" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-09/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "minigrep" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-10/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "minigrep" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-10/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "minigrep" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-11/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "minigrep" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-11/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "minigrep" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-12/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "minigrep" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-12/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "minigrep" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-13/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "minigrep" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-13/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "minigrep" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-14/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "minigrep" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-14/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "minigrep" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-15/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "minigrep" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-15/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "minigrep" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-16/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "minigrep" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-16/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "minigrep" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-17/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "minigrep" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-17/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "minigrep" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-18/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "minigrep" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-18/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "minigrep" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-19/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "minigrep" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-19/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "minigrep" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-20/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "minigrep" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-20/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "minigrep" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-21/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "minigrep" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-21/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "minigrep" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-22/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "minigrep" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-22/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "minigrep" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-23/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "minigrep" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-23/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "minigrep" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-24/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "minigrep" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/listing-12-24/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "minigrep" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/no-listing-01-handling-errors-in-main/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "minigrep" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/no-listing-02-using-search-in-run/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "minigrep" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/output-only-01-with-args/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "minigrep" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/output-only-01-with-args/src/main.rs: -------------------------------------------------------------------------------- 1 | use std::env; 2 | 3 | fn main() { 4 | let args: Vec = env::args().collect(); 5 | dbg!(args); 6 | } 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/output-only-02-missing-lifetimes/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "minigrep" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/output-only-03-multiple-matches/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "minigrep" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch12-an-io-project/output-only-04-no-matches/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "minigrep" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch13-functional-features/listing-12-23-reproduced/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "minigrep" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch13-functional-features/listing-12-24-reproduced/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "minigrep" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch13-functional-features/listing-13-01/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "shirt-company" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch13-functional-features/listing-13-02/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "workout-app" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch13-functional-features/listing-13-03/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "closure-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch13-functional-features/listing-13-04/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "closure-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch13-functional-features/listing-13-05/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "closure-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch13-functional-features/listing-13-06/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "closure-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch13-functional-features/listing-13-07/.rustfmt.toml: -------------------------------------------------------------------------------- 1 | struct_lit_width = 50 2 | -------------------------------------------------------------------------------- /listings/ch13-functional-features/listing-13-07/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "rectangles" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch13-functional-features/listing-13-08/.rustfmt.toml: -------------------------------------------------------------------------------- 1 | struct_lit_width = 50 2 | -------------------------------------------------------------------------------- /listings/ch13-functional-features/listing-13-08/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "rectangles" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch13-functional-features/listing-13-09/.rustfmt.toml: -------------------------------------------------------------------------------- 1 | struct_lit_width = 50 2 | -------------------------------------------------------------------------------- /listings/ch13-functional-features/listing-13-09/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "rectangles" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch13-functional-features/listing-13-10/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "iterators" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch13-functional-features/listing-13-10/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | // ANCHOR: here 3 | let v1 = vec![1, 2, 3]; 4 | 5 | let v1_iter = v1.iter(); 6 | // ANCHOR_END: here 7 | } 8 | -------------------------------------------------------------------------------- /listings/ch13-functional-features/listing-13-11/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "iterators" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch13-functional-features/listing-13-12/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "iterators" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch13-functional-features/listing-13-13/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "iterators" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch13-functional-features/listing-13-14/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "iterators" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch13-functional-features/listing-13-14/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | // ANCHOR: here 3 | let v1: Vec = vec![1, 2, 3]; 4 | 5 | v1.iter().map(|x| x + 1); 6 | // ANCHOR_END: here 7 | } 8 | -------------------------------------------------------------------------------- /listings/ch13-functional-features/listing-13-15/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "iterators" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch13-functional-features/listing-13-16/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "shoe_size" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch13-functional-features/listing-13-18/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "minigrep" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch13-functional-features/listing-13-19/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "minigrep" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch13-functional-features/listing-13-20/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "minigrep" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch13-functional-features/listing-13-22/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "minigrep" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch14-more-about-cargo/listing-14-01/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "my_crate" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch14-more-about-cargo/listing-14-02/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "my_crate" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch14-more-about-cargo/listing-14-03/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "art" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch14-more-about-cargo/listing-14-03/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "art" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch14-more-about-cargo/listing-14-04/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "art" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch14-more-about-cargo/listing-14-04/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "art" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch14-more-about-cargo/listing-14-05/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "art" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch14-more-about-cargo/listing-14-05/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "art" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch14-more-about-cargo/listing-14-06/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "art" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch14-more-about-cargo/listing-14-06/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "art" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch14-more-about-cargo/listing-14-07/add/Cargo.toml: -------------------------------------------------------------------------------- 1 | [workspace] 2 | 3 | members = [ 4 | "adder", 5 | "add_one", 6 | ] 7 | -------------------------------------------------------------------------------- /listings/ch14-more-about-cargo/listing-14-07/add/add_one/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "add_one" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch14-more-about-cargo/listing-14-07/add/add_one/src/lib.rs: -------------------------------------------------------------------------------- 1 | pub fn add_one(x: i32) -> i32 { 2 | x + 1 3 | } 4 | -------------------------------------------------------------------------------- /listings/ch14-more-about-cargo/listing-14-07/add/adder/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "adder" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | 8 | add_one = { path = "../add_one" } 9 | -------------------------------------------------------------------------------- /listings/ch14-more-about-cargo/no-listing-01-workspace-with-adder-crate/add/Cargo.toml: -------------------------------------------------------------------------------- 1 | [workspace] 2 | 3 | members = [ 4 | "adder", 5 | ] 6 | -------------------------------------------------------------------------------- /listings/ch14-more-about-cargo/no-listing-01-workspace-with-adder-crate/add/adder/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "adder" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch14-more-about-cargo/no-listing-01-workspace-with-adder-crate/add/adder/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | println!("Hello, world!"); 3 | } 4 | -------------------------------------------------------------------------------- /listings/ch14-more-about-cargo/no-listing-02-workspace-with-two-crates/add/Cargo.toml: -------------------------------------------------------------------------------- 1 | [workspace] 2 | 3 | members = [ 4 | "adder", 5 | "add_one", 6 | ] 7 | -------------------------------------------------------------------------------- /listings/ch14-more-about-cargo/no-listing-02-workspace-with-two-crates/add/add_one/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "add_one" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch14-more-about-cargo/no-listing-02-workspace-with-two-crates/add/add_one/src/lib.rs: -------------------------------------------------------------------------------- 1 | pub fn add_one(x: i32) -> i32 { 2 | x + 1 3 | } 4 | -------------------------------------------------------------------------------- /listings/ch14-more-about-cargo/no-listing-02-workspace-with-two-crates/add/adder/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | println!("Hello, world!"); 3 | } 4 | -------------------------------------------------------------------------------- /listings/ch14-more-about-cargo/no-listing-03-workspace-with-external-dependency/add/Cargo.toml: -------------------------------------------------------------------------------- 1 | [workspace] 2 | 3 | members = [ 4 | "adder", 5 | "add_one", 6 | ] 7 | -------------------------------------------------------------------------------- /listings/ch14-more-about-cargo/no-listing-03-workspace-with-external-dependency/add/add_one/src/lib.rs: -------------------------------------------------------------------------------- 1 | use rand; 2 | 3 | pub fn add_one(x: i32) -> i32 { 4 | x + 1 5 | } 6 | -------------------------------------------------------------------------------- /listings/ch14-more-about-cargo/no-listing-04-workspace-with-tests/add/Cargo.toml: -------------------------------------------------------------------------------- 1 | [workspace] 2 | 3 | members = [ 4 | "adder", 5 | "add_one", 6 | ] 7 | -------------------------------------------------------------------------------- /listings/ch14-more-about-cargo/no-listing-04-workspace-with-tests/add/add_one/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "add_one" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch14-more-about-cargo/output-only-01-adder-crate/add/.gitignore: -------------------------------------------------------------------------------- 1 | adder 2 | -------------------------------------------------------------------------------- /listings/ch14-more-about-cargo/output-only-01-adder-crate/add/Cargo.toml: -------------------------------------------------------------------------------- 1 | [workspace] 2 | 3 | members = [ 4 | "adder", 5 | ] 6 | -------------------------------------------------------------------------------- /listings/ch14-more-about-cargo/output-only-02-add-one/add/Cargo.toml: -------------------------------------------------------------------------------- 1 | [workspace] 2 | 3 | members = [ 4 | "adder", 5 | "add_one", 6 | ] 7 | -------------------------------------------------------------------------------- /listings/ch14-more-about-cargo/output-only-02-add-one/add/adder/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "adder" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | 8 | add_one = { path = "../add_one" } 9 | -------------------------------------------------------------------------------- /listings/ch14-more-about-cargo/output-only-02-add-one/add/adder/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | println!("Hello, world!"); 3 | } 4 | -------------------------------------------------------------------------------- /listings/ch14-more-about-cargo/output-only-03-use-rand/add/Cargo.toml: -------------------------------------------------------------------------------- 1 | [workspace] 2 | 3 | members = [ 4 | "adder", 5 | "add_one", 6 | ] 7 | -------------------------------------------------------------------------------- /listings/ch14-more-about-cargo/output-only-03-use-rand/add/add_one/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "add_one" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | rand = "0.8.5" 8 | -------------------------------------------------------------------------------- /listings/ch14-more-about-cargo/output-only-03-use-rand/add/add_one/src/lib.rs: -------------------------------------------------------------------------------- 1 | use rand; 2 | 3 | pub fn add_one(x: i32) -> i32 { 4 | x + 1 5 | } 6 | -------------------------------------------------------------------------------- /listings/ch14-more-about-cargo/output-only-03-use-rand/add/adder/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "adder" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | 8 | add_one = { path = "../add_one" } 9 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-01/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "box-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-01/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | let b = Box::new(5); 3 | println!("b = {}", b); 4 | } 5 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-02/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "cons-list" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-02/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "cons-list" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-02/src/main.rs: -------------------------------------------------------------------------------- 1 | // ANCHOR: here 2 | enum List { 3 | Cons(i32, List), 4 | Nil, 5 | } 6 | // ANCHOR_END: here 7 | 8 | fn main() {} 9 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-03/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "cons-list" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-03/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "cons-list" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-05/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "cons-list" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-05/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "cons-list" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-06/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "deref-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-06/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | let x = 5; 3 | let y = &x; 4 | 5 | assert_eq!(5, x); 6 | assert_eq!(5, *y); 7 | } 8 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-07/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "deref-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-07/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | let x = 5; 3 | let y = Box::new(x); 4 | 5 | assert_eq!(5, x); 6 | assert_eq!(5, *y); 7 | } 8 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-08/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "deref-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-09/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "deref-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-10/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "deref-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-11/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "deref-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-11/src/main.rs: -------------------------------------------------------------------------------- 1 | // ANCHOR: here 2 | fn hello(name: &str) { 3 | println!("Hello, {name}!"); 4 | } 5 | // ANCHOR_END: here 6 | 7 | fn main() {} 8 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-12/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "deref-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-13/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "deref-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-14/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "drop-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-15/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "drop-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-16/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "drop-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-17/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "cons-list" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-17/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "cons-list" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-18/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "cons-list" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-18/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "cons-list" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-19/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "cons-list" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-19/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "cons-list" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-20/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "limit-tracker" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-21/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "limit-tracker" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-22/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "limit-tracker" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-23/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "limit-tracker" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-24/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "cons-list" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-24/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "cons-list" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-25/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "cons-list" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-25/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "cons-list" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-26/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "cons-list" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-26/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "cons-list" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-27/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "tree" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-27/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "tree" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-28/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "tree" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-28/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "tree" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-29/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "tree" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/listing-15-29/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "tree" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/no-listing-01-cant-borrow-immutable-as-mutable/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "borrowing" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/no-listing-01-cant-borrow-immutable-as-mutable/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | let x = 5; 3 | let y = &mut x; 4 | } 5 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/output-only-01-comparing-to-reference/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "deref-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch15-smart-pointers/output-only-01-comparing-to-reference/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | let x = 5; 3 | let y = &x; 4 | 5 | assert_eq!(5, x); 6 | assert_eq!(5, y); 7 | } 8 | -------------------------------------------------------------------------------- /listings/ch16-fearless-concurrency/listing-16-01/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "threads" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch16-fearless-concurrency/listing-16-02/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "threads" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch16-fearless-concurrency/listing-16-03/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "threads" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch16-fearless-concurrency/listing-16-04/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "threads" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch16-fearless-concurrency/listing-16-05/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "threads" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch16-fearless-concurrency/listing-16-06/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "message-passing" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch16-fearless-concurrency/listing-16-06/src/main.rs: -------------------------------------------------------------------------------- 1 | use std::sync::mpsc; 2 | 3 | fn main() { 4 | let (tx, rx) = mpsc::channel(); 5 | } 6 | -------------------------------------------------------------------------------- /listings/ch16-fearless-concurrency/listing-16-07/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "message-passing" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch16-fearless-concurrency/listing-16-08/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "message-passing" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch16-fearless-concurrency/listing-16-09/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "message-passing" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch16-fearless-concurrency/listing-16-10/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "message-passing" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch16-fearless-concurrency/listing-16-11/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "message-passing" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch16-fearless-concurrency/listing-16-12/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "shared-state" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch16-fearless-concurrency/listing-16-13/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "shared-state" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch16-fearless-concurrency/listing-16-14/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "shared-state" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch16-fearless-concurrency/listing-16-15/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "shared-state" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch16-fearless-concurrency/no-listing-01-join-too-early/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "threads" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch16-fearless-concurrency/no-listing-02-no-loop-to-understand-error/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "shared-state" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch16-fearless-concurrency/output-only-01-move-drop/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "threads" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-01/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "averaged-collection" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-01/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "averaged-collection" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-01/src/lib.rs: -------------------------------------------------------------------------------- 1 | pub struct AveragedCollection { 2 | list: Vec, 3 | average: f64, 4 | } 5 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-02/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "averaged-collection" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-02/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "averaged-collection" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-03/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "gui" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-03/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "gui" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-03/src/lib.rs: -------------------------------------------------------------------------------- 1 | pub trait Draw { 2 | fn draw(&self); 3 | } 4 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-04/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "gui" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-04/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "gui" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-05/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "gui" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-05/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "gui" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-06/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "gui" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-06/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "gui" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-07/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "gui" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-07/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "gui" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-08/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "gui" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-08/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "gui" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-09/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "gui" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-09/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "gui" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-10/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "gui" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-10/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "gui" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-11/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "blog" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-11/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "blog" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-12/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "blog" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-12/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "blog" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-13/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "blog" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-13/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "blog" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-14/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "blog" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-14/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "blog" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-15/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "blog" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-15/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "blog" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-16/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "blog" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-16/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "blog" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-17/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "blog" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-17/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "blog" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-18/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "blog" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-18/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "blog" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-19/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "blog" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-19/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "blog" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-20/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "blog" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-20/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "blog" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-21/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "blog" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch17-oop/listing-17-21/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "blog" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch18-patterns-and-matching/listing-18-01/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "patterns" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch18-patterns-and-matching/listing-18-02/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "patterns" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch18-patterns-and-matching/listing-18-03/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "patterns" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch18-patterns-and-matching/listing-18-04/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "patterns" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch18-patterns-and-matching/listing-18-04/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | // ANCHOR: here 3 | let (x, y, z) = (1, 2, 3); 4 | // ANCHOR_END: here 5 | } 6 | -------------------------------------------------------------------------------- /listings/ch18-patterns-and-matching/listing-18-05/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "patterns" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch18-patterns-and-matching/listing-18-05/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | // ANCHOR: here 3 | let (x, y) = (1, 2, 3); 4 | // ANCHOR_END: here 5 | } 6 | -------------------------------------------------------------------------------- /listings/ch18-patterns-and-matching/listing-18-06/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "patterns" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch18-patterns-and-matching/listing-18-06/src/main.rs: -------------------------------------------------------------------------------- 1 | // ANCHOR: here 2 | fn foo(x: i32) { 3 | // 內部的程式碼 4 | } 5 | // ANCHOR_END: here 6 | 7 | fn main() {} 8 | -------------------------------------------------------------------------------- /listings/ch18-patterns-and-matching/listing-18-07/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "patterns" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch18-patterns-and-matching/listing-18-08/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "patterns" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch18-patterns-and-matching/listing-18-09/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "patterns" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch18-patterns-and-matching/listing-18-10/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "patterns" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch18-patterns-and-matching/listing-18-10/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | // ANCHOR: here 3 | if let x = 5 { 4 | println!("{}", x); 5 | }; 6 | // ANCHOR_END: here 7 | } 8 | -------------------------------------------------------------------------------- /listings/ch18-patterns-and-matching/listing-18-11/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "patterns" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch18-patterns-and-matching/listing-18-12/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "patterns" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch18-patterns-and-matching/listing-18-13/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "patterns" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch18-patterns-and-matching/listing-18-14/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "patterns" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch18-patterns-and-matching/listing-18-15/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "patterns" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch18-patterns-and-matching/listing-18-16/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "patterns" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch18-patterns-and-matching/listing-18-17/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "patterns" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch18-patterns-and-matching/listing-18-17/src/main.rs: -------------------------------------------------------------------------------- 1 | fn foo(_: i32, y: i32) { 2 | println!("此程式碼只使用了參數 y:{}", y); 3 | } 4 | 5 | fn main() { 6 | foo(3, 4); 7 | } 8 | -------------------------------------------------------------------------------- /listings/ch18-patterns-and-matching/listing-18-18/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "patterns" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch18-patterns-and-matching/listing-18-19/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "patterns" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch18-patterns-and-matching/listing-18-20/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "patterns" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch18-patterns-and-matching/listing-18-20/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | let _x = 5; 3 | let y = 10; 4 | } 5 | -------------------------------------------------------------------------------- /listings/ch18-patterns-and-matching/listing-18-21/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "patterns" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch18-patterns-and-matching/listing-18-22/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "patterns" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch18-patterns-and-matching/listing-18-23/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "patterns" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch18-patterns-and-matching/listing-18-24/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "patterns" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch18-patterns-and-matching/listing-18-25/Cargo.lock: -------------------------------------------------------------------------------- 1 | [[package]] 2 | name = "patterns" 3 | version = "0.1.0" 4 | 5 | -------------------------------------------------------------------------------- /listings/ch18-patterns-and-matching/listing-18-25/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "patterns" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch18-patterns-and-matching/listing-18-25/rustfmt-ignore: -------------------------------------------------------------------------------- 1 | This listing deliberately doesn't parse so rustfmt fails. 2 | -------------------------------------------------------------------------------- /listings/ch18-patterns-and-matching/listing-18-26/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "patterns" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch18-patterns-and-matching/listing-18-27/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "patterns" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch18-patterns-and-matching/listing-18-28/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "patterns" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch18-patterns-and-matching/listing-18-29/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "patterns" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch18-patterns-and-matching/no-listing-01-literals/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "patterns" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch18-patterns-and-matching/no-listing-02-multiple-patterns/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "patterns" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch18-patterns-and-matching/no-listing-03-ranges/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "patterns" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch18-patterns-and-matching/no-listing-04-ranges-of-char/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "patterns" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch18-patterns-and-matching/no-listing-05-destructuring-structs-and-tuples/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "patterns" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/listing-19-01/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "unsafe-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/listing-19-02/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "unsafe-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/listing-19-02/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | // ANCHOR: here 3 | let address = 0x012345usize; 4 | let r = address as *const i32; 5 | // ANCHOR_END: here 6 | } 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/listing-19-03/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "unsafe-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/listing-19-04/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "unsafe-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/listing-19-05/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "unsafe-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/listing-19-06/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "unsafe-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/listing-19-07/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "unsafe-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/listing-19-08/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "unsafe-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/listing-19-09/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "unsafe-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/listing-19-09/src/main.rs: -------------------------------------------------------------------------------- 1 | static HELLO_WORLD: &str = "Hello, world!"; 2 | 3 | fn main() { 4 | println!("name 為:{}", HELLO_WORLD); 5 | } 6 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/listing-19-10/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "unsafe-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/listing-19-11/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "unsafe-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/listing-19-11/src/main.rs: -------------------------------------------------------------------------------- 1 | unsafe trait Foo { 2 | // 內部的方法 3 | } 4 | 5 | unsafe impl Foo for i32 { 6 | // 內部實作的方法 7 | } 8 | 9 | fn main() {} 10 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/listing-19-12/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "traits-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/listing-19-12/src/lib.rs: -------------------------------------------------------------------------------- 1 | pub trait Iterator { 2 | type Item; 3 | 4 | fn next(&mut self) -> Option; 5 | } 6 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/listing-19-13/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "traits-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/listing-19-13/src/lib.rs: -------------------------------------------------------------------------------- 1 | pub trait Iterator { 2 | fn next(&mut self) -> Option; 3 | } 4 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/listing-19-14/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "traits-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/listing-19-15/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "traits-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/listing-19-16/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "traits-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/listing-19-17/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "traits-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/listing-19-18/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "traits-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/listing-19-19/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "traits-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/listing-19-20/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "traits-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/listing-19-21/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "traits-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/listing-19-22/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "traits-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/listing-19-23/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "traits-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/listing-19-24/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "types-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/listing-19-25/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "types-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/listing-19-27/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "functions-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/listing-19-28/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "macros-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/listing-19-30/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "hello_macro" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/listing-19-31/hello_macro/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "hello_macro" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/listing-19-31/hello_macro/src/lib.rs: -------------------------------------------------------------------------------- 1 | pub trait HelloMacro { 2 | fn hello_macro(); 3 | } 4 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/listing-19-33/hello_macro/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "hello_macro" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/listing-19-33/hello_macro/src/lib.rs: -------------------------------------------------------------------------------- 1 | pub trait HelloMacro { 2 | fn hello_macro(); 3 | } 4 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/no-listing-01-unsafe-fn/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "unsafe-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/no-listing-02-impl-outlineprint-for-point/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "traits-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/no-listing-03-impl-display-for-point/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "traits-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/no-listing-04-kilometers-alias/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "types-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/no-listing-05-write-trait/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "traits-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/no-listing-06-result-alias/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "traits-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/no-listing-07-never-type/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "traits-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/no-listing-08-match-arms-different-types/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "types-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/no-listing-09-unwrap-definition/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "types-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/no-listing-10-loop-returns-never/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "types-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/no-listing-11-cant-create-str/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "types-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/no-listing-12-generic-fn-definition/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "types-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/no-listing-12-generic-fn-definition/src/lib.rs: -------------------------------------------------------------------------------- 1 | fn generic(t: T) { 2 | // --省略-- 3 | } 4 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/no-listing-13-generic-implicit-sized-bound/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "types-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/no-listing-13-generic-implicit-sized-bound/src/lib.rs: -------------------------------------------------------------------------------- 1 | fn generic(t: T) { 2 | // --省略-- 3 | } 4 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/no-listing-14-generic-maybe-sized/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "types-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/no-listing-14-generic-maybe-sized/src/lib.rs: -------------------------------------------------------------------------------- 1 | fn generic(t: &T) { 2 | // --省略-- 3 | } 4 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/no-listing-15-map-closure/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "functions-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/no-listing-16-map-function/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "functions-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/no-listing-17-map-initializer/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "functions-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/no-listing-18-returns-closure/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "functions-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/no-listing-18-returns-closure/src/lib.rs: -------------------------------------------------------------------------------- 1 | fn returns_closure() -> dyn Fn(i32) -> i32 { 2 | |x| x + 1 3 | } 4 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/no-listing-19-returns-closure-trait-object/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "functions-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/no-listing-19-returns-closure-trait-object/src/lib.rs: -------------------------------------------------------------------------------- 1 | fn returns_closure() -> Box i32> { 2 | Box::new(|x| x + 1) 3 | } 4 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/no-listing-20-impl-hellomacro-for-pancakes/hello_macro/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "hello_macro" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/no-listing-20-impl-hellomacro-for-pancakes/hello_macro/src/lib.rs: -------------------------------------------------------------------------------- 1 | pub trait HelloMacro { 2 | fn hello_macro(); 3 | } 4 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/no-listing-21-pancakes/hello_macro/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "hello_macro" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/no-listing-21-pancakes/hello_macro/src/lib.rs: -------------------------------------------------------------------------------- 1 | pub trait HelloMacro { 2 | fn hello_macro(); 3 | } 4 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/no-listing-22-iterator-on-counter/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "counter" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/output-only-01-missing-unsafe/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "unsafe-example" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch19-advanced-features/output-only-01-missing-unsafe/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | // ANCHOR: here 3 | unsafe fn dangerous() {} 4 | 5 | dangerous(); 6 | // ANCHOR_END: here 7 | } 8 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-01/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "hello" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-01/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "hello" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-02/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "hello" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-02/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "hello" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-03/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "hello" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-03/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "hello" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-05/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "hello" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-05/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "hello" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-06/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "hello" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-06/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "hello" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-07/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "hello" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-07/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "hello" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-09/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "hello" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-09/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "hello" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-10/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "hello" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-10/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "hello" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-11/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "hello" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-11/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "hello" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-12/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "hello" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-12/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "hello" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-13/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "hello" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-13/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "hello" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-14/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "hello" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-14/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "hello" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-15/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "hello" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-15/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "hello" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-16/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "hello" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-16/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "hello" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-17/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "hello" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-17/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "hello" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-18/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "hello" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-18/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "hello" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-19/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "hello" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-19/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "hello" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-20/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "hello" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-20/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "hello" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-21/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "hello" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-21/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "hello" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-22/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "hello" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-22/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "hello" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-23/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "hello" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-23/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "hello" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-24/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "hello" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-24/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "hello" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-25/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "hello" 5 | version = "0.1.0" 6 | 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/listing-20-25/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "hello" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/no-listing-01-define-threadpool-struct/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "hello" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/no-listing-01-define-threadpool-struct/src/lib.rs: -------------------------------------------------------------------------------- 1 | pub struct ThreadPool; 2 | -------------------------------------------------------------------------------- /listings/ch20-web-server/no-listing-02-impl-threadpool-new/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "hello" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/no-listing-02-impl-threadpool-new/src/lib.rs: -------------------------------------------------------------------------------- 1 | pub struct ThreadPool; 2 | 3 | impl ThreadPool { 4 | pub fn new(size: usize) -> ThreadPool { 5 | ThreadPool 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /listings/ch20-web-server/no-listing-03-define-execute/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "hello" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/no-listing-03-define-execute/output.txt: -------------------------------------------------------------------------------- 1 | $ cargo check 2 | Checking hello v0.1.0 (file:///projects/hello) 3 | Finished dev [unoptimized + debuginfo] target(s) in 0.24s 4 | -------------------------------------------------------------------------------- /listings/ch20-web-server/no-listing-04-update-worker-definition/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "hello" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/no-listing-05-fix-worker-new/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "hello" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/no-listing-06-fix-threadpool-drop/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "hello" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /listings/ch20-web-server/no-listing-07-final-code/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "hello" 5 | version = "0.1.0" 6 | -------------------------------------------------------------------------------- /listings/ch20-web-server/no-listing-07-final-code/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "hello" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /rust-toolchain: -------------------------------------------------------------------------------- 1 | 1.65 2 | -------------------------------------------------------------------------------- /rustfmt.toml: -------------------------------------------------------------------------------- 1 | max_width = 80 2 | -------------------------------------------------------------------------------- /src/appendix-00.md: -------------------------------------------------------------------------------- 1 | # 附錄 2 | 3 | 以下段落包含你可能會在你的 Rust 旅途中覺得有用的參考資源。 4 | -------------------------------------------------------------------------------- /src/ch01-00-getting-started.md: -------------------------------------------------------------------------------- 1 | # 開始入門 2 | 3 | 讓我們開始你的 Rust 旅途吧!千里之行始於足下,在此章節我們將討論: 4 | 5 | * 在 Linux、macOS 和 Windows 上安裝 Rust 6 | * 寫一支印出 `Hello, world!` 的程式 7 | * 使用 Rust 的套件管理工具暨建構系統 `cargo` 8 | -------------------------------------------------------------------------------- /src/ch04-00-understanding-ownership.md: -------------------------------------------------------------------------------- 1 | # 理解所有權 2 | 3 | 所有權可以說是 Rust 最與眾不同的特色,並深深影響著整個語言。這讓 Rust 不需要垃圾回收(garbage collector)就可以保障記憶體安全,因此理解 Rust 中的所有權如何運作至關重要。在本章節,我們將討論所有權以及一些相關的功能:借用、切片與 Rust 如何在記憶體配置資料。 4 | -------------------------------------------------------------------------------- /src/img/trpl14-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rust-tw/book-tw/969ed237736d334545894923d4b70a50d2333695/src/img/trpl14-01.png -------------------------------------------------------------------------------- /src/img/trpl14-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rust-tw/book-tw/969ed237736d334545894923d4b70a50d2333695/src/img/trpl14-02.png -------------------------------------------------------------------------------- /src/img/trpl14-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rust-tw/book-tw/969ed237736d334545894923d4b70a50d2333695/src/img/trpl14-03.png -------------------------------------------------------------------------------- /src/img/trpl14-04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rust-tw/book-tw/969ed237736d334545894923d4b70a50d2333695/src/img/trpl14-04.png -------------------------------------------------------------------------------- /src/img/trpl20-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rust-tw/book-tw/969ed237736d334545894923d4b70a50d2333695/src/img/trpl20-01.png -------------------------------------------------------------------------------- /theme/2018-edition.css: -------------------------------------------------------------------------------- 1 | span.caption { 2 | font-size: .8em; 3 | font-weight: 600; 4 | } 5 | 6 | span.caption code { 7 | font-size: 0.875em; 8 | font-weight: 400; 9 | } 10 | --------------------------------------------------------------------------------