[INFO] cloning repository https://github.com/tokiwadai/rust_prog_lang
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/tokiwadai/rust_prog_lang" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftokiwadai%2Frust_prog_lang", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftokiwadai%2Frust_prog_lang'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 34d19f5d2570b49f3aac99664021021050edada3
[INFO] checking tokiwadai/rust_prog_lang against try#93086cfebfccb79083c59d0d3b2052944bba643c for pr-146440-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftokiwadai%2Frust_prog_lang" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/tokiwadai/rust_prog_lang
[INFO] finished tweaking git repo https://github.com/tokiwadai/rust_prog_lang
[INFO] tweaked toml for git repo https://github.com/tokiwadai/rust_prog_lang written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/tokiwadai/rust_prog_lang on toolchain 93086cfebfccb79083c59d0d3b2052944bba643c
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+93086cfebfccb79083c59d0d3b2052944bba643c" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/tokiwadai/rust_prog_lang already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+93086cfebfccb79083c59d0d3b2052944bba643c" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+93086cfebfccb79083c59d0d3b2052944bba643c" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 3e8f0d8c21c28a1ddf073f7a7302ceb021c9d7f2860e3258566763597dec8496
[INFO] running `Command { std: "docker" "start" "-a" "3e8f0d8c21c28a1ddf073f7a7302ceb021c9d7f2860e3258566763597dec8496", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "3e8f0d8c21c28a1ddf073f7a7302ceb021c9d7f2860e3258566763597dec8496", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "3e8f0d8c21c28a1ddf073f7a7302ceb021c9d7f2860e3258566763597dec8496", kill_on_drop: false }`
[INFO] [stdout] 3e8f0d8c21c28a1ddf073f7a7302ceb021c9d7f2860e3258566763597dec8496
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+93086cfebfccb79083c59d0d3b2052944bba643c" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 563d763b3a44a7d4d36a450693cec9be3b53dfdece65e9573f465e0cde51619f
[INFO] running `Command { std: "docker" "start" "-a" "563d763b3a44a7d4d36a450693cec9be3b53dfdece65e9573f465e0cde51619f", kill_on_drop: false }`
[INFO] [stderr]     Checking rust_prog_lang v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused variable: `order1`
[INFO] [stdout]   --> src/lib.rs:57:9
[INFO] [stdout]    |
[INFO] [stdout] 57 |     let order1 = back_of_house::Appetizer::Soup;
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_order1`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `order2`
[INFO] [stdout]   --> src/lib.rs:58:9
[INFO] [stdout]    |
[INFO] [stdout] 58 |     let order2 = back_of_house::Appetizer::Salad;
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_order2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `order1`
[INFO] [stdout]   --> src/lib.rs:57:9
[INFO] [stdout]    |
[INFO] [stdout] 57 |     let order1 = back_of_house::Appetizer::Soup;
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_order1`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `serve_order` is never used
[INFO] [stdout]   --> src/lib.rs:16:4
[INFO] [stdout]    |
[INFO] [stdout] 16 | fn serve_order() {}
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `seat_at_table` is never used
[INFO] [stdout]  --> src/front_of_house/hosting.rs:2:4
[INFO] [stdout]   |
[INFO] [stdout] 2 | fn seat_at_table() {}
[INFO] [stdout]   |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `take_order` is never used
[INFO] [stdout]  --> src/front_of_house.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 |     fn take_order() {}
[INFO] [stdout]   |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `serve_order` is never used
[INFO] [stdout]  --> src/front_of_house.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 |     fn serve_order() {}
[INFO] [stdout]   |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `take_payment` is never used
[INFO] [stdout]  --> src/front_of_house.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 |     fn take_payment() {}
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `seasonal_fruit` is never read
[INFO] [stdout]   --> src/lib.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub struct Breakfast {
[INFO] [stdout]    |                --------- field in this struct
[INFO] [stdout] 20 |         pub toast: String,
[INFO] [stdout] 21 |         seasonal_fruit: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `order2`
[INFO] [stdout]   --> src/lib.rs:58:9
[INFO] [stdout]    |
[INFO] [stdout] 58 |     let order2 = back_of_house::Appetizer::Salad;
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_order2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `serve_order` is never used
[INFO] [stdout]   --> src/lib.rs:16:4
[INFO] [stdout]    |
[INFO] [stdout] 16 | fn serve_order() {}
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `seat_at_table` is never used
[INFO] [stdout]  --> src/front_of_house/hosting.rs:2:4
[INFO] [stdout]   |
[INFO] [stdout] 2 | fn seat_at_table() {}
[INFO] [stdout]   |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `take_order` is never used
[INFO] [stdout]  --> src/front_of_house.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 |     fn take_order() {}
[INFO] [stdout]   |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `serve_order` is never used
[INFO] [stdout]  --> src/front_of_house.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 |     fn serve_order() {}
[INFO] [stdout]   |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `take_payment` is never used
[INFO] [stdout]  --> src/front_of_house.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 |     fn take_payment() {}
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `seasonal_fruit` is never read
[INFO] [stdout]   --> src/lib.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub struct Breakfast {
[INFO] [stdout]    |                --------- field in this struct
[INFO] [stdout] 20 |         pub toast: String,
[INFO] [stdout] 21 |         seasonal_fruit: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cook_order` is never used
[INFO] [stdout]   --> src/lib.rs:33:8
[INFO] [stdout]    |
[INFO] [stdout] 33 |     fn cook_order() {}
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fix_incorrect_order` is never used
[INFO] [stdout]   --> src/lib.rs:34:8
[INFO] [stdout]    |
[INFO] [stdout] 34 |     fn fix_incorrect_order() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cook_order` is never used
[INFO] [stdout]   --> src/lib.rs:33:8
[INFO] [stdout]    |
[INFO] [stdout] 33 |     fn cook_order() {}
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fix_incorrect_order` is never used
[INFO] [stdout]   --> src/lib.rs:34:8
[INFO] [stdout]    |
[INFO] [stdout] 34 |     fn fix_incorrect_order() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `list`
[INFO] [stdout]   --> src/bin/chap10/3_generic_trait_samples.rs:21:24
[INFO] [stdout]    |
[INFO] [stdout] 21 | fn largest_not_work<T>(list: &[T]) -> T {
[INFO] [stdout]    |                        ^^^^ help: if this is intentional, prefix it with an underscore: `_list`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `largest_not_work` is never used
[INFO] [stdout]   --> src/bin/chap10/3_generic_trait_samples.rs:21:4
[INFO] [stdout]    |
[INFO] [stdout] 21 | fn largest_not_work<T>(list: &[T]) -> T {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]   --> src/bin/chap10/2_trait_samples.rs:57:24
[INFO] [stdout]    |
[INFO] [stdout] 57 | fn some_function<T, U>(t: &T, u: &U) -> i32
[INFO] [stdout]    |                        ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `u`
[INFO] [stdout]   --> src/bin/chap10/2_trait_samples.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 57 | fn some_function<T, U>(t: &T, u: &U) -> i32
[INFO] [stdout]    |                               ^ help: if this is intentional, prefix it with an underscore: `_u`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `some_function` is never used
[INFO] [stdout]   --> src/bin/chap10/2_trait_samples.rs:57:4
[INFO] [stdout]    |
[INFO] [stdout] 57 | fn some_function<T, U>(t: &T, u: &U) -> i32
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap16/2_thread_samples.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | /     /** Calling join on the handle blocks the thread currently running
[INFO] [stdout] 19 | |         until the thread represented by the handle terminates.
[INFO] [stdout] 20 | |         Blocking a thread means that thread is prevented from performing work or exiting.
[INFO] [stdout] ...  |
[INFO] [stdout] 23 | |         but the main thread waits because of the call to handle.join() and
[INFO] [stdout] 24 | |         does not end until the spawned thread is ␀nished., pp. 393 */
[INFO] [stdout]    | |_____________________________________________________________________^
[INFO] [stdout] 25 |       handle.join().unwrap();
[INFO] [stdout]    |       ---------------------- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_username_from_file` is never used
[INFO] [stdout]   --> src/bin/chap9/4_propagating_error.rs:12:4
[INFO] [stdout]    |
[INFO] [stdout] 12 | fn read_username_from_file() -> Result<String, io::Error> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap4/5_mut_immut_references.rs:6:5
[INFO] [stdout]    |
[INFO] [stdout]  6 | /     /**
[INFO] [stdout]  7 | |     * you can have only one mutable reference
[INFO] [stdout]  8 | |     * to a particular piece of data in a particular scope
[INFO] [stdout]  9 | |     *
[INFO] [stdout] 10 | |     * Code below will fail
[INFO] [stdout] 11 | |     */
[INFO] [stdout]    | |______^ rustdoc does not generate documentation for macro invocations
[INFO] [stdout]    |
[INFO] [stdout]    = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion
[INFO] [stdout]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap10/5_lifetime_generic_samples.rs:64:5
[INFO] [stdout]    |
[INFO] [stdout] 64 | /     /** This won't compile, pp. 220
[INFO] [stdout] 65 | |     let result;
[INFO] [stdout] 66 | |     {
[INFO] [stdout] 67 | |         let string2 = String::from("xyz");
[INFO] [stdout] ...  |
[INFO] [stdout] 70 | |     println!("The longest string is {}", result);
[INFO] [stdout] 71 | |     */
[INFO] [stdout]    | |______^
[INFO] [stdout] 72 |
[INFO] [stdout] 73 |       let string1 = String::from("abcd");
[INFO] [stdout]    |       ----------------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/bin/chap4/5_mut_immut_references.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 28 |     let mut s = String::from("hello");
[INFO] [stdout]    |         ----^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `r1`
[INFO] [stdout]   --> src/bin/chap4/5_mut_immut_references.rs:19:13
[INFO] [stdout]    |
[INFO] [stdout] 19 |         let r1 = &mut s;
[INFO] [stdout]    |             ^^ help: if this is intentional, prefix it with an underscore: `_r1`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `y`
[INFO] [stdout]   --> src/bin/chap10/5_lifetime_generic_samples.rs:27:30
[INFO] [stdout]    |
[INFO] [stdout] 27 | fn longest_x<'a>(x: &'a str, y: &str) -> &'a str {
[INFO] [stdout]    |                              ^ help: if this is intentional, prefix it with an underscore: `_y`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `string1`
[INFO] [stdout]   --> src/bin/chap10/5_lifetime_generic_samples.rs:63:9
[INFO] [stdout]    |
[INFO] [stdout] 63 |     let string1 = String::from("long string is long");
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_string1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `longest_x` is never used
[INFO] [stdout]   --> src/bin/chap10/5_lifetime_generic_samples.rs:27:4
[INFO] [stdout]    |
[INFO] [stdout] 27 | fn longest_x<'a>(x: &'a str, y: &str) -> &'a str {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_username_from_file2` is never used
[INFO] [stdout]   --> src/bin/chap9/4_propagating_error.rs:29:4
[INFO] [stdout]    |
[INFO] [stdout] 29 | fn read_username_from_file2() -> Result<String, io::Error> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_username_from_file3` is never used
[INFO] [stdout]   --> src/bin/chap9/4_propagating_error.rs:38:4
[INFO] [stdout]    |
[INFO] [stdout] 38 | fn read_username_from_file3() -> Result<String, io::Error> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]  --> src/bin/chap6/2_enum_sample.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 |     V4(String),
[INFO] [stdout]   |     -- ^^^^^^
[INFO] [stdout]   |     |
[INFO] [stdout]   |     field in this variant
[INFO] [stdout]   |
[INFO] [stdout]   = note: `IpAddr` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]   |
[INFO] [stdout] 3 -     V4(String),
[INFO] [stdout] 3 +     V4(()),
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]  --> src/bin/chap6/2_enum_sample.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 |     V6(String),
[INFO] [stdout]   |     -- ^^^^^^
[INFO] [stdout]   |     |
[INFO] [stdout]   |     field in this variant
[INFO] [stdout]   |
[INFO] [stdout]   = note: `IpAddr` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]   |
[INFO] [stdout] 4 -     V6(String),
[INFO] [stdout] 4 +     V6(()),
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `0`, `1`, `2`, and `3` are never read
[INFO] [stdout]  --> src/bin/chap6/2_enum_sample.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 |     V4(u8, u8, u8, u8),
[INFO] [stdout]   |     -- ^^  ^^  ^^  ^^
[INFO] [stdout]   |     |
[INFO] [stdout]   |     fields in this variant
[INFO] [stdout]   |
[INFO] [stdout]   = note: `IpAddr2` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields
[INFO] [stdout]   |
[INFO] [stdout] 9 -     V4(u8, u8, u8, u8),
[INFO] [stdout] 9 +     V4((), (), (), ()),
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/bin/chap6/2_enum_sample.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 |     V6(String),
[INFO] [stdout]    |     -- ^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `IpAddr2` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 10 -     V6(String),
[INFO] [stdout] 10 +     V6(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap16/3_thread_samples.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | /     /** The main thread will wait for the spawned thread to finish and
[INFO] [stdout] 14 | |         then run its for loop, so the output won’t be interleaved anymore, pp. 394 */
[INFO] [stdout]    | |_____________________________________________________________________________________^
[INFO] [stdout] 15 |       handle.join().unwrap();
[INFO] [stdout]    |       ---------------------- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Shoe` is never constructed
[INFO] [stdout]  --> src/bin/chap13/5_closure_iter_samples.rs:2:8
[INFO] [stdout]   |
[INFO] [stdout] 2 | struct Shoe {
[INFO] [stdout]   |        ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `shoes_in_my_size` is never used
[INFO] [stdout]  --> src/bin/chap13/5_closure_iter_samples.rs:9:4
[INFO] [stdout]   |
[INFO] [stdout] 9 | fn shoes_in_my_size(shoes: Vec<Shoe>, shoe_size: u32) -> Vec<Shoe> {
[INFO] [stdout]   |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap10/5_lifetime_generic_samples.rs:64:5
[INFO] [stdout]    |
[INFO] [stdout] 64 | /     /** This won't compile, pp. 220
[INFO] [stdout] 65 | |     let result;
[INFO] [stdout] 66 | |     {
[INFO] [stdout] 67 | |         let string2 = String::from("xyz");
[INFO] [stdout] ...  |
[INFO] [stdout] 70 | |     println!("The longest string is {}", result);
[INFO] [stdout] 71 | |     */
[INFO] [stdout]    | |______^
[INFO] [stdout] 72 |
[INFO] [stdout] 73 |       let string1 = String::from("abcd");
[INFO] [stdout]    |       ----------------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `y`
[INFO] [stdout]   --> src/bin/chap10/5_lifetime_generic_samples.rs:27:30
[INFO] [stdout]    |
[INFO] [stdout] 27 | fn longest_x<'a>(x: &'a str, y: &str) -> &'a str {
[INFO] [stdout]    |                              ^ help: if this is intentional, prefix it with an underscore: `_y`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `string1`
[INFO] [stdout]   --> src/bin/chap10/5_lifetime_generic_samples.rs:63:9
[INFO] [stdout]    |
[INFO] [stdout] 63 |     let string1 = String::from("long string is long");
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_string1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `longest_x` is never used
[INFO] [stdout]   --> src/bin/chap10/5_lifetime_generic_samples.rs:27:4
[INFO] [stdout]    |
[INFO] [stdout] 27 | fn longest_x<'a>(x: &'a str, y: &str) -> &'a str {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `word`
[INFO] [stdout]  --> src/bin/chap4/7_string_slices.rs:3:9
[INFO] [stdout]   |
[INFO] [stdout] 3 |     let word = first_word(&s); // word will get the value 5
[INFO] [stdout]   |         ^^^^ help: if this is intentional, prefix it with an underscore: `_word`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]  --> src/bin/chap6/2_enum_sample.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 |     V4(String),
[INFO] [stdout]   |     -- ^^^^^^
[INFO] [stdout]   |     |
[INFO] [stdout]   |     field in this variant
[INFO] [stdout]   |
[INFO] [stdout]   = note: `IpAddr` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]   |
[INFO] [stdout] 3 -     V4(String),
[INFO] [stdout] 3 +     V4(()),
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]  --> src/bin/chap6/2_enum_sample.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 |     V6(String),
[INFO] [stdout]   |     -- ^^^^^^
[INFO] [stdout]   |     |
[INFO] [stdout]   |     field in this variant
[INFO] [stdout]   |
[INFO] [stdout]   = note: `IpAddr` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]   |
[INFO] [stdout] 4 -     V6(String),
[INFO] [stdout] 4 +     V6(()),
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `0`, `1`, `2`, and `3` are never read
[INFO] [stdout]  --> src/bin/chap6/2_enum_sample.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 |     V4(u8, u8, u8, u8),
[INFO] [stdout]   |     -- ^^  ^^  ^^  ^^
[INFO] [stdout]   |     |
[INFO] [stdout]   |     fields in this variant
[INFO] [stdout]   |
[INFO] [stdout]   = note: `IpAddr2` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields
[INFO] [stdout]   |
[INFO] [stdout] 9 -     V4(u8, u8, u8, u8),
[INFO] [stdout] 9 +     V4((), (), (), ()),
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/bin/chap6/2_enum_sample.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 |     V6(String),
[INFO] [stdout]    |     -- ^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `IpAddr2` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 10 -     V6(String),
[INFO] [stdout] 10 +     V6(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/bin/chap15/4_refcell_samples.rs:18:27
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub fn new(messenger: &T, max: usize) -> LimitTracker<T> {
[INFO] [stdout]    |                           ^^                 ^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                           |
[INFO] [stdout]    |                           the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub fn new(messenger: &T, max: usize) -> LimitTracker<'_, T> {
[INFO] [stdout]    |                                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `y` is never read
[INFO] [stdout]  --> src/bin/chap10/1_generic_samples.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | struct Point<T> {
[INFO] [stdout]   |        ----- field in this struct
[INFO] [stdout] 3 |     x: T,
[INFO] [stdout] 4 |     y: T,
[INFO] [stdout]   |     ^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `Point` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `distance_from_origin` is never used
[INFO] [stdout]   --> src/bin/chap10/1_generic_samples.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl Point<f32> {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] 12 |     fn distance_from_origin(&self) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap16/5_channel_thread_samples.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | /         /** The send function takes ownership of its parameter,
[INFO] [stdout] 12 | |             and when the value is moved, the receiver takes ownership of it.
[INFO] [stdout] 13 | |             This stops us from accidentally using the value again after sending it;
[INFO] [stdout] 14 | |             the ownership system checks that everything is okay, pp. 402 */
[INFO] [stdout]    | |___________________________________________________________________________^
[INFO] [stdout] 15 |           tx.send(val).unwrap();
[INFO] [stdout]    |           --------------------- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `c`
[INFO] [stdout]   --> src/bin/chap15/2_drop_samples.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 |     let c = CustomSmartPointer {
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_c`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap15/6_ref_cycle_samples.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 31 |     /** We create an Rc<List> instance holding a List value in the variable a with an initial list of 5, Nil. */
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 32 |     let a: Rc<List> = Rc::new(Cons(5,RefCell::new(Rc::new(Nil))));
[INFO] [stdout]    |     -------------------------------------------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap16/5_channel_thread_samples.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | /     /** recv , short for receive, which will block the main thread’s execution and
[INFO] [stdout] 23 | |         wait until a value is sent down the channel.
[INFO] [stdout] 24 | |         Once a value is sent, recv will return it in a Result<T, E>.
[INFO] [stdout] 25 | |         When the sending end of the channel closes,
[INFO] [stdout] 26 | |         recv will return an error to signal that no more values will be coming, pp. 401 */
[INFO] [stdout]    | |__________________________________________________________________________________________^
[INFO] [stdout] 27 |       let received = rx.recv().unwrap();
[INFO] [stdout]    |       ---------------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap16/5_channel_thread_samples.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 33 | /     /** The spawned thread will now send multiple messages
[INFO] [stdout] 34 | |         and pause for a second between each message, pp. 403 */
[INFO] [stdout]    | |_______________________________________________________________^
[INFO] [stdout] 35 | /     thread::spawn(move || {
[INFO] [stdout] 36 | |         let vals = vec![
[INFO] [stdout] 37 | |             String::from("hi"),
[INFO] [stdout] 38 | |             String::from("from"),
[INFO] [stdout] ...  |
[INFO] [stdout] 49 | |     });
[INFO] [stdout]    | |______- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap16/5_channel_thread_samples.rs:42:9
[INFO] [stdout]    |
[INFO] [stdout] 42 | /         /** We iterate over them, sending each individually,
[INFO] [stdout] 43 | |             and pause between each by calling the thread::sleep function
[INFO] [stdout] 44 | |             with a Duration value of 1 second */
[INFO] [stdout]    | |________________________________________________^
[INFO] [stdout] 45 | /         for val in vals {
[INFO] [stdout] 46 | |             tx.send(val).unwrap();
[INFO] [stdout] 47 | |             thread::sleep(Duration::from_secs(1));
[INFO] [stdout] 48 | |         }
[INFO] [stdout]    | |_________- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `d`
[INFO] [stdout]   --> src/bin/chap15/2_drop_samples.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 |     let d = CustomSmartPointer {
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_d`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `addr1`, `addr2`, `addr3`, and `addr4` are never read
[INFO] [stdout]  --> src/bin/chap6/3_enum_sample.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | struct Ipv4Addr {
[INFO] [stdout]   |        -------- fields in this struct
[INFO] [stdout] 3 | // --snip--
[INFO] [stdout] 4 |     addr1: u8,
[INFO] [stdout]   |     ^^^^^
[INFO] [stdout] 5 |     addr2: u8,
[INFO] [stdout]   |     ^^^^^
[INFO] [stdout] 6 |     addr3: u8,
[INFO] [stdout]   |     ^^^^^
[INFO] [stdout] 7 |     addr4: u8,
[INFO] [stdout]   |     ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `Ipv4Addr` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `address` is never read
[INFO] [stdout]   --> src/bin/chap6/3_enum_sample.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | struct Ipv6Addr {
[INFO] [stdout]    |        -------- field in this struct
[INFO] [stdout] 12 | // --snip--
[INFO] [stdout] 13 |     address: String,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Ipv6Addr` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/bin/chap6/3_enum_sample.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 |     V4(Ipv4Addr),
[INFO] [stdout]    |     -- ^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `IpAddr` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 18 -     V4(Ipv4Addr),
[INFO] [stdout] 18 +     V4(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/bin/chap6/3_enum_sample.rs:19:8
[INFO] [stdout]    |
[INFO] [stdout] 19 |     V6(Ipv6Addr),
[INFO] [stdout]    |     -- ^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `IpAddr` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 19 -     V6(Ipv6Addr),
[INFO] [stdout] 19 +     V6(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `c`
[INFO] [stdout]   --> src/bin/chap15/2_drop_samples.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 22 |     let c = CustomSmartPointer {
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_c`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap16/5_channel_thread_samples.rs:51:5
[INFO] [stdout]    |
[INFO] [stdout] 51 | /     /** Treating rx as an iterator
[INFO] [stdout] 52 | |         For each value received, we’re printing it.
[INFO] [stdout] 53 | |         When the channel is closed, iteration will end. */
[INFO] [stdout]    | |__________________________________________________________^
[INFO] [stdout] 54 | /     for received in rx {
[INFO] [stdout] 55 | |         println!("Got: {}", received);
[INFO] [stdout] 56 | |     }
[INFO] [stdout]    | |_____- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap16/5_channel_thread_samples.rs:61:5
[INFO] [stdout]    |
[INFO] [stdout] 61 | /     /** Use mpsc to create multiple threads that all send values to the same receiver.
[INFO] [stdout] 62 | |         We can do so by cloning the transmitting half of the channel */
[INFO] [stdout]    | |_______________________________________________________________________^
[INFO] [stdout] 63 |       let tx1 = mpsc::Sender::clone(&tx);
[INFO] [stdout]    |       ----------------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap15/6_ref_cycle_samples.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 | /     /** We then create an Rc<List> instance holding another List value in the variable b
[INFO] [stdout] 37 | |         that contains the value 10 and points to the list in a, pp. 381 */
[INFO] [stdout]    | |__________________________________________________________________________^
[INFO] [stdout] 38 |       let b: Rc<List> = Rc::new(Cons(10,RefCell::new(Rc::clone(&a))));
[INFO] [stdout]    |       ---------------------------------------------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap15/6_ref_cycle_samples.rs:43:5
[INFO] [stdout]    |
[INFO] [stdout] 43 | /     /** We modify a so it points to b instead of Nil, creating a cycle.
[INFO] [stdout] 44 | |         We do that by using the tail method to get a reference to the RefCell<Rc<List>>.
[INFO] [stdout] 45 | |         Then we use the borrow_mut method on the RefCell<Rc<List>> to change the value inside from an Rc<List>
[INFO] [stdout] 46 | |         that holds a Nil value to the Rc<List> in b, pp. 381 */
[INFO] [stdout]    | |_______________________________________________________________^
[INFO] [stdout] 47 | /     if let Some(link) = a.tail() {
[INFO] [stdout] 48 | |         *link.borrow_mut() = Rc::clone(&b);
[INFO] [stdout] 49 | |     }
[INFO] [stdout]    | |_____- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap16/5_channel_thread_samples.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | /         /** The send function takes ownership of its parameter,
[INFO] [stdout] 12 | |             and when the value is moved, the receiver takes ownership of it.
[INFO] [stdout] 13 | |             This stops us from accidentally using the value again after sending it;
[INFO] [stdout] 14 | |             the ownership system checks that everything is okay, pp. 402 */
[INFO] [stdout]    | |___________________________________________________________________________^
[INFO] [stdout] 15 |           tx.send(val).unwrap();
[INFO] [stdout]    |           --------------------- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap16/5_channel_thread_samples.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | /     /** recv , short for receive, which will block the main thread’s execution and
[INFO] [stdout] 23 | |         wait until a value is sent down the channel.
[INFO] [stdout] 24 | |         Once a value is sent, recv will return it in a Result<T, E>.
[INFO] [stdout] 25 | |         When the sending end of the channel closes,
[INFO] [stdout] 26 | |         recv will return an error to signal that no more values will be coming, pp. 401 */
[INFO] [stdout]    | |__________________________________________________________________________________________^
[INFO] [stdout] 27 |       let received = rx.recv().unwrap();
[INFO] [stdout]    |       ---------------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap16/5_channel_thread_samples.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 33 | /     /** The spawned thread will now send multiple messages
[INFO] [stdout] 34 | |         and pause for a second between each message, pp. 403 */
[INFO] [stdout]    | |_______________________________________________________________^
[INFO] [stdout] 35 | /     thread::spawn(move || {
[INFO] [stdout] 36 | |         let vals = vec![
[INFO] [stdout] 37 | |             String::from("hi"),
[INFO] [stdout] 38 | |             String::from("from"),
[INFO] [stdout] ...  |
[INFO] [stdout] 49 | |     });
[INFO] [stdout]    | |______- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap16/5_channel_thread_samples.rs:42:9
[INFO] [stdout]    |
[INFO] [stdout] 42 | /         /** We iterate over them, sending each individually,
[INFO] [stdout] 43 | |             and pause between each by calling the thread::sleep function
[INFO] [stdout] 44 | |             with a Duration value of 1 second */
[INFO] [stdout]    | |________________________________________________^
[INFO] [stdout] 45 | /         for val in vals {
[INFO] [stdout] 46 | |             tx.send(val).unwrap();
[INFO] [stdout] 47 | |             thread::sleep(Duration::from_secs(1));
[INFO] [stdout] 48 | |         }
[INFO] [stdout]    | |_________- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap16/5_channel_thread_samples.rs:51:5
[INFO] [stdout]    |
[INFO] [stdout] 51 | /     /** Treating rx as an iterator
[INFO] [stdout] 52 | |         For each value received, we’re printing it.
[INFO] [stdout] 53 | |         When the channel is closed, iteration will end. */
[INFO] [stdout]    | |__________________________________________________________^
[INFO] [stdout] 54 | /     for received in rx {
[INFO] [stdout] 55 | |         println!("Got: {}", received);
[INFO] [stdout] 56 | |     }
[INFO] [stdout]    | |_____- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap16/5_channel_thread_samples.rs:61:5
[INFO] [stdout]    |
[INFO] [stdout] 61 | /     /** Use mpsc to create multiple threads that all send values to the same receiver.
[INFO] [stdout] 62 | |         We can do so by cloning the transmitting half of the channel */
[INFO] [stdout]    | |_______________________________________________________________________^
[INFO] [stdout] 63 |       let tx1 = mpsc::Sender::clone(&tx);
[INFO] [stdout]    |       ----------------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `list`
[INFO] [stdout]   --> src/bin/chap10/3_generic_trait_samples.rs:21:24
[INFO] [stdout]    |
[INFO] [stdout] 21 | fn largest_not_work<T>(list: &[T]) -> T {
[INFO] [stdout]    |                        ^^^^ help: if this is intentional, prefix it with an underscore: `_list`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `largest_not_work` is never used
[INFO] [stdout]   --> src/bin/chap10/3_generic_trait_samples.rs:21:4
[INFO] [stdout]    |
[INFO] [stdout] 21 | fn largest_not_work<T>(list: &[T]) -> T {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]  --> src/bin/chap8/4_string_samples.rs:3:9
[INFO] [stdout]   |
[INFO] [stdout] 3 |     let mut s = String::new();
[INFO] [stdout]   |         ----^
[INFO] [stdout]   |         |
[INFO] [stdout]   |         help: remove this `mut`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]  --> src/bin/chap8/4_string_samples.rs:3:9
[INFO] [stdout]   |
[INFO] [stdout] 3 |     let mut s = String::new();
[INFO] [stdout]   |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]  --> src/bin/chap8/4_string_samples.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 6 |     let s = data.to_string();
[INFO] [stdout]   |         ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]   --> src/bin/chap8/4_string_samples.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 |     let s = "initial contents".to_string();
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]   --> src/bin/chap8/4_string_samples.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 |     let s = String::from("initial contents");
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hello`
[INFO] [stdout]   --> src/bin/chap8/4_string_samples.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 18 |     let hello = String::from("السلام علیكم");
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_hello`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hello`
[INFO] [stdout]   --> src/bin/chap8/4_string_samples.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 |     let hello = String::from("Dobrý den");
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_hello`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hello`
[INFO] [stdout]   --> src/bin/chap8/4_string_samples.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 20 |     let hello = String::from("Hello");
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_hello`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hello`
[INFO] [stdout]   --> src/bin/chap8/4_string_samples.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 21 |     let hello = String::from("Здравствуйте");
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_hello`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hello`
[INFO] [stdout]   --> src/bin/chap8/4_string_samples.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 22 |     let hello = String::from("Hola");
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_hello`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]   --> src/bin/chap9/3_result_matching_samples.rs:43:9
[INFO] [stdout]    |
[INFO] [stdout] 43 |     let f = File::open("hello2.txt")
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/bin/chap15/6_ref_cycle_samples.rs:16:10
[INFO] [stdout]    |
[INFO] [stdout] 16 |     Cons(i32, RefCell<Rc<List>>),
[INFO] [stdout]    |     ---- ^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `List` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 16 -     Cons(i32, RefCell<Rc<List>>),
[INFO] [stdout] 16 +     Cons((), RefCell<Rc<List>>),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]  --> src/bin/chap9/2_result_recoverable_samples.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 |     let f = match f {
[INFO] [stdout]   |         ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]  --> src/bin/chap9/2_result_recoverable_samples.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 |     let f = match f {
[INFO] [stdout]   |         ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap15/1_box_samples.rs:60:5
[INFO] [stdout]    |
[INFO] [stdout] 60 | /     /** Compile error.
[INFO] [stdout] 61 | |         The error shows this type “has infnite size.”
[INFO] [stdout] 62 | |         The reason is that we’ve defined List with a variant that is recursive:
[INFO] [stdout] 63 | |         it holds another value of itself directly.
[INFO] [stdout] 64 | |         As a result, Rust can’t figure out how much space it needs to store a List value. */
[INFO] [stdout]    | |____________________________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 68 | /     let list: ListBox = Cons(1,
[INFO] [stdout] 69 | |                              Box::new(Cons(2,
[INFO] [stdout] 70 | |                                   Box::new(Cons(3,
[INFO] [stdout] 71 | |                                                 Box::new(Nil))))));
[INFO] [stdout]    | |___________________________________________________________________- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap15/1_box_samples.rs:75:5
[INFO] [stdout]    |
[INFO] [stdout] 75 | /     /** Following the Pointer to the Value with the Dereference Operator, pp. 354
[INFO] [stdout] 76 | |         The variable x holds an i32 value, 5.
[INFO] [stdout] 77 | |         We set y equal to a reference to x. We can assert that x is equal to 5.
[INFO] [stdout] 78 | |         However, if we want to make an assertion about the value in y,
[INFO] [stdout] 79 | |         we have to use *y to follow the reference to the value it’s pointing to (hence dereference).
[INFO] [stdout] 80 | |         Once we dereference y, we have access to the integer value y is pointing to
[INFO] [stdout] 81 | |         that we can compare with 5, pp. 355 */
[INFO] [stdout]    | |______________________________________________^
[INFO] [stdout] 82 |       let x = 5;
[INFO] [stdout]    |       ---------- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/bin/chap15/1_box_samples.rs:104:5
[INFO] [stdout]     |
[INFO] [stdout] 104 | /     /**
[INFO] [stdout] 105 | |      * Implicit Deref Coercions with Functions and Methods, pp. 359 */
[INFO] [stdout]     | |______________________________________________________________________^
[INFO] [stdout] 106 |       // call the hello function with a string slice as an argument, pp. 359
[INFO] [stdout] 107 |       hello("Rust1");
[INFO] [stdout]     |       -------------- rustdoc does not generate documentation for expressions
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `/* */` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/bin/chap15/1_box_samples.rs:115:5
[INFO] [stdout]     |
[INFO] [stdout] 115 | /     /** If Rust didn’t implement deref coercion,
[INFO] [stdout] 116 | |         we would have to write the code like below instead,
[INFO] [stdout] 117 | |         to call hello with a value of type &MyBox<String>, pp. 359
[INFO] [stdout] 118 | |     */
[INFO] [stdout]     | |______^
[INFO] [stdout] 119 |       let m = MyBox::new(String::from("Rust3"));
[INFO] [stdout]     |       ------------------------------------------ rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `/* */` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/bin/chap15/1_box_samples.rs:120:5
[INFO] [stdout]     |
[INFO] [stdout] 120 | /     /** The (*m) dereferences the MyBox<String> into a String .
[INFO] [stdout] 121 | |         Then the & and take a string slice of the String
[INFO] [stdout] 122 | |         that is equal to the whole string to match the signature of hello, pp. 360 */
[INFO] [stdout]     | |_____________________________________________________________________________________^
[INFO] [stdout] 123 |       hello(&(*m)[..]);
[INFO] [stdout]     |       ---------------- rustdoc does not generate documentation for expressions
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `/* */` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `c`
[INFO] [stdout]   --> src/bin/chap15/2_drop_samples.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 |     let c = CustomSmartPointer {
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_c`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `d`
[INFO] [stdout]   --> src/bin/chap15/2_drop_samples.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 |     let d = CustomSmartPointer {
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_d`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `c`
[INFO] [stdout]   --> src/bin/chap15/2_drop_samples.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 22 |     let c = CustomSmartPointer {
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_c`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `some_string`
[INFO] [stdout]   --> src/bin/chap4/4_reference_borrowing.rs:28:17
[INFO] [stdout]    |
[INFO] [stdout] 28 | fn change_immut(some_string: &String) {
[INFO] [stdout]    |                 ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_some_string`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_username_from_file` is never used
[INFO] [stdout]   --> src/bin/chap9/4_propagating_error.rs:12:4
[INFO] [stdout]    |
[INFO] [stdout] 12 | fn read_username_from_file() -> Result<String, io::Error> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_username_from_file2` is never used
[INFO] [stdout]   --> src/bin/chap9/4_propagating_error.rs:29:4
[INFO] [stdout]    |
[INFO] [stdout] 29 | fn read_username_from_file2() -> Result<String, io::Error> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_username_from_file3` is never used
[INFO] [stdout]   --> src/bin/chap9/4_propagating_error.rs:38:4
[INFO] [stdout]    |
[INFO] [stdout] 38 | fn read_username_from_file3() -> Result<String, io::Error> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `0` and `1` are never read
[INFO] [stdout]   --> src/bin/chap15/1_box_samples.rs:15:10
[INFO] [stdout]    |
[INFO] [stdout] 15 |     Cons(i32, Box<ListBox>),
[INFO] [stdout]    |     ---- ^^^  ^^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     fields in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ListBox` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields
[INFO] [stdout]    |
[INFO] [stdout] 15 -     Cons(i32, Box<ListBox>),
[INFO] [stdout] 15 +     Cons((), ()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `v1`
[INFO] [stdout]   --> src/bin/chap13/2_closure_samples.rs:64:9
[INFO] [stdout]    |
[INFO] [stdout] 64 |     let v1 = c.value(1); let v2 = c.value(2);
[INFO] [stdout]    |         ^^ help: if this is intentional, prefix it with an underscore: `_v1`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `some_string`
[INFO] [stdout]   --> src/bin/chap4/4_reference_borrowing.rs:28:17
[INFO] [stdout]    |
[INFO] [stdout] 28 | fn change_immut(some_string: &String) {
[INFO] [stdout]    |                 ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_some_string`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `addr1`, `addr2`, `addr3`, and `addr4` are never read
[INFO] [stdout]  --> src/bin/chap6/3_enum_sample.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | struct Ipv4Addr {
[INFO] [stdout]   |        -------- fields in this struct
[INFO] [stdout] 3 | // --snip--
[INFO] [stdout] 4 |     addr1: u8,
[INFO] [stdout]   |     ^^^^^
[INFO] [stdout] 5 |     addr2: u8,
[INFO] [stdout]   |     ^^^^^
[INFO] [stdout] 6 |     addr3: u8,
[INFO] [stdout]   |     ^^^^^
[INFO] [stdout] 7 |     addr4: u8,
[INFO] [stdout]   |     ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `Ipv4Addr` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `address` is never read
[INFO] [stdout]   --> src/bin/chap6/3_enum_sample.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | struct Ipv6Addr {
[INFO] [stdout]    |        -------- field in this struct
[INFO] [stdout] 12 | // --snip--
[INFO] [stdout] 13 |     address: String,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Ipv6Addr` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/bin/chap6/3_enum_sample.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 |     V4(Ipv4Addr),
[INFO] [stdout]    |     -- ^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `IpAddr` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 18 -     V4(Ipv4Addr),
[INFO] [stdout] 18 +     V4(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/bin/chap6/3_enum_sample.rs:19:8
[INFO] [stdout]    |
[INFO] [stdout] 19 |     V6(Ipv6Addr),
[INFO] [stdout]    |     -- ^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `IpAddr` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 19 -     V6(Ipv6Addr),
[INFO] [stdout] 19 +     V6(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]   --> src/bin/chap10/2_trait_samples.rs:57:24
[INFO] [stdout]    |
[INFO] [stdout] 57 | fn some_function<T, U>(t: &T, u: &U) -> i32
[INFO] [stdout]    |                        ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `u`
[INFO] [stdout]   --> src/bin/chap10/2_trait_samples.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 57 | fn some_function<T, U>(t: &T, u: &U) -> i32
[INFO] [stdout]    |                               ^ help: if this is intentional, prefix it with an underscore: `_u`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `some_function` is never used
[INFO] [stdout]   --> src/bin/chap10/2_trait_samples.rs:57:4
[INFO] [stdout]    |
[INFO] [stdout] 57 | fn some_function<T, U>(t: &T, u: &U) -> i32
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `kind` and `address` are never read
[INFO] [stdout]   --> src/bin/chap6/1_enum_sample.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | struct IpAddr {
[INFO] [stdout]    |        ------ fields in this struct
[INFO] [stdout]  9 |     kind: IpAddrKind,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 10 |     address: String,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `IpAddr` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]  --> src/bin/chap11/1_test_samples.rs:9:18
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub fn greeting2(name: &str) -> String {
[INFO] [stdout]   |                  ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `value` is never read
[INFO] [stdout]   --> src/bin/chap11/1_test_samples.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct Guess {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] 14 |     value: i32,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `newB` should have a snake case name
[INFO] [stdout]   --> src/bin/chap11/1_test_samples.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 24 |     pub fn newB(value: i32) -> Guess {
[INFO] [stdout]    |            ^^^^ help: convert the identifier to snake case: `new_b`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> src/bin/chap16/4_closure_thread_samples.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap16/4_closure_thread_samples.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | /     /** The closure uses v, so it will capture v and make it part of the closure’s environment.
[INFO] [stdout] 10 | |         Because thread::spawn runs this closure in a new thread,
[INFO] [stdout] 11 | |         we should be able to access v inside that new thread. */
[INFO] [stdout] 12 | |     /** Compile ERROR
[INFO] [stdout] ...  |
[INFO] [stdout] 31 | |         we force the closure to take ownership of the values it’s using
[INFO] [stdout] 32 | |         rather than allowing Rust to infer that it should borrow the values, pp. 397 */
[INFO] [stdout]    | |_______________________________________________________________________________________^
[INFO] [stdout] 33 | /     let handle: JoinHandle<()> = thread::spawn(move || {
[INFO] [stdout] 34 | |         println!("Here's a vector: {:?}", v);
[INFO] [stdout] 35 | |     });
[INFO] [stdout]    | |_______- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap16/4_closure_thread_samples.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 37 | /     /** If we added move to the closure, we would move v into the closure’s environment,
[INFO] [stdout] 38 | |         and we could no longer call drop on it in the main thread, pp. 398 */
[INFO] [stdout]    | |_____________________________________________________________________________^
[INFO] [stdout] 39 |   //    drop(v); // oh no!
[INFO] [stdout] 40 |       handle.join().unwrap();
[INFO] [stdout]    |       ---------------------- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]  --> src/bin/chap11/1_test_samples.rs:9:18
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub fn greeting2(name: &str) -> String {
[INFO] [stdout]   |                  ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `s2` is never read
[INFO] [stdout]  --> src/bin/chap4/1_variable_scope.rs:7:18
[INFO] [stdout]   |
[INFO] [stdout] 7 |     let mut s2 = "hello world!";
[INFO] [stdout]   |                  ^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] 8 |     s2 = "hi world!";
[INFO] [stdout]   |     ---------------- `s2` is overwritten here before the previous value is read
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `value` is never read
[INFO] [stdout]   --> src/bin/chap11/1_test_samples.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct Guess {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] 14 |     value: i32,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `newB` should have a snake case name
[INFO] [stdout]   --> src/bin/chap11/1_test_samples.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 24 |     pub fn newB(value: i32) -> Guess {
[INFO] [stdout]    |            ^^^^ help: convert the identifier to snake case: `new_b`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `greater_than_100B` should have a snake case name
[INFO] [stdout]   --> src/bin/chap11/1_test_samples.rs:81:8
[INFO] [stdout]    |
[INFO] [stdout] 81 |     fn greater_than_100B() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `greater_than_100_b`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap4/5_mut_immut_references.rs:6:5
[INFO] [stdout]    |
[INFO] [stdout]  6 | /     /**
[INFO] [stdout]  7 | |     * you can have only one mutable reference
[INFO] [stdout]  8 | |     * to a particular piece of data in a particular scope
[INFO] [stdout]  9 | |     *
[INFO] [stdout] 10 | |     * Code below will fail
[INFO] [stdout] 11 | |     */
[INFO] [stdout]    | |______^ rustdoc does not generate documentation for macro invocations
[INFO] [stdout]    |
[INFO] [stdout]    = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion
[INFO] [stdout]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/bin/chap4/5_mut_immut_references.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 28 |     let mut s = String::from("hello");
[INFO] [stdout]    |         ----^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `r1`
[INFO] [stdout]   --> src/bin/chap4/5_mut_immut_references.rs:19:13
[INFO] [stdout]    |
[INFO] [stdout] 19 |         let r1 = &mut s;
[INFO] [stdout]    |             ^^ help: if this is intentional, prefix it with an underscore: `_r1`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::rc::Rc`
[INFO] [stdout]  --> src/bin/chap16/6_mutex_samples.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::rc::Rc;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap16/6_mutex_samples.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | /     /** Mutex<T> is smart pointer.
[INFO] [stdout] 21 | |         The call to lock returns a MutexGuard wrapped in a LockResult
[INFO] [stdout] 22 | |         that we handled with the call to unwrap.
[INFO] [stdout] ...  |
[INFO] [stdout] 29 | |         blocking the mutex from being used by other threads
[INFO] [stdout] 30 | |         because the lock release happens automatically, pp. 408 */
[INFO] [stdout]    | |__________________________________________________________________^ rustdoc does not generate documentation for macro invocations
[INFO] [stdout]    |
[INFO] [stdout]    = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion
[INFO] [stdout]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap16/6_mutex_samples.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 34 | /      /** Sharing a Mutex<T> Between Multiple Threads, pp. 408 */
[INFO] [stdout] 35 | |      /** Compile Error
[INFO] [stdout] 36 | |          The error message states that the counter value was moved
[INFO] [stdout] 37 | |          in the previous iteration of the loop.
[INFO] [stdout] ...  |
[INFO] [stdout] 56 | |/     /**
[INFO] [stdout] 57 | ||         let counter = Rc::clone(&counter);
[INFO] [stdout] 58 | ||
[INFO] [stdout] 59 | ||         let mut handles = vec![];
[INFO] [stdout] ...  ||
[INFO] [stdout] 71 | ||         println!("Result: {}", *counter.lock().unwrap());
[INFO] [stdout] 72 | ||     */
[INFO] [stdout]    | ||______^
[INFO] [stdout]    |  |______|
[INFO] [stdout]    |         rustdoc does not generate documentation for macro invocations
[INFO] [stdout]    |
[INFO] [stdout]    = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap16/6_mutex_samples.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | /         /** To access the data inside the mutex, we use the method to acquire the lock.
[INFO] [stdout] 11 | |             This call will block the current thread so it can’t do any work
[INFO] [stdout] 12 | |             until it’s our turn to have the lock.
[INFO] [stdout] ...  |
[INFO] [stdout] 15 | |             In that case, no one would ever be able to get the lock,
[INFO] [stdout] 16 | |             so we’ve chosen to unwrap and have this thread panic in that situation, pp. 407 */
[INFO] [stdout]    | |______________________________________________________________________________________________^
[INFO] [stdout] 17 |           let mut num: MutexGuard<i32> = m.lock().unwrap();
[INFO] [stdout]    |           ------------------------------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Counter` is never constructed
[INFO] [stdout]  --> src/bin/chap13/6_create_own_iter_samples.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | struct Counter {
[INFO] [stdout]   |        ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]  --> src/bin/chap13/6_create_own_iter_samples.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | impl Counter {
[INFO] [stdout]   | ------------ associated function in this implementation
[INFO] [stdout] 6 |     fn new() -> Counter {
[INFO] [stdout]   |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> src/bin/chap16/4_closure_thread_samples.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap16/4_closure_thread_samples.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | /     /** The closure uses v, so it will capture v and make it part of the closure’s environment.
[INFO] [stdout] 10 | |         Because thread::spawn runs this closure in a new thread,
[INFO] [stdout] 11 | |         we should be able to access v inside that new thread. */
[INFO] [stdout] 12 | |     /** Compile ERROR
[INFO] [stdout] ...  |
[INFO] [stdout] 31 | |         we force the closure to take ownership of the values it’s using
[INFO] [stdout] 32 | |         rather than allowing Rust to infer that it should borrow the values, pp. 397 */
[INFO] [stdout]    | |_______________________________________________________________________________________^
[INFO] [stdout] 33 | /     let handle: JoinHandle<()> = thread::spawn(move || {
[INFO] [stdout] 34 | |         println!("Here's a vector: {:?}", v);
[INFO] [stdout] 35 | |     });
[INFO] [stdout]    | |_______- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap16/4_closure_thread_samples.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 37 | /     /** If we added move to the closure, we would move v into the closure’s environment,
[INFO] [stdout] 38 | |         and we could no longer call drop on it in the main thread, pp. 398 */
[INFO] [stdout]    | |_____________________________________________________________________________^
[INFO] [stdout] 39 |   //    drop(v); // oh no!
[INFO] [stdout] 40 |       handle.join().unwrap();
[INFO] [stdout]    |       ---------------------- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]  --> src/bin/chap8/2_vec_immut_ref.rs:4:9
[INFO] [stdout]   |
[INFO] [stdout] 4 |     let mut v = vec![1, 2, 3, 4, 5];
[INFO] [stdout]   |         ----^
[INFO] [stdout]   |         |
[INFO] [stdout]   |         help: remove this `mut`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap16/3_thread_samples.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | /     /** The main thread will wait for the spawned thread to finish and
[INFO] [stdout] 14 | |         then run its for loop, so the output won’t be interleaved anymore, pp. 394 */
[INFO] [stdout]    | |_____________________________________________________________________________________^
[INFO] [stdout] 15 |       handle.join().unwrap();
[INFO] [stdout]    |       ---------------------- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `y` is never read
[INFO] [stdout]  --> src/bin/chap10/1_generic_samples.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | struct Point<T> {
[INFO] [stdout]   |        ----- field in this struct
[INFO] [stdout] 3 |     x: T,
[INFO] [stdout] 4 |     y: T,
[INFO] [stdout]   |     ^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `Point` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `distance_from_origin` is never used
[INFO] [stdout]   --> src/bin/chap10/1_generic_samples.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl Point<f32> {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] 12 |     fn distance_from_origin(&self) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap15/6_ref_cycle_samples.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 31 |     /** We create an Rc<List> instance holding a List value in the variable a with an initial list of 5, Nil. */
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 32 |     let a: Rc<List> = Rc::new(Cons(5,RefCell::new(Rc::new(Nil))));
[INFO] [stdout]    |     -------------------------------------------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap15/6_ref_cycle_samples.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 | /     /** We then create an Rc<List> instance holding another List value in the variable b
[INFO] [stdout] 37 | |         that contains the value 10 and points to the list in a, pp. 381 */
[INFO] [stdout]    | |__________________________________________________________________________^
[INFO] [stdout] 38 |       let b: Rc<List> = Rc::new(Cons(10,RefCell::new(Rc::clone(&a))));
[INFO] [stdout]    |       ---------------------------------------------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap15/6_ref_cycle_samples.rs:43:5
[INFO] [stdout]    |
[INFO] [stdout] 43 | /     /** We modify a so it points to b instead of Nil, creating a cycle.
[INFO] [stdout] 44 | |         We do that by using the tail method to get a reference to the RefCell<Rc<List>>.
[INFO] [stdout] 45 | |         Then we use the borrow_mut method on the RefCell<Rc<List>> to change the value inside from an Rc<List>
[INFO] [stdout] 46 | |         that holds a Nil value to the Rc<List> in b, pp. 381 */
[INFO] [stdout]    | |_______________________________________________________________^
[INFO] [stdout] 47 | /     if let Some(link) = a.tail() {
[INFO] [stdout] 48 | |         *link.borrow_mut() = Rc::clone(&b);
[INFO] [stdout] 49 | |     }
[INFO] [stdout]    | |_____- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/bin/chap15/6_ref_cycle_samples.rs:16:10
[INFO] [stdout]    |
[INFO] [stdout] 16 |     Cons(i32, RefCell<Rc<List>>),
[INFO] [stdout]    |     ---- ^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `List` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 16 -     Cons(i32, RefCell<Rc<List>>),
[INFO] [stdout] 16 +     Cons((), RefCell<Rc<List>>),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/bin/chap8/3_vec_iter.rs:26:13
[INFO] [stdout]    |
[INFO] [stdout] 26 |         Int(i32),
[INFO] [stdout]    |         --- ^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SpreadsheetCell` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 26 -         Int(i32),
[INFO] [stdout] 26 +         Int(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/bin/chap8/3_vec_iter.rs:27:15
[INFO] [stdout]    |
[INFO] [stdout] 27 |         Float(f64),
[INFO] [stdout]    |         ----- ^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SpreadsheetCell` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 27 -         Float(f64),
[INFO] [stdout] 27 +         Float(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/bin/chap8/3_vec_iter.rs:28:14
[INFO] [stdout]    |
[INFO] [stdout] 28 |         Text(String),
[INFO] [stdout]    |         ---- ^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SpreadsheetCell` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 28 -         Text(String),
[INFO] [stdout] 28 +         Text(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]   --> src/bin/chap9/3_result_matching_samples.rs:43:9
[INFO] [stdout]    |
[INFO] [stdout] 43 |     let f = File::open("hello2.txt")
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap15/7_rc_weak_samples.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 40 | /     /** The lack of infinite output indicates that this code didn’t create a reference cycle.
[INFO] [stdout] 41 | |         We can also tell this by looking at the values we get from calling Rc::strong_count and Rc::weak_count */
[INFO] [stdout]    | |_________________________________________________________________________________________________________________^ rustdoc does not generate documentation for macro invocations
[INFO] [stdout]    |
[INFO] [stdout]    = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion
[INFO] [stdout]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap15/7_rc_weak_samples.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |       /** leaf starts out without a parent, so we create a new, empty Weak<Node> reference instance, pp. 386 */
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 17 | /     let leaf = Rc::new(Node {
[INFO] [stdout] 18 | |         value: 3,
[INFO] [stdout] 19 | |         parent: RefCell::new(Weak::new()),
[INFO] [stdout] 20 | |         children: RefCell::new(vec![]),
[INFO] [stdout] 21 | |     });
[INFO] [stdout]    | |_______- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap15/7_rc_weak_samples.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 46 |       /** in an inner scope and examining strong and weak reference counts, pp. 388 */
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 47 | /     let leaf = Rc::new(Node {
[INFO] [stdout] 48 | |         value: 3,
[INFO] [stdout] 49 | |         parent: RefCell::new(Weak::new()),
[INFO] [stdout] 50 | |         children: RefCell::new(vec![]),
[INFO] [stdout] 51 | |     });
[INFO] [stdout]    | |_______- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `word`
[INFO] [stdout]  --> src/bin/chap4/7_string_slices.rs:3:9
[INFO] [stdout]   |
[INFO] [stdout] 3 |     let word = first_word(&s); // word will get the value 5
[INFO] [stdout]   |         ^^^^ help: if this is intentional, prefix it with an underscore: `_word`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]  --> src/bin/chap8/2_vec_immut_ref.rs:4:9
[INFO] [stdout]   |
[INFO] [stdout] 4 |     let mut v = vec![1, 2, 3, 4, 5];
[INFO] [stdout]   |         ----^
[INFO] [stdout]   |         |
[INFO] [stdout]   |         help: remove this `mut`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `value` and `children` are never read
[INFO] [stdout]   --> src/bin/chap15/7_rc_weak_samples.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | struct Node {
[INFO] [stdout]    |        ---- fields in this struct
[INFO] [stdout] 10 |     value: i32,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 11 |     parent: RefCell<Weak<Node>>,
[INFO] [stdout] 12 |     children: RefCell<Vec<Rc<Node>>>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Node` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::rc::Rc`
[INFO] [stdout]  --> src/bin/chap16/6_mutex_samples.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::rc::Rc;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap16/6_mutex_samples.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | /     /** Mutex<T> is smart pointer.
[INFO] [stdout] 21 | |         The call to lock returns a MutexGuard wrapped in a LockResult
[INFO] [stdout] 22 | |         that we handled with the call to unwrap.
[INFO] [stdout] ...  |
[INFO] [stdout] 29 | |         blocking the mutex from being used by other threads
[INFO] [stdout] 30 | |         because the lock release happens automatically, pp. 408 */
[INFO] [stdout]    | |__________________________________________________________________^ rustdoc does not generate documentation for macro invocations
[INFO] [stdout]    |
[INFO] [stdout]    = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion
[INFO] [stdout]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap16/6_mutex_samples.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 34 | /      /** Sharing a Mutex<T> Between Multiple Threads, pp. 408 */
[INFO] [stdout] 35 | |      /** Compile Error
[INFO] [stdout] 36 | |          The error message states that the counter value was moved
[INFO] [stdout] 37 | |          in the previous iteration of the loop.
[INFO] [stdout] ...  |
[INFO] [stdout] 56 | |/     /**
[INFO] [stdout] 57 | ||         let counter = Rc::clone(&counter);
[INFO] [stdout] 58 | ||
[INFO] [stdout] 59 | ||         let mut handles = vec![];
[INFO] [stdout] ...  ||
[INFO] [stdout] 71 | ||         println!("Result: {}", *counter.lock().unwrap());
[INFO] [stdout] 72 | ||     */
[INFO] [stdout]    | ||______^
[INFO] [stdout]    |  |______|
[INFO] [stdout]    |         rustdoc does not generate documentation for macro invocations
[INFO] [stdout]    |
[INFO] [stdout]    = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap16/6_mutex_samples.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | /         /** To access the data inside the mutex, we use the method to acquire the lock.
[INFO] [stdout] 11 | |             This call will block the current thread so it can’t do any work
[INFO] [stdout] 12 | |             until it’s our turn to have the lock.
[INFO] [stdout] ...  |
[INFO] [stdout] 15 | |             In that case, no one would ever be able to get the lock,
[INFO] [stdout] 16 | |             so we’ve chosen to unwrap and have this thread panic in that situation, pp. 407 */
[INFO] [stdout]    | |______________________________________________________________________________________________^
[INFO] [stdout] 17 |           let mut num: MutexGuard<i32> = m.lock().unwrap();
[INFO] [stdout]    |           ------------------------------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap15/1_box_samples.rs:60:5
[INFO] [stdout]    |
[INFO] [stdout] 60 | /     /** Compile error.
[INFO] [stdout] 61 | |         The error shows this type “has infnite size.”
[INFO] [stdout] 62 | |         The reason is that we’ve defined List with a variant that is recursive:
[INFO] [stdout] 63 | |         it holds another value of itself directly.
[INFO] [stdout] 64 | |         As a result, Rust can’t figure out how much space it needs to store a List value. */
[INFO] [stdout]    | |____________________________________________________________________________________________^
[INFO] [stdout] ...
[INFO] [stdout] 68 | /     let list: ListBox = Cons(1,
[INFO] [stdout] 69 | |                              Box::new(Cons(2,
[INFO] [stdout] 70 | |                                   Box::new(Cons(3,
[INFO] [stdout] 71 | |                                                 Box::new(Nil))))));
[INFO] [stdout]    | |___________________________________________________________________- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap15/1_box_samples.rs:75:5
[INFO] [stdout]    |
[INFO] [stdout] 75 | /     /** Following the Pointer to the Value with the Dereference Operator, pp. 354
[INFO] [stdout] 76 | |         The variable x holds an i32 value, 5.
[INFO] [stdout] 77 | |         We set y equal to a reference to x. We can assert that x is equal to 5.
[INFO] [stdout] 78 | |         However, if we want to make an assertion about the value in y,
[INFO] [stdout] 79 | |         we have to use *y to follow the reference to the value it’s pointing to (hence dereference).
[INFO] [stdout] 80 | |         Once we dereference y, we have access to the integer value y is pointing to
[INFO] [stdout] 81 | |         that we can compare with 5, pp. 355 */
[INFO] [stdout]    | |______________________________________________^
[INFO] [stdout] 82 |       let x = 5;
[INFO] [stdout]    |       ---------- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/bin/chap15/1_box_samples.rs:104:5
[INFO] [stdout]     |
[INFO] [stdout] 104 | /     /**
[INFO] [stdout] 105 | |      * Implicit Deref Coercions with Functions and Methods, pp. 359 */
[INFO] [stdout]     | |______________________________________________________________________^
[INFO] [stdout] 106 |       // call the hello function with a string slice as an argument, pp. 359
[INFO] [stdout] 107 |       hello("Rust1");
[INFO] [stdout]     |       -------------- rustdoc does not generate documentation for expressions
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `/* */` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `kind` and `address` are never read
[INFO] [stdout]   --> src/bin/chap6/1_enum_sample.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | struct IpAddr {
[INFO] [stdout]    |        ------ fields in this struct
[INFO] [stdout]  9 |     kind: IpAddrKind,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 10 |     address: String,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `IpAddr` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/bin/chap10/4_generic_trait_samples.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl<T> Pair<T> {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] 10 |     fn new(x: T, y: T) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `0` and `1` are never read
[INFO] [stdout]  --> src/bin/chap15/5_rc_refcell_samples.rs:8:10
[INFO] [stdout]   |
[INFO] [stdout] 8 |     Cons(Rc<RefCell<i32>>, Rc<List>),
[INFO] [stdout]   |     ---- ^^^^^^^^^^^^^^^^  ^^^^^^^^
[INFO] [stdout]   |     |
[INFO] [stdout]   |     fields in this variant
[INFO] [stdout]   |
[INFO] [stdout]   = note: `List` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields
[INFO] [stdout]   |
[INFO] [stdout] 8 -     Cons(Rc<RefCell<i32>>, Rc<List>),
[INFO] [stdout] 8 +     Cons((), ()),
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/bin/chap15/1_box_samples.rs:115:5
[INFO] [stdout]     |
[INFO] [stdout] 115 | /     /** If Rust didn’t implement deref coercion,
[INFO] [stdout] 116 | |         we would have to write the code like below instead,
[INFO] [stdout] 117 | |         to call hello with a value of type &MyBox<String>, pp. 359
[INFO] [stdout] 118 | |     */
[INFO] [stdout]     | |______^
[INFO] [stdout] 119 |       let m = MyBox::new(String::from("Rust3"));
[INFO] [stdout]     |       ------------------------------------------ rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `/* */` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/bin/chap15/1_box_samples.rs:120:5
[INFO] [stdout]     |
[INFO] [stdout] 120 | /     /** The (*m) dereferences the MyBox<String> into a String .
[INFO] [stdout] 121 | |         Then the & and take a string slice of the String
[INFO] [stdout] 122 | |         that is equal to the whole string to match the signature of hello, pp. 360 */
[INFO] [stdout]     | |_____________________________________________________________________________________^
[INFO] [stdout] 123 |       hello(&(*m)[..]);
[INFO] [stdout]     |       ---------------- rustdoc does not generate documentation for expressions
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `/* */` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap15/4_refcell_samples.rs:76:13
[INFO] [stdout]    |
[INFO] [stdout] 76 | /             /** We can’t modify the to keep track of the messages,
[INFO] [stdout] 77 | |                 because the send method takes an immutable reference to self, pp. 374. */
[INFO] [stdout] ...  |
[INFO] [stdout] 82 | |                 Then we can call push on the mutable reference to the vector
[INFO] [stdout] 83 | |                 to keep track of the messages sent during the test, pp. 375 */
[INFO] [stdout]    | |______________________________________________________________________________^
[INFO] [stdout] 84 |               let mut one_borrow: RefMut<Vec<String>> = self.sent_messages.borrow_mut();
[INFO] [stdout]    |               -------------------------------------------------------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `List_Box` should have an upper camel case name
[INFO] [stdout]  --> src/bin/chap15/3_rc_samples.rs:2:6
[INFO] [stdout]   |
[INFO] [stdout] 2 | enum List_Box {
[INFO] [stdout]   |      ^^^^^^^^ help: convert the identifier to upper camel case: `ListBox`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap15/3_rc_samples.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | /     /** The Cons variants own the data they hold, so when we create the b list,
[INFO] [stdout] 22 | |         a is moved into b and b owns a. Then, when we try to use a again when creating c,
[INFO] [stdout] 23 | |         we’re not allowed to because a has been moved, pp. 366
[INFO] [stdout] 24 | |     */
[INFO] [stdout]    | |______^ rustdoc does not generate documentation for macro invocations
[INFO] [stdout]    |
[INFO] [stdout]    = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion
[INFO] [stdout]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap15/3_rc_samples.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |       /** Box<T> allows immutable or mutable borrows checked at compile time, pp. 370 */
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 17 | /     let a = List_Box::Cons(5,
[INFO] [stdout] 18 | |                            Box::new(List_Box::Cons(10,
[INFO] [stdout] 19 | |                                                    Box::new(List_Box::Nil))));
[INFO] [stdout]    | |______________________________________________________________________________- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap15/3_rc_samples.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | /     /** pp 370
[INFO] [stdout] 30 | |         - Rc<T> ENABLES MULTIPLE OWNERS of the same data,
[INFO] [stdout] 31 | |           while Box<T> and RefCell<T> have single owners
[INFO] [stdout] 32 | |         - Rc<T> allows only IMMUTABLE borrows checked at compile time
[INFO] [stdout] 33 | |         */
[INFO] [stdout]    | |__________^
[INFO] [stdout] 34 | /     let a: Rc<List> = Rc::new(List::Cons(5,
[INFO] [stdout] 35 | |                                          Rc::new(List::Cons(10,
[INFO] [stdout] 36 | |                                                   Rc::new(List::Nil)))));
[INFO] [stdout]    | |_________________________________________________________________________- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap15/3_rc_samples.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 37 | /     /** The implementation of Rc::clone doesn’t make a deep copy of all the data
[INFO] [stdout] 38 | |         like most types’ implementations of clone do.
[INFO] [stdout] 39 | |         The call to Rc::clone only increments the reference count, which doesn’t take much time.
[INFO] [stdout] 40 | |         Deep copies of data can take a lot of time, pp. 367 */
[INFO] [stdout]    | |______________________________________________________________^
[INFO] [stdout] 41 |       let b = List::Cons(3, Rc::clone(&a));
[INFO] [stdout]    |       ------------------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap15/3_rc_samples.rs:48:5
[INFO] [stdout]    |
[INFO] [stdout] 48 |       /** Printing the reference count, pp. 368 */
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 49 | /     let a = Rc::new(List::Cons(5,
[INFO] [stdout] 50 | |                                Rc::new(List::Cons(10,
[INFO] [stdout] 51 | |                                                   Rc::new(List::Nil)))));
[INFO] [stdout]    | |_________________________________________________________________________- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `0` and `1` are never read
[INFO] [stdout]  --> src/bin/chap15/5_rc_refcell_samples.rs:8:10
[INFO] [stdout]   |
[INFO] [stdout] 8 |     Cons(Rc<RefCell<i32>>, Rc<List>),
[INFO] [stdout]   |     ---- ^^^^^^^^^^^^^^^^  ^^^^^^^^
[INFO] [stdout]   |     |
[INFO] [stdout]   |     fields in this variant
[INFO] [stdout]   |
[INFO] [stdout]   = note: `List` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields
[INFO] [stdout]   |
[INFO] [stdout] 8 -     Cons(Rc<RefCell<i32>>, Rc<List>),
[INFO] [stdout] 8 +     Cons((), ()),
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/bin/chap10/4_generic_trait_samples.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl<T> Pair<T> {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] 10 |     fn new(x: T, y: T) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `b`
[INFO] [stdout]   --> src/bin/chap15/3_rc_samples.rs:53:9
[INFO] [stdout]    |
[INFO] [stdout] 53 |     let b = List::Cons(3, Rc::clone(&a));
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_b`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `c`
[INFO] [stdout]   --> src/bin/chap15/3_rc_samples.rs:56:13
[INFO] [stdout]    |
[INFO] [stdout] 56 |         let c = List::Cons(4, Rc::clone(&a));
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_c`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `0` and `1` are never read
[INFO] [stdout]  --> src/bin/chap15/3_rc_samples.rs:3:10
[INFO] [stdout]   |
[INFO] [stdout] 3 |     Cons(i32, Box<List_Box>),
[INFO] [stdout]   |     ---- ^^^  ^^^^^^^^^^^^^
[INFO] [stdout]   |     |
[INFO] [stdout]   |     fields in this variant
[INFO] [stdout]   |
[INFO] [stdout]   = note: `List_Box` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields
[INFO] [stdout]   |
[INFO] [stdout] 3 -     Cons(i32, Box<List_Box>),
[INFO] [stdout] 3 +     Cons((), ()),
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `0` and `1` are never read
[INFO] [stdout]  --> src/bin/chap15/3_rc_samples.rs:9:10
[INFO] [stdout]   |
[INFO] [stdout] 9 |     Cons(i32, Rc<List>),
[INFO] [stdout]   |     ---- ^^^  ^^^^^^^^
[INFO] [stdout]   |     |
[INFO] [stdout]   |     fields in this variant
[INFO] [stdout]   |
[INFO] [stdout]   = note: `List` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields
[INFO] [stdout]   |
[INFO] [stdout] 9 -     Cons(i32, Rc<List>),
[INFO] [stdout] 9 +     Cons((), ()),
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]  --> src/bin/chap8/4_string_samples.rs:3:9
[INFO] [stdout]   |
[INFO] [stdout] 3 |     let mut s = String::new();
[INFO] [stdout]   |         ----^
[INFO] [stdout]   |         |
[INFO] [stdout]   |         help: remove this `mut`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]  --> src/bin/chap8/4_string_samples.rs:3:9
[INFO] [stdout]   |
[INFO] [stdout] 3 |     let mut s = String::new();
[INFO] [stdout]   |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]  --> src/bin/chap8/4_string_samples.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 6 |     let s = data.to_string();
[INFO] [stdout]   |         ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]   --> src/bin/chap8/4_string_samples.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 |     let s = "initial contents".to_string();
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]   --> src/bin/chap8/4_string_samples.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 |     let s = String::from("initial contents");
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hello`
[INFO] [stdout]   --> src/bin/chap8/4_string_samples.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 18 |     let hello = String::from("السلام علیكم");
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_hello`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hello`
[INFO] [stdout]   --> src/bin/chap8/4_string_samples.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 |     let hello = String::from("Dobrý den");
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_hello`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hello`
[INFO] [stdout]   --> src/bin/chap8/4_string_samples.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 20 |     let hello = String::from("Hello");
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_hello`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hello`
[INFO] [stdout]   --> src/bin/chap8/4_string_samples.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 21 |     let hello = String::from("Здравствуйте");
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_hello`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hello`
[INFO] [stdout]   --> src/bin/chap8/4_string_samples.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 22 |     let hello = String::from("Hola");
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_hello`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap16/2_thread_samples.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | /     /** Calling join on the handle blocks the thread currently running
[INFO] [stdout] 19 | |         until the thread represented by the handle terminates.
[INFO] [stdout] 20 | |         Blocking a thread means that thread is prevented from performing work or exiting.
[INFO] [stdout] ...  |
[INFO] [stdout] 23 | |         but the main thread waits because of the call to handle.join() and
[INFO] [stdout] 24 | |         does not end until the spawned thread is ␀nished., pp. 393 */
[INFO] [stdout]    | |_____________________________________________________________________^
[INFO] [stdout] 25 |       handle.join().unwrap();
[INFO] [stdout]    |       ---------------------- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `List_Box` should have an upper camel case name
[INFO] [stdout]  --> src/bin/chap15/3_rc_samples.rs:2:6
[INFO] [stdout]   |
[INFO] [stdout] 2 | enum List_Box {
[INFO] [stdout]   |      ^^^^^^^^ help: convert the identifier to upper camel case: `ListBox`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap15/3_rc_samples.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | /     /** The Cons variants own the data they hold, so when we create the b list,
[INFO] [stdout] 22 | |         a is moved into b and b owns a. Then, when we try to use a again when creating c,
[INFO] [stdout] 23 | |         we’re not allowed to because a has been moved, pp. 366
[INFO] [stdout] 24 | |     */
[INFO] [stdout]    | |______^ rustdoc does not generate documentation for macro invocations
[INFO] [stdout]    |
[INFO] [stdout]    = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion
[INFO] [stdout]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap15/3_rc_samples.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |       /** Box<T> allows immutable or mutable borrows checked at compile time, pp. 370 */
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 17 | /     let a = List_Box::Cons(5,
[INFO] [stdout] 18 | |                            Box::new(List_Box::Cons(10,
[INFO] [stdout] 19 | |                                                    Box::new(List_Box::Nil))));
[INFO] [stdout]    | |______________________________________________________________________________- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap15/3_rc_samples.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | /     /** pp 370
[INFO] [stdout] 30 | |         - Rc<T> ENABLES MULTIPLE OWNERS of the same data,
[INFO] [stdout] 31 | |           while Box<T> and RefCell<T> have single owners
[INFO] [stdout] 32 | |         - Rc<T> allows only IMMUTABLE borrows checked at compile time
[INFO] [stdout] 33 | |         */
[INFO] [stdout]    | |__________^
[INFO] [stdout] 34 | /     let a: Rc<List> = Rc::new(List::Cons(5,
[INFO] [stdout] 35 | |                                          Rc::new(List::Cons(10,
[INFO] [stdout] 36 | |                                                   Rc::new(List::Nil)))));
[INFO] [stdout]    | |_________________________________________________________________________- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap15/3_rc_samples.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 37 | /     /** The implementation of Rc::clone doesn’t make a deep copy of all the data
[INFO] [stdout] 38 | |         like most types’ implementations of clone do.
[INFO] [stdout] 39 | |         The call to Rc::clone only increments the reference count, which doesn’t take much time.
[INFO] [stdout] 40 | |         Deep copies of data can take a lot of time, pp. 367 */
[INFO] [stdout]    | |______________________________________________________________^
[INFO] [stdout] 41 |       let b = List::Cons(3, Rc::clone(&a));
[INFO] [stdout]    |       ------------------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap15/3_rc_samples.rs:48:5
[INFO] [stdout]    |
[INFO] [stdout] 48 |       /** Printing the reference count, pp. 368 */
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 49 | /     let a = Rc::new(List::Cons(5,
[INFO] [stdout] 50 | |                                Rc::new(List::Cons(10,
[INFO] [stdout] 51 | |                                                   Rc::new(List::Nil)))));
[INFO] [stdout]    | |_________________________________________________________________________- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `s2` is never read
[INFO] [stdout]  --> src/bin/chap4/1_variable_scope.rs:7:18
[INFO] [stdout]   |
[INFO] [stdout] 7 |     let mut s2 = "hello world!";
[INFO] [stdout]   |                  ^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] 8 |     s2 = "hi world!";
[INFO] [stdout]   |     ---------------- `s2` is overwritten here before the previous value is read
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `b`
[INFO] [stdout]   --> src/bin/chap15/3_rc_samples.rs:53:9
[INFO] [stdout]    |
[INFO] [stdout] 53 |     let b = List::Cons(3, Rc::clone(&a));
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_b`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `c`
[INFO] [stdout]   --> src/bin/chap15/3_rc_samples.rs:56:13
[INFO] [stdout]    |
[INFO] [stdout] 56 |         let c = List::Cons(4, Rc::clone(&a));
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_c`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `0` and `1` are never read
[INFO] [stdout]  --> src/bin/chap15/3_rc_samples.rs:3:10
[INFO] [stdout]   |
[INFO] [stdout] 3 |     Cons(i32, Box<List_Box>),
[INFO] [stdout]   |     ---- ^^^  ^^^^^^^^^^^^^
[INFO] [stdout]   |     |
[INFO] [stdout]   |     fields in this variant
[INFO] [stdout]   |
[INFO] [stdout]   = note: `List_Box` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields
[INFO] [stdout]   |
[INFO] [stdout] 3 -     Cons(i32, Box<List_Box>),
[INFO] [stdout] 3 +     Cons((), ()),
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `0` and `1` are never read
[INFO] [stdout]  --> src/bin/chap15/3_rc_samples.rs:9:10
[INFO] [stdout]   |
[INFO] [stdout] 9 |     Cons(i32, Rc<List>),
[INFO] [stdout]   |     ---- ^^^  ^^^^^^^^
[INFO] [stdout]   |     |
[INFO] [stdout]   |     fields in this variant
[INFO] [stdout]   |
[INFO] [stdout]   = note: `List` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields
[INFO] [stdout]   |
[INFO] [stdout] 9 -     Cons(i32, Rc<List>),
[INFO] [stdout] 9 +     Cons((), ()),
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/bin/chap15/4_refcell_samples.rs:18:27
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub fn new(messenger: &T, max: usize) -> LimitTracker<T> {
[INFO] [stdout]    |                           ^^                 ^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                           |
[INFO] [stdout]    |                           the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub fn new(messenger: &T, max: usize) -> LimitTracker<'_, T> {
[INFO] [stdout]    |                                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap15/7_rc_weak_samples.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 40 | /     /** The lack of infinite output indicates that this code didn’t create a reference cycle.
[INFO] [stdout] 41 | |         We can also tell this by looking at the values we get from calling Rc::strong_count and Rc::weak_count */
[INFO] [stdout]    | |_________________________________________________________________________________________________________________^ rustdoc does not generate documentation for macro invocations
[INFO] [stdout]    |
[INFO] [stdout]    = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion
[INFO] [stdout]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap15/7_rc_weak_samples.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |       /** leaf starts out without a parent, so we create a new, empty Weak<Node> reference instance, pp. 386 */
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 17 | /     let leaf = Rc::new(Node {
[INFO] [stdout] 18 | |         value: 3,
[INFO] [stdout] 19 | |         parent: RefCell::new(Weak::new()),
[INFO] [stdout] 20 | |         children: RefCell::new(vec![]),
[INFO] [stdout] 21 | |     });
[INFO] [stdout]    | |_______- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap15/7_rc_weak_samples.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 46 |       /** in an inner scope and examining strong and weak reference counts, pp. 388 */
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 47 | /     let leaf = Rc::new(Node {
[INFO] [stdout] 48 | |         value: 3,
[INFO] [stdout] 49 | |         parent: RefCell::new(Weak::new()),
[INFO] [stdout] 50 | |         children: RefCell::new(vec![]),
[INFO] [stdout] 51 | |     });
[INFO] [stdout]    | |_______- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `/* */` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `0` and `1` are never read
[INFO] [stdout]   --> src/bin/chap15/1_box_samples.rs:15:10
[INFO] [stdout]    |
[INFO] [stdout] 15 |     Cons(i32, Box<ListBox>),
[INFO] [stdout]    |     ---- ^^^  ^^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     fields in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ListBox` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields
[INFO] [stdout]    |
[INFO] [stdout] 15 -     Cons(i32, Box<ListBox>),
[INFO] [stdout] 15 +     Cons((), ()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `value` and `children` are never read
[INFO] [stdout]   --> src/bin/chap15/7_rc_weak_samples.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | struct Node {
[INFO] [stdout]    |        ---- fields in this struct
[INFO] [stdout] 10 |     value: i32,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 11 |     parent: RefCell<Weak<Node>>,
[INFO] [stdout] 12 |     children: RefCell<Vec<Rc<Node>>>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Node` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2.07s
[INFO] running `Command { std: "docker" "inspect" "563d763b3a44a7d4d36a450693cec9be3b53dfdece65e9573f465e0cde51619f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "563d763b3a44a7d4d36a450693cec9be3b53dfdece65e9573f465e0cde51619f", kill_on_drop: false }`
[INFO] [stdout] 563d763b3a44a7d4d36a450693cec9be3b53dfdece65e9573f465e0cde51619f
