[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] testing tokiwadai/rust_prog_lang against master#2fd6efc32704647e64d3d646d21c4c68eae100e4 for pr-149852-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftokiwadai%2Frust_prog_lang" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/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-6-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/tokiwadai/rust_prog_lang on toolchain 2fd6efc32704647e64d3d646d21c4c68eae100e4
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "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" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/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:98afbf2d16093dec2546ff8915fddc74e65664aa03fc460b3712b1c2c54a33e4" "/opt/rustwide/cargo-home/bin/cargo" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 2335d9b96070c8e2946c5f8b184739bbfe051c89403f1088548fb01ff46db392
[INFO] running `Command { std: "docker" "start" "-a" "2335d9b96070c8e2946c5f8b184739bbfe051c89403f1088548fb01ff46db392", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "2335d9b96070c8e2946c5f8b184739bbfe051c89403f1088548fb01ff46db392", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2335d9b96070c8e2946c5f8b184739bbfe051c89403f1088548fb01ff46db392", kill_on_drop: false }`
[INFO] [stdout] 2335d9b96070c8e2946c5f8b184739bbfe051c89403f1088548fb01ff46db392
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/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:98afbf2d16093dec2546ff8915fddc74e65664aa03fc460b3712b1c2c54a33e4" "/opt/rustwide/cargo-home/bin/cargo" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 235b83dd4ee202550aae1dec503b07a1a6e0d4ff89c3a90aa1f3e8451519de8a
[INFO] running `Command { std: "docker" "start" "-a" "235b83dd4ee202550aae1dec503b07a1a6e0d4ff89c3a90aa1f3e8451519de8a", kill_on_drop: false }`
[INFO] [stderr]    Compiling 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: 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: 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: 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: 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: 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: 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: 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: 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 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/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: 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: `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 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: 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: 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 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: 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 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 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: 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: 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/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: 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: 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: 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/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: 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/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: 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 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: 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: 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]   |                  ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = help: maybe it is overwritten before being read?
[INFO] [stdout]   = note: `#[warn(unused_assignments)]` (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: 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 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 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: 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 4.36s
[INFO] running `Command { std: "docker" "inspect" "235b83dd4ee202550aae1dec503b07a1a6e0d4ff89c3a90aa1f3e8451519de8a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "235b83dd4ee202550aae1dec503b07a1a6e0d4ff89c3a90aa1f3e8451519de8a", kill_on_drop: false }`
[INFO] [stdout] 235b83dd4ee202550aae1dec503b07a1a6e0d4ff89c3a90aa1f3e8451519de8a
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/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:98afbf2d16093dec2546ff8915fddc74e65664aa03fc460b3712b1c2c54a33e4" "/opt/rustwide/cargo-home/bin/cargo" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 1d2e516428ac9001fbca71f61dbb7c45b3e5eeeae96c7010dcdf772acca7ccf5
[INFO] running `Command { std: "docker" "start" "-a" "1d2e516428ac9001fbca71f61dbb7c45b3e5eeeae96c7010dcdf772acca7ccf5", kill_on_drop: false }`
[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: 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: 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] [stderr]    Compiling rust_prog_lang v0.1.0 (/opt/rustwide/workdir)
[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 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 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 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: 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: 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: 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: 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 `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: `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 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: 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 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 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: 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: 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: 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/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 `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: 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: 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: 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/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/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: 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: 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: `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: `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/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: 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: `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 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: 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: 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 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: 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: 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: 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: 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: `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: 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: 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: 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: 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: 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]   |                  ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = help: maybe it is overwritten before being read?
[INFO] [stdout]   = note: `#[warn(unused_assignments)]` (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: 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: 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: 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 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 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 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/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: `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: 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 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_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: 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: 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: `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 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: 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 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 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 `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 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: 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 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: `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: 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: 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/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: 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: 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: 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]   |                  ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = help: maybe it is overwritten before being read?
[INFO] [stdout]   = note: `#[warn(unused_assignments)]` (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] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 4.44s
[INFO] running `Command { std: "docker" "inspect" "1d2e516428ac9001fbca71f61dbb7c45b3e5eeeae96c7010dcdf772acca7ccf5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1d2e516428ac9001fbca71f61dbb7c45b3e5eeeae96c7010dcdf772acca7ccf5", kill_on_drop: false }`
[INFO] [stdout] 1d2e516428ac9001fbca71f61dbb7c45b3e5eeeae96c7010dcdf772acca7ccf5
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/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:98afbf2d16093dec2546ff8915fddc74e65664aa03fc460b3712b1c2c54a33e4" "/opt/rustwide/cargo-home/bin/cargo" "+2fd6efc32704647e64d3d646d21c4c68eae100e4" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 97650a4a5376603a1097a85f08f8060d6f58d7e694c09f2b38224921d9d442d4
[INFO] running `Command { std: "docker" "start" "-a" "97650a4a5376603a1097a85f08f8060d6f58d7e694c09f2b38224921d9d442d4", kill_on_drop: false }`
[INFO] [stderr] warning: unused variable: `order1`
[INFO] [stderr]   --> src/lib.rs:57:9
[INFO] [stderr]    |
[INFO] [stderr] 57 |     let order1 = back_of_house::Appetizer::Soup;
[INFO] [stderr]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_order1`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `order2`
[INFO] [stderr]   --> src/lib.rs:58:9
[INFO] [stderr]    |
[INFO] [stderr] 58 |     let order2 = back_of_house::Appetizer::Salad;
[INFO] [stderr]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_order2`
[INFO] [stderr] 
[INFO] [stderr] warning: function `serve_order` is never used
[INFO] [stderr]   --> src/lib.rs:16:4
[INFO] [stderr]    |
[INFO] [stderr] 16 | fn serve_order() {}
[INFO] [stderr]    |    ^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function `seat_at_table` is never used
[INFO] [stderr]  --> src/front_of_house/hosting.rs:2:4
[INFO] [stderr]   |
[INFO] [stderr] 2 | fn seat_at_table() {}
[INFO] [stderr]   |    ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `take_order` is never used
[INFO] [stderr]  --> src/front_of_house.rs:4:8
[INFO] [stderr]   |
[INFO] [stderr] 4 |     fn take_order() {}
[INFO] [stderr]   |        ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `serve_order` is never used
[INFO] [stderr]  --> src/front_of_house.rs:5:8
[INFO] [stderr]   |
[INFO] [stderr] 5 |     fn serve_order() {}
[INFO] [stderr]   |        ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `take_payment` is never used
[INFO] [stderr]  --> src/front_of_house.rs:6:8
[INFO] [stderr]   |
[INFO] [stderr] 6 |     fn take_payment() {}
[INFO] [stderr]   |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `seasonal_fruit` is never read
[INFO] [stderr]   --> src/lib.rs:21:9
[INFO] [stderr]    |
[INFO] [stderr] 19 |     pub struct Breakfast {
[INFO] [stderr]    |                --------- field in this struct
[INFO] [stderr] 20 |         pub toast: String,
[INFO] [stderr] 21 |         seasonal_fruit: String,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `cook_order` is never used
[INFO] [stderr]   --> src/lib.rs:33:8
[INFO] [stderr]    |
[INFO] [stderr] 33 |     fn cook_order() {}
[INFO] [stderr]    |        ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `fix_incorrect_order` is never used
[INFO] [stderr]   --> src/lib.rs:34:8
[INFO] [stderr]    |
[INFO] [stderr] 34 |     fn fix_incorrect_order() {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `rust_prog_lang` (lib) generated 10 warnings (run `cargo fix --lib -p rust_prog_lang` to apply 2 suggestions)
[INFO] [stderr] warning: unused variable: `name`
[INFO] [stderr]  --> src/bin/chap11/1_test_samples.rs:9:18
[INFO] [stderr]   |
[INFO] [stderr] 9 | pub fn greeting2(name: &str) -> String {
[INFO] [stderr]   |                  ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: field `value` is never read
[INFO] [stderr]   --> src/bin/chap11/1_test_samples.rs:14:5
[INFO] [stderr]    |
[INFO] [stderr] 13 | pub struct Guess {
[INFO] [stderr]    |            ----- field in this struct
[INFO] [stderr] 14 |     value: i32,
[INFO] [stderr]    |     ^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: method `newB` should have a snake case name
[INFO] [stderr]   --> src/bin/chap11/1_test_samples.rs:24:12
[INFO] [stderr]    |
[INFO] [stderr] 24 |     pub fn newB(value: i32) -> Guess {
[INFO] [stderr]    |            ^^^^ help: convert the identifier to snake case: `new_b`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function `greater_than_100B` should have a snake case name
[INFO] [stderr]   --> src/bin/chap11/1_test_samples.rs:81:8
[INFO] [stderr]    |
[INFO] [stderr] 81 |     fn greater_than_100B() {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `greater_than_100_b`
[INFO] [stderr] 
[INFO] [stderr] warning: `rust_prog_lang` (bin "1_test_samples" test) generated 4 warnings (run `cargo fix --bin "1_test_samples" -p rust_prog_lang --tests` to apply 1 suggestion)
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]  --> src/bin/chap8/2_vec_immut_ref.rs:4:9
[INFO] [stderr]   |
[INFO] [stderr] 4 |     let mut v = vec![1, 2, 3, 4, 5];
[INFO] [stderr]   |         ----^
[INFO] [stderr]   |         |
[INFO] [stderr]   |         help: remove this `mut`
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: `rust_prog_lang` (bin "2_vec_immut_ref" test) generated 1 warning (run `cargo fix --bin "2_vec_immut_ref" -p rust_prog_lang --tests` to apply 1 suggestion)
[INFO] [stderr] warning: value assigned to `s2` is never read
[INFO] [stderr]  --> src/bin/chap4/1_variable_scope.rs:7:18
[INFO] [stderr]   |
[INFO] [stderr] 7 |     let mut s2 = "hello world!";
[INFO] [stderr]   |                  ^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = help: maybe it is overwritten before being read?
[INFO] [stderr]   = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: `rust_prog_lang` (bin "1_variable_scope" test) generated 1 warning
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]  --> src/bin/chap8/4_string_samples.rs:3:9
[INFO] [stderr]   |
[INFO] [stderr] 3 |     let mut s = String::new();
[INFO] [stderr]   |         ----^
[INFO] [stderr]   |         |
[INFO] [stderr]   |         help: remove this `mut`
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `s`
[INFO] [stderr]  --> src/bin/chap8/4_string_samples.rs:3:9
[INFO] [stderr]   |
[INFO] [stderr] 3 |     let mut s = String::new();
[INFO] [stderr]   |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `s`
[INFO] [stderr]  --> src/bin/chap8/4_string_samples.rs:6:9
[INFO] [stderr]   |
[INFO] [stderr] 6 |     let s = data.to_string();
[INFO] [stderr]   |         ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `s`
[INFO] [stderr]   --> src/bin/chap8/4_string_samples.rs:11:9
[INFO] [stderr]    |
[INFO] [stderr] 11 |     let s = "initial contents".to_string();
[INFO] [stderr]    |         ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `s`
[INFO] [stderr]   --> src/bin/chap8/4_string_samples.rs:13:9
[INFO] [stderr]    |
[INFO] [stderr] 13 |     let s = String::from("initial contents");
[INFO] [stderr]    |         ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `hello`
[INFO] [stderr]   --> src/bin/chap8/4_string_samples.rs:18:9
[INFO] [stderr]    |
[INFO] [stderr] 18 |     let hello = String::from("السلام علیكم");
[INFO] [stderr]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_hello`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `hello`
[INFO] [stderr]   --> src/bin/chap8/4_string_samples.rs:19:9
[INFO] [stderr]    |
[INFO] [stderr] 19 |     let hello = String::from("Dobrý den");
[INFO] [stderr]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_hello`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `hello`
[INFO] [stderr]   --> src/bin/chap8/4_string_samples.rs:20:9
[INFO] [stderr]    |
[INFO] [stderr] 20 |     let hello = String::from("Hello");
[INFO] [stderr]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_hello`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `hello`
[INFO] [stderr]   --> src/bin/chap8/4_string_samples.rs:21:9
[INFO] [stderr]    |
[INFO] [stderr] 21 |     let hello = String::from("Здравствуйте");
[INFO] [stderr]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_hello`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `hello`
[INFO] [stderr]   --> src/bin/chap8/4_string_samples.rs:22:9
[INFO] [stderr]    |
[INFO] [stderr] 22 |     let hello = String::from("Hola");
[INFO] [stderr]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_hello`
[INFO] [stderr] 
[INFO] [stderr] warning: `rust_prog_lang` (bin "4_string_samples" test) generated 10 warnings (run `cargo fix --bin "4_string_samples" -p rust_prog_lang --tests` to apply 10 suggestions)
[INFO] [stderr] warning: field `0` is never read
[INFO] [stderr]  --> src/bin/chap6/2_enum_sample.rs:3:8
[INFO] [stderr]   |
[INFO] [stderr] 3 |     V4(String),
[INFO] [stderr]   |     -- ^^^^^^
[INFO] [stderr]   |     |
[INFO] [stderr]   |     field in this variant
[INFO] [stderr]   |
[INFO] [stderr]   = note: `IpAddr` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stderr]   |
[INFO] [stderr] 3 -     V4(String),
[INFO] [stderr] 3 +     V4(()),
[INFO] [stderr]   |
[INFO] [stderr] 
[INFO] [stderr] warning: field `0` is never read
[INFO] [stderr]  --> src/bin/chap6/2_enum_sample.rs:4:8
[INFO] [stderr]   |
[INFO] [stderr] 4 |     V6(String),
[INFO] [stderr]   |     -- ^^^^^^
[INFO] [stderr]   |     |
[INFO] [stderr]   |     field in this variant
[INFO] [stderr]   |
[INFO] [stderr]   = note: `IpAddr` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stderr]   |
[INFO] [stderr] 4 -     V6(String),
[INFO] [stderr] 4 +     V6(()),
[INFO] [stderr]   |
[INFO] [stderr] 
[INFO] [stderr] warning: fields `0`, `1`, `2`, and `3` are never read
[INFO] [stderr]  --> src/bin/chap6/2_enum_sample.rs:9:8
[INFO] [stderr]   |
[INFO] [stderr] 9 |     V4(u8, u8, u8, u8),
[INFO] [stderr]   |     -- ^^  ^^  ^^  ^^
[INFO] [stderr]   |     |
[INFO] [stderr]   |     fields in this variant
[INFO] [stderr]   |
[INFO] [stderr]   = note: `IpAddr2` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields
[INFO] [stderr]   |
[INFO] [stderr] 9 -     V4(u8, u8, u8, u8),
[INFO] [stderr] 9 +     V4((), (), (), ()),
[INFO] [stderr]   |
[INFO] [stderr] 
[INFO] [stderr] warning: field `0` is never read
[INFO] [stderr]   --> src/bin/chap6/2_enum_sample.rs:10:8
[INFO] [stderr]    |
[INFO] [stderr] 10 |     V6(String),
[INFO] [stderr]    |     -- ^^^^^^
[INFO] [stderr]    |     |
[INFO] [stderr]    |     field in this variant
[INFO] [stderr]    |
[INFO] [stderr]    = note: `IpAddr2` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stderr]    |
[INFO] [stderr] 10 -     V6(String),
[INFO] [stderr] 10 +     V6(()),
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `f`
[INFO] [stderr]  --> src/bin/chap9/2_result_recoverable_samples.rs:5:9
[INFO] [stderr]   |
[INFO] [stderr] 5 |     let f = match f {
[INFO] [stderr]   |         ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stderr]   --> src/bin/chap15/4_refcell_samples.rs:18:27
[INFO] [stderr]    |
[INFO] [stderr] 18 |     pub fn new(messenger: &T, max: usize) -> LimitTracker<T> {
[INFO] [stderr]    |                           ^^                 ^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stderr]    |                           |
[INFO] [stderr]    |                           the lifetime is elided here
[INFO] [stderr]    |
[INFO] [stderr]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stderr]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stderr] help: use `'_` for type paths
[INFO] [stderr]    |
[INFO] [stderr] 18 |     pub fn new(messenger: &T, max: usize) -> LimitTracker<'_, T> {
[INFO] [stderr]    |                                                           +++
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]   --> src/bin/chap16/5_channel_thread_samples.rs:11:9
[INFO] [stderr]    |
[INFO] [stderr] 11 | /         /** The send function takes ownership of its parameter,
[INFO] [stderr] 12 | |             and when the value is moved, the receiver takes ownership of it.
[INFO] [stderr] 13 | |             This stops us from accidentally using the value again after sending it;
[INFO] [stderr] 14 | |             the ownership system checks that everything is okay, pp. 402 */
[INFO] [stderr]    | |___________________________________________________________________________^
[INFO] [stderr] 15 |           tx.send(val).unwrap();
[INFO] [stderr]    |           --------------------- rustdoc does not generate documentation for expressions
[INFO] [stderr]    |
[INFO] [stderr]    = help: use `/* */` for a plain comment
[INFO] [stderr]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]   --> src/bin/chap16/5_channel_thread_samples.rs:22:5
[INFO] [stderr]    |
[INFO] [stderr] 22 | /     /** recv , short for receive, which will block the main thread’s execution and
[INFO] [stderr] 23 | |         wait until a value is sent down the channel.
[INFO] [stderr] 24 | |         Once a value is sent, recv will return it in a Result<T, E>.
[INFO] [stderr] 25 | |         When the sending end of the channel closes,
[INFO] [stderr] 26 | |         recv will return an error to signal that no more values will be coming, pp. 401 */
[INFO] [stderr]    | |__________________________________________________________________________________________^
[INFO] [stderr] 27 |       let received = rx.recv().unwrap();
[INFO] [stderr]    |       ---------------------------------- rustdoc does not generate documentation for statements
[INFO] [stderr]    |
[INFO] [stderr]    = help: use `/* */` for a plain comment
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]   --> src/bin/chap16/5_channel_thread_samples.rs:33:5
[INFO] [stderr]    |
[INFO] [stderr] 33 | /     /** The spawned thread will now send multiple messages
[INFO] [stderr] 34 | |         and pause for a second between each message, pp. 403 */
[INFO] [stderr]    | |_______________________________________________________________^
[INFO] [stderr] 35 | /     thread::spawn(move || {
[INFO] [stderr] 36 | |         let vals = vec![
[INFO] [stderr] 37 | |             String::from("hi"),
[INFO] [stderr] 38 | |             String::from("from"),
[INFO] [stderr] ...  |
[INFO] [stderr] 49 | |     });
[INFO] [stderr]    | |______- rustdoc does not generate documentation for expressions
[INFO] [stderr]    |
[INFO] [stderr]    = help: use `/* */` for a plain comment
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]   --> src/bin/chap16/5_channel_thread_samples.rs:42:9
[INFO] [stderr]    |
[INFO] [stderr] 42 | /         /** We iterate over them, sending each individually,
[INFO] [stderr] 43 | |             and pause between each by calling the thread::sleep function
[INFO] [stderr] 44 | |             with a Duration value of 1 second */
[INFO] [stderr]    | |________________________________________________^
[INFO] [stderr] 45 | /         for val in vals {
[INFO] [stderr] 46 | |             tx.send(val).unwrap();
[INFO] [stderr] 47 | |             thread::sleep(Duration::from_secs(1));
[INFO] [stderr] 48 | |         }
[INFO] [stderr]    | |_________- rustdoc does not generate documentation for expressions
[INFO] [stderr]    |
[INFO] [stderr]    = help: use `/* */` for a plain comment
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]   --> src/bin/chap16/5_channel_thread_samples.rs:51:5
[INFO] [stderr]    |
[INFO] [stderr] 51 | /     /** Treating rx as an iterator
[INFO] [stderr] 52 | |         For each value received, we’re printing it.
[INFO] [stderr] 53 | |         When the channel is closed, iteration will end. */
[INFO] [stderr]    | |__________________________________________________________^
[INFO] [stderr] 54 | /     for received in rx {
[INFO] [stderr] 55 | |         println!("Got: {}", received);
[INFO] [stderr] 56 | |     }
[INFO] [stderr]    | |_____- rustdoc does not generate documentation for expressions
[INFO] [stderr]    |
[INFO] [stderr]    = help: use `/* */` for a plain comment
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]   --> src/bin/chap16/5_channel_thread_samples.rs:61:5
[INFO] [stderr]    |
[INFO] [stderr] 61 | /     /** Use mpsc to create multiple threads that all send values to the same receiver.
[INFO] [stderr] 62 | |         We can do so by cloning the transmitting half of the channel */
[INFO] [stderr]    | |_______________________________________________________________________^
[INFO] [stderr] 63 |       let tx1 = mpsc::Sender::clone(&tx);
[INFO] [stderr]    |       ----------------------------------- rustdoc does not generate documentation for statements
[INFO] [stderr]    |
[INFO] [stderr]    = help: use `/* */` for a plain comment
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Counter` is never constructed
[INFO] [stderr]  --> src/bin/chap13/6_create_own_iter_samples.rs:1:8
[INFO] [stderr]   |
[INFO] [stderr] 1 | struct Counter {
[INFO] [stderr]   |        ^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]  --> src/bin/chap13/6_create_own_iter_samples.rs:6:8
[INFO] [stderr]   |
[INFO] [stderr] 5 | impl Counter {
[INFO] [stderr]   | ------------ associated function in this implementation
[INFO] [stderr] 6 |     fn new() -> Counter {
[INFO] [stderr]   |        ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `rust_prog_lang` (bin "2_enum_sample") generated 4 warnings
[INFO] [stderr] warning: `rust_prog_lang` (bin "2_result_recoverable_samples") generated 1 warning (run `cargo fix --bin "2_result_recoverable_samples" -p rust_prog_lang` to apply 1 suggestion)
[INFO] [stderr] warning: `rust_prog_lang` (bin "4_refcell_samples") generated 1 warning (run `cargo fix --bin "4_refcell_samples" -p rust_prog_lang` to apply 1 suggestion)
[INFO] [stderr] warning: `rust_prog_lang` (bin "5_channel_thread_samples") generated 6 warnings
[INFO] [stderr] warning: `rust_prog_lang` (bin "6_create_own_iter_samples") generated 2 warnings
[INFO] [stderr] warning: fields `addr1`, `addr2`, `addr3`, and `addr4` are never read
[INFO] [stderr]  --> src/bin/chap6/3_enum_sample.rs:4:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | struct Ipv4Addr {
[INFO] [stderr]   |        -------- fields in this struct
[INFO] [stderr] 3 | // --snip--
[INFO] [stderr] 4 |     addr1: u8,
[INFO] [stderr]   |     ^^^^^
[INFO] [stderr] 5 |     addr2: u8,
[INFO] [stderr]   |     ^^^^^
[INFO] [stderr] 6 |     addr3: u8,
[INFO] [stderr]   |     ^^^^^
[INFO] [stderr] 7 |     addr4: u8,
[INFO] [stderr]   |     ^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `Ipv4Addr` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: field `address` is never read
[INFO] [stderr]   --> src/bin/chap6/3_enum_sample.rs:13:5
[INFO] [stderr]    |
[INFO] [stderr] 11 | struct Ipv6Addr {
[INFO] [stderr]    |        -------- field in this struct
[INFO] [stderr] 12 | // --snip--
[INFO] [stderr] 13 |     address: String,
[INFO] [stderr]    |     ^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Ipv6Addr` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `0` is never read
[INFO] [stderr]   --> src/bin/chap6/3_enum_sample.rs:18:8
[INFO] [stderr]    |
[INFO] [stderr] 18 |     V4(Ipv4Addr),
[INFO] [stderr]    |     -- ^^^^^^^^
[INFO] [stderr]    |     |
[INFO] [stderr]    |     field in this variant
[INFO] [stderr]    |
[INFO] [stderr]    = note: `IpAddr` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stderr]    |
[INFO] [stderr] 18 -     V4(Ipv4Addr),
[INFO] [stderr] 18 +     V4(()),
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: field `0` is never read
[INFO] [stderr]   --> src/bin/chap6/3_enum_sample.rs:19:8
[INFO] [stderr]    |
[INFO] [stderr] 19 |     V6(Ipv6Addr),
[INFO] [stderr]    |     -- ^^^^^^^^
[INFO] [stderr]    |     |
[INFO] [stderr]    |     field in this variant
[INFO] [stderr]    |
[INFO] [stderr]    = note: `IpAddr` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stderr]    |
[INFO] [stderr] 19 -     V6(Ipv6Addr),
[INFO] [stderr] 19 +     V6(()),
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `t`
[INFO] [stderr]   --> src/bin/chap10/2_trait_samples.rs:57:24
[INFO] [stderr]    |
[INFO] [stderr] 57 | fn some_function<T, U>(t: &T, u: &U) -> i32
[INFO] [stderr]    |                        ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `u`
[INFO] [stderr]   --> src/bin/chap10/2_trait_samples.rs:57:31
[INFO] [stderr]    |
[INFO] [stderr] 57 | fn some_function<T, U>(t: &T, u: &U) -> i32
[INFO] [stderr]    |                               ^ help: if this is intentional, prefix it with an underscore: `_u`
[INFO] [stderr] 
[INFO] [stderr] warning: function `some_function` is never used
[INFO] [stderr]   --> src/bin/chap10/2_trait_samples.rs:57:4
[INFO] [stderr]    |
[INFO] [stderr] 57 | fn some_function<T, U>(t: &T, u: &U) -> i32
[INFO] [stderr]    |    ^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]   --> src/bin/chap15/7_rc_weak_samples.rs:40:5
[INFO] [stderr]    |
[INFO] [stderr] 40 | /     /** The lack of infinite output indicates that this code didn’t create a reference cycle.
[INFO] [stderr] 41 | |         We can also tell this by looking at the values we get from calling Rc::strong_count and Rc::weak_count */
[INFO] [stderr]    | |_________________________________________________________________________________________________________________^ rustdoc does not generate documentation for macro invocations
[INFO] [stderr]    |
[INFO] [stderr]    = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion
[INFO] [stderr]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]   --> src/bin/chap15/7_rc_weak_samples.rs:16:5
[INFO] [stderr]    |
[INFO] [stderr] 16 |       /** leaf starts out without a parent, so we create a new, empty Weak<Node> reference instance, pp. 386 */
[INFO] [stderr]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 17 | /     let leaf = Rc::new(Node {
[INFO] [stderr] 18 | |         value: 3,
[INFO] [stderr] 19 | |         parent: RefCell::new(Weak::new()),
[INFO] [stderr] 20 | |         children: RefCell::new(vec![]),
[INFO] [stderr] 21 | |     });
[INFO] [stderr]    | |_______- rustdoc does not generate documentation for statements
[INFO] [stderr]    |
[INFO] [stderr]    = help: use `/* */` for a plain comment
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]   --> src/bin/chap15/7_rc_weak_samples.rs:46:5
[INFO] [stderr]    |
[INFO] [stderr] 46 |       /** in an inner scope and examining strong and weak reference counts, pp. 388 */
[INFO] [stderr]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 47 | /     let leaf = Rc::new(Node {
[INFO] [stderr] 48 | |         value: 3,
[INFO] [stderr] 49 | |         parent: RefCell::new(Weak::new()),
[INFO] [stderr] 50 | |         children: RefCell::new(vec![]),
[INFO] [stderr] 51 | |     });
[INFO] [stderr]    | |_______- rustdoc does not generate documentation for statements
[INFO] [stderr]    |
[INFO] [stderr]    = help: use `/* */` for a plain comment
[INFO] [stderr] 
[INFO] [stderr] warning: fields `value` and `children` are never read
[INFO] [stderr]   --> src/bin/chap15/7_rc_weak_samples.rs:10:5
[INFO] [stderr]    |
[INFO] [stderr]  9 | struct Node {
[INFO] [stderr]    |        ---- fields in this struct
[INFO] [stderr] 10 |     value: i32,
[INFO] [stderr]    |     ^^^^^
[INFO] [stderr] 11 |     parent: RefCell<Weak<Node>>,
[INFO] [stderr] 12 |     children: RefCell<Vec<Rc<Node>>>,
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Node` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]   --> src/bin/chap16/3_thread_samples.rs:13:5
[INFO] [stderr]    |
[INFO] [stderr] 13 | /     /** The main thread will wait for the spawned thread to finish and
[INFO] [stderr] 14 | |         then run its for loop, so the output won’t be interleaved anymore, pp. 394 */
[INFO] [stderr]    | |_____________________________________________________________________________________^
[INFO] [stderr] 15 |       handle.join().unwrap();
[INFO] [stderr]    |       ---------------------- rustdoc does not generate documentation for expressions
[INFO] [stderr]    |
[INFO] [stderr]    = help: use `/* */` for a plain comment
[INFO] [stderr]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: type `List_Box` should have an upper camel case name
[INFO] [stderr]  --> src/bin/chap15/3_rc_samples.rs:2:6
[INFO] [stderr]   |
[INFO] [stderr] 2 | enum List_Box {
[INFO] [stderr]   |      ^^^^^^^^ help: convert the identifier to upper camel case: `ListBox`
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]   --> src/bin/chap15/3_rc_samples.rs:21:5
[INFO] [stderr]    |
[INFO] [stderr] 21 | /     /** The Cons variants own the data they hold, so when we create the b list,
[INFO] [stderr] 22 | |         a is moved into b and b owns a. Then, when we try to use a again when creating c,
[INFO] [stderr] 23 | |         we’re not allowed to because a has been moved, pp. 366
[INFO] [stderr] 24 | |     */
[INFO] [stderr]    | |______^ rustdoc does not generate documentation for macro invocations
[INFO] [stderr]    |
[INFO] [stderr]    = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion
[INFO] [stderr]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]   --> src/bin/chap15/3_rc_samples.rs:16:5
[INFO] [stderr]    |
[INFO] [stderr] 16 |       /** Box<T> allows immutable or mutable borrows checked at compile time, pp. 370 */
[INFO] [stderr]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 17 | /     let a = List_Box::Cons(5,
[INFO] [stderr] 18 | |                            Box::new(List_Box::Cons(10,
[INFO] [stderr] 19 | |                                                    Box::new(List_Box::Nil))));
[INFO] [stderr]    | |______________________________________________________________________________- rustdoc does not generate documentation for statements
[INFO] [stderr]    |
[INFO] [stderr]    = help: use `/* */` for a plain comment
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]   --> src/bin/chap15/3_rc_samples.rs:29:5
[INFO] [stderr]    |
[INFO] [stderr] 29 | /     /** pp 370
[INFO] [stderr] 30 | |         - Rc<T> ENABLES MULTIPLE OWNERS of the same data,
[INFO] [stderr] 31 | |           while Box<T> and RefCell<T> have single owners
[INFO] [stderr] 32 | |         - Rc<T> allows only IMMUTABLE borrows checked at compile time
[INFO] [stderr] 33 | |         */
[INFO] [stderr]    | |__________^
[INFO] [stderr] 34 | /     let a: Rc<List> = Rc::new(List::Cons(5,
[INFO] [stderr] 35 | |                                          Rc::new(List::Cons(10,
[INFO] [stderr] 36 | |                                                   Rc::new(List::Nil)))));
[INFO] [stderr]    | |_________________________________________________________________________- rustdoc does not generate documentation for statements
[INFO] [stderr]    |
[INFO] [stderr]    = help: use `/* */` for a plain comment
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]   --> src/bin/chap15/3_rc_samples.rs:37:5
[INFO] [stderr]    |
[INFO] [stderr] 37 | /     /** The implementation of Rc::clone doesn’t make a deep copy of all the data
[INFO] [stderr] 38 | |         like most types’ implementations of clone do.
[INFO] [stderr] 39 | |         The call to Rc::clone only increments the reference count, which doesn’t take much time.
[INFO] [stderr] 40 | |         Deep copies of data can take a lot of time, pp. 367 */
[INFO] [stderr]    | |______________________________________________________________^
[INFO] [stderr] 41 |       let b = List::Cons(3, Rc::clone(&a));
[INFO] [stderr]    |       ------------------------------------- rustdoc does not generate documentation for statements
[INFO] [stderr]    |
[INFO] [stderr]    = help: use `/* */` for a plain comment
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]   --> src/bin/chap15/3_rc_samples.rs:48:5
[INFO] [stderr]    |
[INFO] [stderr] 48 |       /** Printing the reference count, pp. 368 */
[INFO] [stderr]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 49 | /     let a = Rc::new(List::Cons(5,
[INFO] [stderr] 50 | |                                Rc::new(List::Cons(10,
[INFO] [stderr] 51 | |                                                   Rc::new(List::Nil)))));
[INFO] [stderr]    | |_________________________________________________________________________- rustdoc does not generate documentation for statements
[INFO] [stderr]    |
[INFO] [stderr]    = help: use `/* */` for a plain comment
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `b`
[INFO] [stderr]   --> src/bin/chap15/3_rc_samples.rs:53:9
[INFO] [stderr]    |
[INFO] [stderr] 53 |     let b = List::Cons(3, Rc::clone(&a));
[INFO] [stderr]    |         ^ help: if this is intentional, prefix it with an underscore: `_b`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `c`
[INFO] [stderr]   --> src/bin/chap15/3_rc_samples.rs:56:13
[INFO] [stderr]    |
[INFO] [stderr] 56 |         let c = List::Cons(4, Rc::clone(&a));
[INFO] [stderr]    |             ^ help: if this is intentional, prefix it with an underscore: `_c`
[INFO] [stderr] 
[INFO] [stderr] warning: fields `0` and `1` are never read
[INFO] [stderr]  --> src/bin/chap15/3_rc_samples.rs:3:10
[INFO] [stderr]   |
[INFO] [stderr] 3 |     Cons(i32, Box<List_Box>),
[INFO] [stderr]   |     ---- ^^^  ^^^^^^^^^^^^^
[INFO] [stderr]   |     |
[INFO] [stderr]   |     fields in this variant
[INFO] [stderr]   |
[INFO] [stderr]   = note: `List_Box` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields
[INFO] [stderr]   |
[INFO] [stderr] 3 -     Cons(i32, Box<List_Box>),
[INFO] [stderr] 3 +     Cons((), ()),
[INFO] [stderr]   |
[INFO] [stderr] 
[INFO] [stderr] warning: fields `0` and `1` are never read
[INFO] [stderr]  --> src/bin/chap15/3_rc_samples.rs:9:10
[INFO] [stderr]   |
[INFO] [stderr] 9 |     Cons(i32, Rc<List>),
[INFO] [stderr]   |     ---- ^^^  ^^^^^^^^
[INFO] [stderr]   |     |
[INFO] [stderr]   |     fields in this variant
[INFO] [stderr]   |
[INFO] [stderr]   = note: `List` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields
[INFO] [stderr]   |
[INFO] [stderr] 9 -     Cons(i32, Rc<List>),
[INFO] [stderr] 9 +     Cons((), ()),
[INFO] [stderr]   |
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::rc::Rc`
[INFO] [stderr]  --> src/bin/chap16/6_mutex_samples.rs:4:5
[INFO] [stderr]   |
[INFO] [stderr] 4 | use std::rc::Rc;
[INFO] [stderr]   |     ^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]   --> src/bin/chap16/6_mutex_samples.rs:20:5
[INFO] [stderr]    |
[INFO] [stderr] 20 | /     /** Mutex<T> is smart pointer.
[INFO] [stderr] 21 | |         The call to lock returns a MutexGuard wrapped in a LockResult
[INFO] [stderr] 22 | |         that we handled with the call to unwrap.
[INFO] [stderr] ...  |
[INFO] [stderr] 29 | |         blocking the mutex from being used by other threads
[INFO] [stderr] 30 | |         because the lock release happens automatically, pp. 408 */
[INFO] [stderr]    | |__________________________________________________________________^ rustdoc does not generate documentation for macro invocations
[INFO] [stderr]    |
[INFO] [stderr]    = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion
[INFO] [stderr]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]   --> src/bin/chap16/6_mutex_samples.rs:34:5
[INFO] [stderr]    |
[INFO] [stderr] 34 | /      /** Sharing a Mutex<T> Between Multiple Threads, pp. 408 */
[INFO] [stderr] 35 | |      /** Compile Error
[INFO] [stderr] 36 | |          The error message states that the counter value was moved
[INFO] [stderr] 37 | |          in the previous iteration of the loop.
[INFO] [stderr] ...  |
[INFO] [stderr] 56 | |/     /**
[INFO] [stderr] 57 | ||         let counter = Rc::clone(&counter);
[INFO] [stderr] 58 | ||
[INFO] [stderr] 59 | ||         let mut handles = vec![];
[INFO] [stderr] ...  ||
[INFO] [stderr] 71 | ||         println!("Result: {}", *counter.lock().unwrap());
[INFO] [stderr] 72 | ||     */
[INFO] [stderr]    | ||______^
[INFO] [stderr]    |  |______|
[INFO] [stderr]    |         rustdoc does not generate documentation for macro invocations
[INFO] [stderr]    |
[INFO] [stderr]    = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]   --> src/bin/chap16/6_mutex_samples.rs:10:9
[INFO] [stderr]    |
[INFO] [stderr] 10 | /         /** To access the data inside the mutex, we use the method to acquire the lock.
[INFO] [stderr] 11 | |             This call will block the current thread so it can’t do any work
[INFO] [stderr] 12 | |             until it’s our turn to have the lock.
[INFO] [stderr] ...  |
[INFO] [stderr] 15 | |             In that case, no one would ever be able to get the lock,
[INFO] [stderr] 16 | |             so we’ve chosen to unwrap and have this thread panic in that situation, pp. 407 */
[INFO] [stderr]    | |______________________________________________________________________________________________^
[INFO] [stderr] 17 |           let mut num: MutexGuard<i32> = m.lock().unwrap();
[INFO] [stderr]    |           ------------------------------------------------- rustdoc does not generate documentation for statements
[INFO] [stderr]    |
[INFO] [stderr]    = help: use `/* */` for a plain comment
[INFO] [stderr] 
[INFO] [stderr] warning: field `y` is never read
[INFO] [stderr]  --> src/bin/chap10/1_generic_samples.rs:4:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | struct Point<T> {
[INFO] [stderr]   |        ----- field in this struct
[INFO] [stderr] 3 |     x: T,
[INFO] [stderr] 4 |     y: T,
[INFO] [stderr]   |     ^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `Point` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: method `distance_from_origin` is never used
[INFO] [stderr]   --> src/bin/chap10/1_generic_samples.rs:12:8
[INFO] [stderr]    |
[INFO] [stderr] 11 | impl Point<f32> {
[INFO] [stderr]    | --------------- method in this implementation
[INFO] [stderr] 12 |     fn distance_from_origin(&self) -> f32 {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `read_username_from_file` is never used
[INFO] [stderr]   --> src/bin/chap9/4_propagating_error.rs:12:4
[INFO] [stderr]    |
[INFO] [stderr] 12 | fn read_username_from_file() -> Result<String, io::Error> {
[INFO] [stderr]    |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function `read_username_from_file2` is never used
[INFO] [stderr]   --> src/bin/chap9/4_propagating_error.rs:29:4
[INFO] [stderr]    |
[INFO] [stderr] 29 | fn read_username_from_file2() -> Result<String, io::Error> {
[INFO] [stderr]    |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `read_username_from_file3` is never used
[INFO] [stderr]   --> src/bin/chap9/4_propagating_error.rs:38:4
[INFO] [stderr]    |
[INFO] [stderr] 38 | fn read_username_from_file3() -> Result<String, io::Error> {
[INFO] [stderr]    |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `v1`
[INFO] [stderr]   --> src/bin/chap13/2_closure_samples.rs:64:9
[INFO] [stderr]    |
[INFO] [stderr] 64 |     let v1 = c.value(1); let v2 = c.value(2);
[INFO] [stderr]    |         ^^ help: if this is intentional, prefix it with an underscore: `_v1`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: `rust_prog_lang` (bin "3_enum_sample") generated 4 warnings
[INFO] [stderr] warning: `rust_prog_lang` (bin "2_trait_samples") generated 3 warnings (run `cargo fix --bin "2_trait_samples" -p rust_prog_lang` to apply 2 suggestions)
[INFO] [stderr] warning: `rust_prog_lang` (bin "7_rc_weak_samples") generated 4 warnings
[INFO] [stderr] warning: `rust_prog_lang` (bin "3_thread_samples") generated 1 warning
[INFO] [stderr] warning: `rust_prog_lang` (bin "3_rc_samples") generated 10 warnings (run `cargo fix --bin "3_rc_samples" -p rust_prog_lang` to apply 2 suggestions)
[INFO] [stderr] warning: `rust_prog_lang` (bin "1_test_samples") generated 3 warnings (3 duplicates)
[INFO] [stderr] warning: `rust_prog_lang` (bin "6_mutex_samples" test) generated 4 warnings (run `cargo fix --bin "6_mutex_samples" -p rust_prog_lang --tests` to apply 1 suggestion)
[INFO] [stderr] warning: `rust_prog_lang` (bin "1_generic_samples" test) generated 2 warnings
[INFO] [stderr] warning: `rust_prog_lang` (bin "4_propagating_error" test) generated 3 warnings
[INFO] [stderr] warning: `rust_prog_lang` (bin "2_closure_samples" test) generated 1 warning (run `cargo fix --bin "2_closure_samples" -p rust_prog_lang --tests` to apply 1 suggestion)
[INFO] [stderr] warning: unused variable: `some_string`
[INFO] [stderr]   --> src/bin/chap4/4_reference_borrowing.rs:28:17
[INFO] [stderr]    |
[INFO] [stderr] 28 | fn change_immut(some_string: &String) {
[INFO] [stderr]    |                 ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_some_string`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `f`
[INFO] [stderr]   --> src/bin/chap9/3_result_matching_samples.rs:43:9
[INFO] [stderr]    |
[INFO] [stderr] 43 |     let f = File::open("hello2.txt")
[INFO] [stderr]    |         ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: fields `kind` and `address` are never read
[INFO] [stderr]   --> src/bin/chap6/1_enum_sample.rs:9:5
[INFO] [stderr]    |
[INFO] [stderr]  8 | struct IpAddr {
[INFO] [stderr]    |        ------ fields in this struct
[INFO] [stderr]  9 |     kind: IpAddrKind,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] 10 |     address: String,
[INFO] [stderr]    |     ^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `IpAddr` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `c`
[INFO] [stderr]   --> src/bin/chap15/2_drop_samples.rs:13:9
[INFO] [stderr]    |
[INFO] [stderr] 13 |     let c = CustomSmartPointer {
[INFO] [stderr]    |         ^ help: if this is intentional, prefix it with an underscore: `_c`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `d`
[INFO] [stderr]   --> src/bin/chap15/2_drop_samples.rs:16:9
[INFO] [stderr]    |
[INFO] [stderr] 16 |     let d = CustomSmartPointer {
[INFO] [stderr]    |         ^ help: if this is intentional, prefix it with an underscore: `_d`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `c`
[INFO] [stderr]   --> src/bin/chap15/2_drop_samples.rs:22:9
[INFO] [stderr]    |
[INFO] [stderr] 22 |     let c = CustomSmartPointer {
[INFO] [stderr]    |         ^ help: if this is intentional, prefix it with an underscore: `_c`
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]   --> src/bin/chap15/1_box_samples.rs:60:5
[INFO] [stderr]    |
[INFO] [stderr] 60 | /     /** Compile error.
[INFO] [stderr] 61 | |         The error shows this type “has infnite size.”
[INFO] [stderr] 62 | |         The reason is that we’ve defined List with a variant that is recursive:
[INFO] [stderr] 63 | |         it holds another value of itself directly.
[INFO] [stderr] 64 | |         As a result, Rust can’t figure out how much space it needs to store a List value. */
[INFO] [stderr]    | |____________________________________________________________________________________________^
[INFO] [stderr] ...
[INFO] [stderr] 68 | /     let list: ListBox = Cons(1,
[INFO] [stderr] 69 | |                              Box::new(Cons(2,
[INFO] [stderr] 70 | |                                   Box::new(Cons(3,
[INFO] [stderr] 71 | |                                                 Box::new(Nil))))));
[INFO] [stderr]    | |___________________________________________________________________- rustdoc does not generate documentation for statements
[INFO] [stderr]    |
[INFO] [stderr]    = help: use `/* */` for a plain comment
[INFO] [stderr]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]   --> src/bin/chap15/1_box_samples.rs:75:5
[INFO] [stderr]    |
[INFO] [stderr] 75 | /     /** Following the Pointer to the Value with the Dereference Operator, pp. 354
[INFO] [stderr] 76 | |         The variable x holds an i32 value, 5.
[INFO] [stderr] 77 | |         We set y equal to a reference to x. We can assert that x is equal to 5.
[INFO] [stderr] 78 | |         However, if we want to make an assertion about the value in y,
[INFO] [stderr] 79 | |         we have to use *y to follow the reference to the value it’s pointing to (hence dereference).
[INFO] [stderr] 80 | |         Once we dereference y, we have access to the integer value y is pointing to
[INFO] [stderr] 81 | |         that we can compare with 5, pp. 355 */
[INFO] [stderr]    | |______________________________________________^
[INFO] [stderr] 82 |       let x = 5;
[INFO] [stderr]    |       ---------- rustdoc does not generate documentation for statements
[INFO] [stderr]    |
[INFO] [stderr]    = help: use `/* */` for a plain comment
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]    --> src/bin/chap15/1_box_samples.rs:104:5
[INFO] [stderr]     |
[INFO] [stderr] 104 | /     /**
[INFO] [stderr] 105 | |      * Implicit Deref Coercions with Functions and Methods, pp. 359 */
[INFO] [stderr]     | |______________________________________________________________________^
[INFO] [stderr] 106 |       // call the hello function with a string slice as an argument, pp. 359
[INFO] [stderr] 107 |       hello("Rust1");
[INFO] [stderr]     |       -------------- rustdoc does not generate documentation for expressions
[INFO] [stderr]     |
[INFO] [stderr]     = help: use `/* */` for a plain comment
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]    --> src/bin/chap15/1_box_samples.rs:115:5
[INFO] [stderr]     |
[INFO] [stderr] 115 | /     /** If Rust didn’t implement deref coercion,
[INFO] [stderr] 116 | |         we would have to write the code like below instead,
[INFO] [stderr] 117 | |         to call hello with a value of type &MyBox<String>, pp. 359
[INFO] [stderr] 118 | |     */
[INFO] [stderr]     | |______^
[INFO] [stderr] 119 |       let m = MyBox::new(String::from("Rust3"));
[INFO] [stderr]     |       ------------------------------------------ rustdoc does not generate documentation for statements
[INFO] [stderr]     |
[INFO] [stderr]     = help: use `/* */` for a plain comment
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]    --> src/bin/chap15/1_box_samples.rs:120:5
[INFO] [stderr]     |
[INFO] [stderr] 120 | /     /** The (*m) dereferences the MyBox<String> into a String .
[INFO] [stderr] 121 | |         Then the & and take a string slice of the String
[INFO] [stderr] 122 | |         that is equal to the whole string to match the signature of hello, pp. 360 */
[INFO] [stderr]     | |_____________________________________________________________________________________^
[INFO] [stderr] 123 |       hello(&(*m)[..]);
[INFO] [stderr]     |       ---------------- rustdoc does not generate documentation for expressions
[INFO] [stderr]     |
[INFO] [stderr]     = help: use `/* */` for a plain comment
[INFO] [stderr] 
[INFO] [stderr] warning: fields `0` and `1` are never read
[INFO] [stderr]   --> src/bin/chap15/1_box_samples.rs:15:10
[INFO] [stderr]    |
[INFO] [stderr] 15 |     Cons(i32, Box<ListBox>),
[INFO] [stderr]    |     ---- ^^^  ^^^^^^^^^^^^
[INFO] [stderr]    |     |
[INFO] [stderr]    |     fields in this variant
[INFO] [stderr]    |
[INFO] [stderr]    = note: `ListBox` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields
[INFO] [stderr]    |
[INFO] [stderr] 15 -     Cons(i32, Box<ListBox>),
[INFO] [stderr] 15 +     Cons((), ()),
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::time::Duration`
[INFO] [stderr]  --> src/bin/chap16/4_closure_thread_samples.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | use std::time::Duration;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]   --> src/bin/chap16/4_closure_thread_samples.rs:9:5
[INFO] [stderr]    |
[INFO] [stderr]  9 | /     /** The closure uses v, so it will capture v and make it part of the closure’s environment.
[INFO] [stderr] 10 | |         Because thread::spawn runs this closure in a new thread,
[INFO] [stderr] 11 | |         we should be able to access v inside that new thread. */
[INFO] [stderr] 12 | |     /** Compile ERROR
[INFO] [stderr] ...  |
[INFO] [stderr] 31 | |         we force the closure to take ownership of the values it’s using
[INFO] [stderr] 32 | |         rather than allowing Rust to infer that it should borrow the values, pp. 397 */
[INFO] [stderr]    | |_______________________________________________________________________________________^
[INFO] [stderr] 33 | /     let handle: JoinHandle<()> = thread::spawn(move || {
[INFO] [stderr] 34 | |         println!("Here's a vector: {:?}", v);
[INFO] [stderr] 35 | |     });
[INFO] [stderr]    | |_______- rustdoc does not generate documentation for statements
[INFO] [stderr]    |
[INFO] [stderr]    = help: use `/* */` for a plain comment
[INFO] [stderr]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]   --> src/bin/chap16/4_closure_thread_samples.rs:37:5
[INFO] [stderr]    |
[INFO] [stderr] 37 | /     /** If we added move to the closure, we would move v into the closure’s environment,
[INFO] [stderr] 38 | |         and we could no longer call drop on it in the main thread, pp. 398 */
[INFO] [stderr]    | |_____________________________________________________________________________^
[INFO] [stderr] 39 |   //    drop(v); // oh no!
[INFO] [stderr] 40 |       handle.join().unwrap();
[INFO] [stderr]    |       ---------------------- rustdoc does not generate documentation for expressions
[INFO] [stderr]    |
[INFO] [stderr]    = help: use `/* */` for a plain comment
[INFO] [stderr] 
[INFO] [stderr] warning: `rust_prog_lang` (bin "4_reference_borrowing") generated 1 warning (run `cargo fix --bin "4_reference_borrowing" -p rust_prog_lang` to apply 1 suggestion)
[INFO] [stderr] warning: `rust_prog_lang` (bin "4_reference_borrowing" test) generated 1 warning (1 duplicate)
[INFO] [stderr] warning: `rust_prog_lang` (bin "7_rc_weak_samples" test) generated 4 warnings (4 duplicates)
[INFO] [stderr] warning: `rust_prog_lang` (bin "3_result_matching_samples" test) generated 1 warning (run `cargo fix --bin "3_result_matching_samples" -p rust_prog_lang --tests` to apply 1 suggestion)
[INFO] [stderr] warning: `rust_prog_lang` (bin "1_enum_sample") generated 1 warning
[INFO] [stderr] warning: `rust_prog_lang` (bin "2_drop_samples" test) generated 3 warnings (run `cargo fix --bin "2_drop_samples" -p rust_prog_lang --tests` to apply 3 suggestions)
[INFO] [stderr] warning: `rust_prog_lang` (bin "1_box_samples") generated 6 warnings
[INFO] [stderr] warning: `rust_prog_lang` (bin "1_variable_scope") generated 1 warning (1 duplicate)
[INFO] [stderr] warning: `rust_prog_lang` (bin "4_closure_thread_samples") generated 3 warnings (run `cargo fix --bin "4_closure_thread_samples" -p rust_prog_lang` to apply 1 suggestion)
[INFO] [stderr] warning: `rust_prog_lang` (bin "4_string_samples") generated 10 warnings (10 duplicates)
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]   --> src/bin/chap15/4_refcell_samples.rs:76:13
[INFO] [stderr]    |
[INFO] [stderr] 76 | /             /** We can’t modify the to keep track of the messages,
[INFO] [stderr] 77 | |                 because the send method takes an immutable reference to self, pp. 374. */
[INFO] [stderr] ...  |
[INFO] [stderr] 82 | |                 Then we can call push on the mutable reference to the vector
[INFO] [stderr] 83 | |                 to keep track of the messages sent during the test, pp. 375 */
[INFO] [stderr]    | |______________________________________________________________________________^
[INFO] [stderr] 84 |               let mut one_borrow: RefMut<Vec<String>> = self.sent_messages.borrow_mut();
[INFO] [stderr]    |               -------------------------------------------------------------------------- rustdoc does not generate documentation for statements
[INFO] [stderr]    |
[INFO] [stderr]    = help: use `/* */` for a plain comment
[INFO] [stderr]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `list`
[INFO] [stderr]   --> src/bin/chap10/3_generic_trait_samples.rs:21:24
[INFO] [stderr]    |
[INFO] [stderr] 21 | fn largest_not_work<T>(list: &[T]) -> T {
[INFO] [stderr]    |                        ^^^^ help: if this is intentional, prefix it with an underscore: `_list`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function `largest_not_work` is never used
[INFO] [stderr]   --> src/bin/chap10/3_generic_trait_samples.rs:21:4
[INFO] [stderr]    |
[INFO] [stderr] 21 | fn largest_not_work<T>(list: &[T]) -> T {
[INFO] [stderr]    |    ^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]   --> src/bin/chap15/6_ref_cycle_samples.rs:31:5
[INFO] [stderr]    |
[INFO] [stderr] 31 |     /** We create an Rc<List> instance holding a List value in the variable a with an initial list of 5, Nil. */
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 32 |     let a: Rc<List> = Rc::new(Cons(5,RefCell::new(Rc::new(Nil))));
[INFO] [stderr]    |     -------------------------------------------------------------- rustdoc does not generate documentation for statements
[INFO] [stderr]    |
[INFO] [stderr]    = help: use `/* */` for a plain comment
[INFO] [stderr]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]   --> src/bin/chap15/6_ref_cycle_samples.rs:36:5
[INFO] [stderr]    |
[INFO] [stderr] 36 | /     /** We then create an Rc<List> instance holding another List value in the variable b
[INFO] [stderr] 37 | |         that contains the value 10 and points to the list in a, pp. 381 */
[INFO] [stderr]    | |__________________________________________________________________________^
[INFO] [stderr] 38 |       let b: Rc<List> = Rc::new(Cons(10,RefCell::new(Rc::clone(&a))));
[INFO] [stderr]    |       ---------------------------------------------------------------- rustdoc does not generate documentation for statements
[INFO] [stderr]    |
[INFO] [stderr]    = help: use `/* */` for a plain comment
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]   --> src/bin/chap15/6_ref_cycle_samples.rs:43:5
[INFO] [stderr]    |
[INFO] [stderr] 43 | /     /** We modify a so it points to b instead of Nil, creating a cycle.
[INFO] [stderr] 44 | |         We do that by using the tail method to get a reference to the RefCell<Rc<List>>.
[INFO] [stderr] 45 | |         Then we use the borrow_mut method on the RefCell<Rc<List>> to change the value inside from an Rc<List>
[INFO] [stderr] 46 | |         that holds a Nil value to the Rc<List> in b, pp. 381 */
[INFO] [stderr]    | |_______________________________________________________________^
[INFO] [stderr] 47 | /     if let Some(link) = a.tail() {
[INFO] [stderr] 48 | |         *link.borrow_mut() = Rc::clone(&b);
[INFO] [stderr] 49 | |     }
[INFO] [stderr]    | |_____- rustdoc does not generate documentation for expressions
[INFO] [stderr]    |
[INFO] [stderr]    = help: use `/* */` for a plain comment
[INFO] [stderr] 
[INFO] [stderr] warning: field `0` is never read
[INFO] [stderr]   --> src/bin/chap15/6_ref_cycle_samples.rs:16:10
[INFO] [stderr]    |
[INFO] [stderr] 16 |     Cons(i32, RefCell<Rc<List>>),
[INFO] [stderr]    |     ---- ^^^
[INFO] [stderr]    |     |
[INFO] [stderr]    |     field in this variant
[INFO] [stderr]    |
[INFO] [stderr]    = note: `List` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stderr]    |
[INFO] [stderr] 16 -     Cons(i32, RefCell<Rc<List>>),
[INFO] [stderr] 16 +     Cons((), RefCell<Rc<List>>),
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: `rust_prog_lang` (bin "4_closure_thread_samples" test) generated 3 warnings (3 duplicates)
[INFO] [stderr] warning: `rust_prog_lang` (bin "2_vec_immut_ref") generated 1 warning (1 duplicate)
[INFO] [stderr] warning: `rust_prog_lang` (bin "3_thread_samples" test) generated 1 warning (1 duplicate)
[INFO] [stderr] warning: `rust_prog_lang` (bin "4_refcell_samples" test) generated 2 warnings (1 duplicate)
[INFO] [stderr] warning: `rust_prog_lang` (bin "3_enum_sample" test) generated 4 warnings (4 duplicates)
[INFO] [stderr] warning: `rust_prog_lang` (bin "3_generic_trait_samples") generated 2 warnings (run `cargo fix --bin "3_generic_trait_samples" -p rust_prog_lang` to apply 1 suggestion)
[INFO] [stderr] warning: `rust_prog_lang` (bin "4_propagating_error") generated 3 warnings (3 duplicates)
[INFO] [stderr] warning: `rust_prog_lang` (bin "6_ref_cycle_samples") generated 4 warnings
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]   --> src/bin/chap4/5_mut_immut_references.rs:6:5
[INFO] [stderr]    |
[INFO] [stderr]  6 | /     /**
[INFO] [stderr]  7 | |     * you can have only one mutable reference
[INFO] [stderr]  8 | |     * to a particular piece of data in a particular scope
[INFO] [stderr]  9 | |     *
[INFO] [stderr] 10 | |     * Code below will fail
[INFO] [stderr] 11 | |     */
[INFO] [stderr]    | |______^ rustdoc does not generate documentation for macro invocations
[INFO] [stderr]    |
[INFO] [stderr]    = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion
[INFO] [stderr]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/bin/chap4/5_mut_immut_references.rs:28:9
[INFO] [stderr]    |
[INFO] [stderr] 28 |     let mut s = String::from("hello");
[INFO] [stderr]    |         ----^
[INFO] [stderr]    |         |
[INFO] [stderr]    |         help: remove this `mut`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `r1`
[INFO] [stderr]   --> src/bin/chap4/5_mut_immut_references.rs:19:13
[INFO] [stderr]    |
[INFO] [stderr] 19 |         let r1 = &mut s;
[INFO] [stderr]    |             ^^ help: if this is intentional, prefix it with an underscore: `_r1`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]   --> src/bin/chap16/2_thread_samples.rs:18:5
[INFO] [stderr]    |
[INFO] [stderr] 18 | /     /** Calling join on the handle blocks the thread currently running
[INFO] [stderr] 19 | |         until the thread represented by the handle terminates.
[INFO] [stderr] 20 | |         Blocking a thread means that thread is prevented from performing work or exiting.
[INFO] [stderr] ...  |
[INFO] [stderr] 23 | |         but the main thread waits because of the call to handle.join() and
[INFO] [stderr] 24 | |         does not end until the spawned thread is ␀nished., pp. 393 */
[INFO] [stderr]    | |_____________________________________________________________________^
[INFO] [stderr] 25 |       handle.join().unwrap();
[INFO] [stderr]    |       ---------------------- rustdoc does not generate documentation for expressions
[INFO] [stderr]    |
[INFO] [stderr]    = help: use `/* */` for a plain comment
[INFO] [stderr]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]   --> src/bin/chap10/5_lifetime_generic_samples.rs:64:5
[INFO] [stderr]    |
[INFO] [stderr] 64 | /     /** This won't compile, pp. 220
[INFO] [stderr] 65 | |     let result;
[INFO] [stderr] 66 | |     {
[INFO] [stderr] 67 | |         let string2 = String::from("xyz");
[INFO] [stderr] ...  |
[INFO] [stderr] 70 | |     println!("The longest string is {}", result);
[INFO] [stderr] 71 | |     */
[INFO] [stderr]    | |______^
[INFO] [stderr] 72 |
[INFO] [stderr] 73 |       let string1 = String::from("abcd");
[INFO] [stderr]    |       ----------------------------------- rustdoc does not generate documentation for statements
[INFO] [stderr]    |
[INFO] [stderr]    = help: use `/* */` for a plain comment
[INFO] [stderr]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `y`
[INFO] [stderr]   --> src/bin/chap10/5_lifetime_generic_samples.rs:27:30
[INFO] [stderr]    |
[INFO] [stderr] 27 | fn longest_x<'a>(x: &'a str, y: &str) -> &'a str {
[INFO] [stderr]    |                              ^ help: if this is intentional, prefix it with an underscore: `_y`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `string1`
[INFO] [stderr]   --> src/bin/chap10/5_lifetime_generic_samples.rs:63:9
[INFO] [stderr]    |
[INFO] [stderr] 63 |     let string1 = String::from("long string is long");
[INFO] [stderr]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_string1`
[INFO] [stderr] 
[INFO] [stderr] warning: function `longest_x` is never used
[INFO] [stderr]   --> src/bin/chap10/5_lifetime_generic_samples.rs:27:4
[INFO] [stderr]    |
[INFO] [stderr] 27 | fn longest_x<'a>(x: &'a str, y: &str) -> &'a str {
[INFO] [stderr]    |    ^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> src/bin/chap10/4_generic_trait_samples.rs:10:8
[INFO] [stderr]    |
[INFO] [stderr]  9 | impl<T> Pair<T> {
[INFO] [stderr]    | --------------- associated function in this implementation
[INFO] [stderr] 10 |     fn new(x: T, y: T) -> Self {
[INFO] [stderr]    |        ^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Shoe` is never constructed
[INFO] [stderr]  --> src/bin/chap13/5_closure_iter_samples.rs:2:8
[INFO] [stderr]   |
[INFO] [stderr] 2 | struct Shoe {
[INFO] [stderr]   |        ^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function `shoes_in_my_size` is never used
[INFO] [stderr]  --> src/bin/chap13/5_closure_iter_samples.rs:9:4
[INFO] [stderr]   |
[INFO] [stderr] 9 | fn shoes_in_my_size(shoes: Vec<Shoe>, shoe_size: u32) -> Vec<Shoe> {
[INFO] [stderr]   |    ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `0` and `1` are never read
[INFO] [stderr]  --> src/bin/chap15/5_rc_refcell_samples.rs:8:10
[INFO] [stderr]   |
[INFO] [stderr] 8 |     Cons(Rc<RefCell<i32>>, Rc<List>),
[INFO] [stderr]   |     ---- ^^^^^^^^^^^^^^^^  ^^^^^^^^
[INFO] [stderr]   |     |
[INFO] [stderr]   |     fields in this variant
[INFO] [stderr]   |
[INFO] [stderr]   = note: `List` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields
[INFO] [stderr]   |
[INFO] [stderr] 8 -     Cons(Rc<RefCell<i32>>, Rc<List>),
[INFO] [stderr] 8 +     Cons((), ()),
[INFO] [stderr]   |
[INFO] [stderr] 
[INFO] [stderr] warning: `rust_prog_lang` (bin "2_result_recoverable_samples" test) generated 1 warning (1 duplicate)
[INFO] [stderr] warning: `rust_prog_lang` (bin "5_mut_immut_references" test) generated 3 warnings (run `cargo fix --bin "5_mut_immut_references" -p rust_prog_lang --tests` to apply 2 suggestions)
[INFO] [stderr] warning: `rust_prog_lang` (bin "2_drop_samples") generated 3 warnings (3 duplicates)
[INFO] [stderr] warning: `rust_prog_lang` (bin "2_thread_samples") generated 1 warning
[INFO] [stderr] warning: `rust_prog_lang` (bin "5_lifetime_generic_samples") generated 4 warnings (run `cargo fix --bin "5_lifetime_generic_samples" -p rust_prog_lang` to apply 2 suggestions)
[INFO] [stderr] warning: `rust_prog_lang` (bin "4_generic_trait_samples" test) generated 1 warning
[INFO] [stderr] warning: `rust_prog_lang` (bin "4_generic_trait_samples") generated 1 warning (1 duplicate)
[INFO] [stderr] warning: `rust_prog_lang` (bin "3_rc_samples" test) generated 10 warnings (10 duplicates)
[INFO] [stderr] warning: `rust_prog_lang` (bin "5_closure_iter_samples") generated 2 warnings
[INFO] [stderr] warning: `rust_prog_lang` (bin "1_enum_sample" test) generated 1 warning (1 duplicate)
[INFO] [stderr] warning: `rust_prog_lang` (bin "5_rc_refcell_samples" test) generated 1 warning
[INFO] [stderr] warning: unused variable: `word`
[INFO] [stderr]  --> src/bin/chap4/7_string_slices.rs:3:9
[INFO] [stderr]   |
[INFO] [stderr] 3 |     let word = first_word(&s); // word will get the value 5
[INFO] [stderr]   |         ^^^^ help: if this is intentional, prefix it with an underscore: `_word`
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: field `0` is never read
[INFO] [stderr]   --> src/bin/chap8/3_vec_iter.rs:26:13
[INFO] [stderr]    |
[INFO] [stderr] 26 |         Int(i32),
[INFO] [stderr]    |         --- ^^^
[INFO] [stderr]    |         |
[INFO] [stderr]    |         field in this variant
[INFO] [stderr]    |
[INFO] [stderr]    = note: `SpreadsheetCell` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stderr]    |
[INFO] [stderr] 26 -         Int(i32),
[INFO] [stderr] 26 +         Int(()),
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: field `0` is never read
[INFO] [stderr]   --> src/bin/chap8/3_vec_iter.rs:27:15
[INFO] [stderr]    |
[INFO] [stderr] 27 |         Float(f64),
[INFO] [stderr]    |         ----- ^^^
[INFO] [stdout] 
[INFO] [stderr]    |         |
[INFO] [stdout] running 1 test
[INFO] [stderr]    |         field in this variant
[INFO] [stderr]    |
[INFO] [stderr]    = note: `SpreadsheetCell` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] test front_of_house::adder::tests::internal ... ok
[INFO] [stderr] 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] [stderr]    |
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stderr] 27 -         Float(f64),
[INFO] [stdout] 
[INFO] [stderr] 27 +         Float(()),
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: field `0` is never read
[INFO] [stderr]   --> src/bin/chap8/3_vec_iter.rs:28:14
[INFO] [stderr]    |
[INFO] [stderr] 28 |         Text(String),
[INFO] [stderr]    |         ---- ^^^^^^
[INFO] [stderr]    |         |
[INFO] [stderr]    |         field in this variant
[INFO] [stderr]    |
[INFO] [stderr]    = note: `SpreadsheetCell` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stderr]    |
[INFO] [stderr] 28 -         Text(String),
[INFO] [stderr] 28 +         Text(()),
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: `rust_prog_lang` (bin "6_ref_cycle_samples" test) generated 4 warnings (4 duplicates)
[INFO] [stderr] warning: `rust_prog_lang` (bin "5_channel_thread_samples" test) generated 6 warnings (6 duplicates)
[INFO] [stderr] warning: `rust_prog_lang` (bin "7_string_slices" test) generated 1 warning (run `cargo fix --bin "7_string_slices" -p rust_prog_lang --tests` to apply 1 suggestion)
[INFO] [stderr] warning: `rust_prog_lang` (bin "2_thread_samples" test) generated 1 warning (1 duplicate)
[INFO] [stderr] warning: `rust_prog_lang` (bin "3_generic_trait_samples" test) generated 2 warnings (2 duplicates)
[INFO] [stderr] warning: `rust_prog_lang` (bin "3_result_matching_samples") generated 1 warning (1 duplicate)
[INFO] [stderr] warning: `rust_prog_lang` (bin "1_generic_samples") generated 2 warnings (2 duplicates)
[INFO] [stderr] warning: `rust_prog_lang` (bin "3_vec_iter") generated 3 warnings
[INFO] [stderr] warning: `rust_prog_lang` (bin "2_trait_samples" test) generated 3 warnings (3 duplicates)
[INFO] [stderr] warning: `rust_prog_lang` (bin "5_lifetime_generic_samples" test) generated 4 warnings (4 duplicates)
[INFO] [stderr] warning: `rust_prog_lang` (bin "5_rc_refcell_samples") generated 1 warning (1 duplicate)
[INFO] [stderr] warning: `rust_prog_lang` (bin "2_enum_sample" test) generated 4 warnings (4 duplicates)
[INFO] [stderr] warning: `rust_prog_lang` (bin "7_string_slices") generated 1 warning (1 duplicate)
[INFO] [stderr] warning: `rust_prog_lang` (bin "1_box_samples" test) generated 6 warnings (6 duplicates)
[INFO] [stderr] warning: `rust_prog_lang` (bin "6_mutex_samples") generated 4 warnings (4 duplicates)
[INFO] [stderr] warning: `rust_prog_lang` (bin "5_mut_immut_references") generated 3 warnings (3 duplicates)
[INFO] [stderr] warning: `rust_prog_lang` (lib test) generated 10 warnings (10 duplicates)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.10s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/rust_prog_lang-fbc42dc4e3ea7b01)
[INFO] [stderr]      Running unittests src/bin/chap15/1_box_samples.rs (/opt/rustwide/target/debug/deps/1_box_samples-1888d548c249075f)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/bin/chap13/1_closure_samples.rs (/opt/rustwide/target/debug/deps/1_closure_samples-27eff57024441e87)
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/bin/chap6/1_enum_sample.rs (/opt/rustwide/target/debug/deps/1_enum_sample-afc017e53b3fde19)
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/bin/chap10/1_generic_samples.rs (/opt/rustwide/target/debug/deps/1_generic_samples-7425511493472d0b)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/bin/chap9/1_panic_samples.rs (/opt/rustwide/target/debug/deps/1_panic_samples-3bd64b27336051db)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stderr]      Running unittests src/bin/chap5/1_struct_sample.rs (/opt/rustwide/target/debug/deps/1_struct_sample-4eade73268d178fe)
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stderr]      Running unittests src/bin/chap11/1_test_samples.rs (/opt/rustwide/target/debug/deps/1_test_samples-ed9c95fd3741c75b)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 6 tests
[INFO] [stdout] test tests::greeting_contains_name ... ok
[INFO] [stdout] test tests::it_works ... ok
[INFO] [stdout] test tests::greeting_contains_name2 ... ok
[INFO] [stdout] test tests::it_adds_two ... ok
[INFO] [stdout] test tests::greater_than_100 - should panic ... ok
[INFO] [stdout] test tests::greater_than_100B - should panic ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/bin/chap16/1_thread_samples.rs (/opt/rustwide/target/debug/deps/1_thread_samples-e0f2b7d0646b1128)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/bin/chap4/1_variable_scope.rs (/opt/rustwide/target/debug/deps/1_variable_scope-13209f3c4abe1b33)
[INFO] [stderr]      Running unittests src/bin/chap8/1_vec_sample.rs (/opt/rustwide/target/debug/deps/1_vec_sample-19dc56542cbba9cd)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stderr]      Running unittests src/bin/chap13/2_closure_samples.rs (/opt/rustwide/target/debug/deps/2_closure_samples-eb36d7bc32d8fb08)
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test call_with_different_values ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- call_with_different_values stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'call_with_different_values' (43) panicked at src/bin/chap13/2_closure_samples.rs:65:5:
[INFO] [stdout] assertion `left == right` failed
[INFO] [stdout]   left: 1
[INFO] [stdout]  right: 2
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x57859bca9272 - std[716c9a7a72e5c14e]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x57859bca9272 - std[716c9a7a72e5c14e]::backtrace_rs::backtrace::trace_unsynchronized::<std[716c9a7a72e5c14e]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x57859bca9272 - std[716c9a7a72e5c14e]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x57859bca9272 - <<std[716c9a7a72e5c14e]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[c5ed12ab89cc536a]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x57859bcbdaaa - <core[c5ed12ab89cc536a]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x57859bcbdaaa - core[c5ed12ab89cc536a]::fmt::write
[INFO] [stdout]    6:     0x57859bcae0a6 - std[716c9a7a72e5c14e]::io::default_write_fmt::<alloc[9c68fdf4f4f29218]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x57859bcae0a6 - <alloc[9c68fdf4f4f29218]::vec::Vec<u8> as std[716c9a7a72e5c14e]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x57859bc8773f - <std[716c9a7a72e5c14e]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x57859bc8773f - std[716c9a7a72e5c14e]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x57859bca1559 - std[716c9a7a72e5c14e]::panicking::default_hook
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x57859bc3ce5e - <alloc[9c68fdf4f4f29218]::boxed::Box<dyn for<'a, 'b> core[c5ed12ab89cc536a]::ops::function::Fn<(&'a std[716c9a7a72e5c14e]::panic::PanicHookInfo<'b>,), Output = ()> + core[c5ed12ab89cc536a]::marker::Sync + core[c5ed12ab89cc536a]::marker::Send> as core[c5ed12ab89cc536a]::ops::function::Fn<(&std[716c9a7a72e5c14e]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   12:     0x57859bc3ce5e - test[64760d2bdea328cc]::test_main_with_exit_callback::<test[64760d2bdea328cc]::test_main::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x57859bca1712 - <alloc[9c68fdf4f4f29218]::boxed::Box<dyn for<'a, 'b> core[c5ed12ab89cc536a]::ops::function::Fn<(&'a std[716c9a7a72e5c14e]::panic::PanicHookInfo<'b>,), Output = ()> + core[c5ed12ab89cc536a]::marker::Sync + core[c5ed12ab89cc536a]::marker::Send> as core[c5ed12ab89cc536a]::ops::function::Fn<(&std[716c9a7a72e5c14e]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   14:     0x57859bca1712 - std[716c9a7a72e5c14e]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x57859bc877f8 - std[716c9a7a72e5c14e]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x57859bc7f1c9 - std[716c9a7a72e5c14e]::sys::backtrace::__rust_end_short_backtrace::<std[716c9a7a72e5c14e]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x57859bc8864d - __rustc[4f0b026143eab78e]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x57859bcbe11c - core[c5ed12ab89cc536a]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x57859bcbe033 - core[c5ed12ab89cc536a]::panicking::assert_failed_inner
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panicking.rs:439:17
[INFO] [stdout]   20:     0x57859bc7c99a - core[c5ed12ab89cc536a]::panicking::assert_failed::<u32, u32>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panicking.rs:394:5
[INFO] [stdout]   21:     0x57859bc30908 - 2_closure_samples[7abcd9d33010e350]::call_with_different_values
[INFO] [stdout]                                at /opt/rustwide/workdir/src/bin/chap13/2_closure_samples.rs:65:5
[INFO] [stdout]   22:     0x57859bc30817 - 2_closure_samples[7abcd9d33010e350]::call_with_different_values::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/bin/chap13/2_closure_samples.rs:62:32
[INFO] [stdout]   23:     0x57859bc31136 - <2_closure_samples[7abcd9d33010e350]::call_with_different_values::{closure#0} as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x57859bc3120b - <fn() -> core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x57859bc3120b - test[64760d2bdea328cc]::__rust_begin_short_backtrace::<core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>, fn() -> core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:663:18
[INFO] [stdout]   26:     0x57859bc3da6a - test[64760d2bdea328cc]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:74
[INFO] [stdout]   27:     0x57859bc3da6a - <core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   28:     0x57859bc3da6a - std[716c9a7a72e5c14e]::panicking::catch_unwind::do_call::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}>, core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   29:     0x57859bc3da6a - std[716c9a7a72e5c14e]::panicking::catch_unwind::<core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>, core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   30:     0x57859bc3da6a - std[716c9a7a72e5c14e]::panic::catch_unwind::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<test[64760d2bdea328cc]::run_test_in_process::{closure#0}>, core[c5ed12ab89cc536a]::result::Result<(), alloc[9c68fdf4f4f29218]::string::String>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   31:     0x57859bc3da6a - test[64760d2bdea328cc]::run_test_in_process
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:686:27
[INFO] [stdout]   32:     0x57859bc3da6a - test[64760d2bdea328cc]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:607:43
[INFO] [stdout]   33:     0x57859bc37f34 - test[64760d2bdea328cc]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/test/src/lib.rs:637:41
[INFO] [stdout]   34:     0x57859bc37f34 - std[716c9a7a72e5c14e]::sys::backtrace::__rust_begin_short_backtrace::<test[64760d2bdea328cc]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   35:     0x57859bc40562 - std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked::<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   36:     0x57859bc40562 - <core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   37:     0x57859bc40562 - std[716c9a7a72e5c14e]::panicking::catch_unwind::do_call::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:581:40
[INFO] [stdout]   38:     0x57859bc40562 - std[716c9a7a72e5c14e]::panicking::catch_unwind::<(), core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panicking.rs:544:19
[INFO] [stdout]   39:     0x57859bc40562 - std[716c9a7a72e5c14e]::panic::catch_unwind::<core[c5ed12ab89cc536a]::panic::unwind_safe::AssertUnwindSafe<std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/panic.rs:359:14
[INFO] [stdout]   40:     0x57859bc40562 - std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked::<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   41:     0x57859bc40562 - <std[716c9a7a72e5c14e]::thread::lifecycle::spawn_unchecked<test[64760d2bdea328cc]::run_test::{closure#1}, ()>::{closure#1} as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   42:     0x57859bca8b1f - <alloc[9c68fdf4f4f29218]::boxed::Box<dyn core[c5ed12ab89cc536a]::ops::function::FnOnce<(), Output = ()> + core[c5ed12ab89cc536a]::marker::Send> as core[c5ed12ab89cc536a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   43:     0x57859bca8b1f - <std[716c9a7a72e5c14e]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/2fd6efc32704647e64d3d646d21c4c68eae100e4/library/std/src/sys/thread/unix.rs:119:17
[INFO] [stdout]   44:     0x7d5c36a14aa4 - <unknown>
[INFO] [stdout]   45:     0x7d5c36aa1a64 - clone
[INFO] [stdout]   46:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     call_with_different_values
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--bin 2_closure_samples`
[INFO] running `Command { std: "docker" "inspect" "97650a4a5376603a1097a85f08f8060d6f58d7e694c09f2b38224921d9d442d4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "97650a4a5376603a1097a85f08f8060d6f58d7e694c09f2b38224921d9d442d4", kill_on_drop: false }`
[INFO] [stdout] 97650a4a5376603a1097a85f08f8060d6f58d7e694c09f2b38224921d9d442d4
