[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 1.54.0 for beta-1.55-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftokiwadai%2Frust_prog_lang" "/workspace/builds/worker-14/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-14/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/tokiwadai/rust_prog_lang on toolchain 1.54.0
[INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+1.54.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[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-14/source/Cargo.toml
[INFO] crate git repo https://github.com/tokiwadai/rust_prog_lang already has a lockfile, it will not be regenerated
[INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+1.54.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-14/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-14/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:34b6a614d2c27851fe6cbf88fbd1137609cefab8b10d0615aaeb6fd47975d74e" "/opt/rustwide/cargo-home/bin/cargo" "+1.54.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 120dbc4417828dceb51bdec61fc1c525c5585b333ca886927ed4851bc49a5147
[INFO] running `Command { std: "docker" "start" "-a" "120dbc4417828dceb51bdec61fc1c525c5585b333ca886927ed4851bc49a5147", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "120dbc4417828dceb51bdec61fc1c525c5585b333ca886927ed4851bc49a5147", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "120dbc4417828dceb51bdec61fc1c525c5585b333ca886927ed4851bc49a5147", kill_on_drop: false }`
[INFO] [stdout] 120dbc4417828dceb51bdec61fc1c525c5585b333ca886927ed4851bc49a5147
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-14/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-14/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=warn" "-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:34b6a614d2c27851fe6cbf88fbd1137609cefab8b10d0615aaeb6fd47975d74e" "/opt/rustwide/cargo-home/bin/cargo" "+1.54.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 72b28eed9b519269847d24e63bcc8184afc3663c7e3fe4a8abd75526e2570e41
[INFO] running `Command { std: "docker" "start" "-a" "72b28eed9b519269847d24e63bcc8184afc3663c7e3fe4a8abd75526e2570e41", 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)]` 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 is never used: `seat_at_table`
[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]   = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `take_order`
[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 is never used: `serve_order`
[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 is never used: `take_payment`
[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: function is never used: `serve_order`
[INFO] [stdout]   --> src/lib.rs:16:4
[INFO] [stdout]    |
[INFO] [stdout] 16 | fn serve_order() {}
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field is never read: `seasonal_fruit`
[INFO] [stdout]   --> src/lib.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 21 |         seasonal_fruit: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `cook_order`
[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 is never used: `fix_incorrect_order`
[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: 10 warnings emitted
[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)]` 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]    = note: `#[warn(unused_doc_comments)]` on by default
[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/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] 
[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] 
[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]    = note: `#[warn(unused_doc_comments)]` on by default
[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: function is never used: `read_username_from_file`
[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)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `read_username_from_file2`
[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 is never used: `read_username_from_file3`
[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: `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)]` 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)]` on by default
[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)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `largest_not_work`
[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)]` 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:13
[INFO] [stdout]   |
[INFO] [stdout] 7 |     let mut s2 = "hello world!";
[INFO] [stdout]   |             ^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_assignments)]` on by default
[INFO] [stdout]   = help: maybe it is overwritten before being read?
[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)]` 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)]` 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]    = note: `#[warn(unused_doc_comments)]` 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] 
[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] 48 | |         }
[INFO] [stdout] 49 | |     });
[INFO] [stdout]    | |______- rustdoc does not generate documentation for expressions
[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] 
[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] 
[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] 
[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]    = note: `#[warn(unused_doc_comments)]` 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] 
[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] 
[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] 
[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] 
[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)]` 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: `s`
[INFO] [stdout]  --> src/bin/chap8/4_string_samples.rs:3:13
[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)]` 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: 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)]` 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]    = note: `#[warn(unused_doc_comments)]` on by default
[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: 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)]` 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] 
[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] 
[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] 
[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] 
[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)]` 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: 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 3 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `distance_from_origin`
[INFO] [stdout]   --> src/bin/chap10/1_generic_samples.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 |     fn distance_from_origin(&self) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 5 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 2 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[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]    = note: `#[warn(unused_doc_comments)]` 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] 
[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] 
[INFO] [stdout] warning: 3 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[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)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 3 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `new`
[INFO] [stdout]  --> src/bin/chap13/6_create_own_iter_samples.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 |     fn new() -> Counter {
[INFO] [stdout]   |        ^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` 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 is never used: `some_function`
[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)]` 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] 23 | |
[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]    = note: `#[warn(unused_doc_comments)]` on by default
[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: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 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)]` on by default
[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] 13 | |
[INFO] [stdout] 14 | |             The call to lock would fail if another thread holding the lock panicked.
[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] 
[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]    = note: `#[warn(unused_doc_comments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 3 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 10 warnings emitted
[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)]` 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]    = note: `#[warn(unused_doc_comments)]` 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] 
[INFO] [stdout] warning: 8 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `new`
[INFO] [stdout]   --> src/bin/chap10/4_generic_trait_samples.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 |     fn new(x: T, y: T) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `shoes_in_my_size`
[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]   = note: `#[warn(dead_code)]` 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)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field is never read: `value`
[INFO] [stdout]   --> src/bin/chap11/1_test_samples.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     value: i32,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 3 warnings emitted
[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)]` 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] 21 | |
[INFO] [stdout] 22 | |         The two threads continue alternating,
[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]    = note: `#[warn(unused_doc_comments)]` 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)]` 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]    = note: `#[warn(unused_doc_comments)]` 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)]` 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 is never used: `longest_x`
[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)]` 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)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 3 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 6 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 4 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 3 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 4 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 3 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished dev [unoptimized + debuginfo] target(s) in 4.26s
[INFO] running `Command { std: "docker" "inspect" "72b28eed9b519269847d24e63bcc8184afc3663c7e3fe4a8abd75526e2570e41", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "72b28eed9b519269847d24e63bcc8184afc3663c7e3fe4a8abd75526e2570e41", kill_on_drop: false }`
[INFO] [stdout] 72b28eed9b519269847d24e63bcc8184afc3663c7e3fe4a8abd75526e2570e41
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-14/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-14/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=warn" "-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:34b6a614d2c27851fe6cbf88fbd1137609cefab8b10d0615aaeb6fd47975d74e" "/opt/rustwide/cargo-home/bin/cargo" "+1.54.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 701a571881309aca7eb95f2130714f5c2c44bb6942dd21822d7632fa50b4f5ab
[INFO] running `Command { std: "docker" "start" "-a" "701a571881309aca7eb95f2130714f5c2c44bb6942dd21822d7632fa50b4f5ab", 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)]` 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 is never used: `seat_at_table`
[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]   = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `take_order`
[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 is never used: `serve_order`
[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 is never used: `take_payment`
[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: function is never used: `serve_order`
[INFO] [stdout]   --> src/lib.rs:16:4
[INFO] [stdout]    |
[INFO] [stdout] 16 | fn serve_order() {}
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field is never read: `seasonal_fruit`
[INFO] [stdout]   --> src/lib.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 21 |         seasonal_fruit: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `cook_order`
[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 is never used: `fix_incorrect_order`
[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: 10 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling rust_prog_lang v0.1.0 (/opt/rustwide/workdir)
[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]    = note: `#[warn(unused_doc_comments)]` 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)]` 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 is never used: `longest_x`
[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)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 4 warnings emitted
[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]    = note: `#[warn(unused_doc_comments)]` on by default
[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: 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)]` 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] 
[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] 
[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] 
[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] 
[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)]` 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: 8 warnings emitted
[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)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[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] 21 | |
[INFO] [stdout] 22 | |         The two threads continue alternating,
[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]    = note: `#[warn(unused_doc_comments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `distance_from_origin`
[INFO] [stdout]   --> src/bin/chap10/1_generic_samples.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 |     fn distance_from_origin(&self) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[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)]` 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: 3 warnings emitted
[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)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field is never read: `value`
[INFO] [stdout]   --> src/bin/chap11/1_test_samples.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     value: i32,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` 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)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 3 warnings emitted
[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]    = note: `#[warn(unused_doc_comments)]` 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] 
[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] 
[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] 
[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] 
[INFO] [stdout] warning: 5 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `shoes_in_my_size`
[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]   = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[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]    = note: `#[warn(unused_doc_comments)]` 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] 
[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] 
[INFO] [stdout] warning: 3 warnings emitted
[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]    = note: `#[warn(unused_doc_comments)]` 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] 
[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] 
[INFO] [stdout] warning: associated function is never used: `new`
[INFO] [stdout]   --> src/bin/chap10/4_generic_trait_samples.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 |     fn new(x: T, y: T) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[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)]` 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 is never used: `seat_at_table`
[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]   = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `take_order`
[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 is never used: `serve_order`
[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 is never used: `take_payment`
[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: function is never used: `serve_order`
[INFO] [stdout]   --> src/lib.rs:16:4
[INFO] [stdout]    |
[INFO] [stdout] 16 | fn serve_order() {}
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field is never read: `seasonal_fruit`
[INFO] [stdout]   --> src/lib.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 21 |         seasonal_fruit: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `cook_order`
[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 is never used: `fix_incorrect_order`
[INFO] [stdout]   --> src/lib.rs:34:8
[INFO] [stdout]    |
[INFO] [stdout] 34 |     fn fix_incorrect_order() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `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)]` 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]    = note: `#[warn(unused_doc_comments)]` on by default
[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 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)]` 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] 23 | |
[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]    = note: `#[warn(unused_doc_comments)]` on by default
[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: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 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)]` on by default
[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] 13 | |
[INFO] [stdout] 14 | |             The call to lock would fail if another thread holding the lock panicked.
[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] 
[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)]` 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)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `distance_from_origin`
[INFO] [stdout]   --> src/bin/chap10/1_generic_samples.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 |     fn distance_from_origin(&self) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` 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] 78 | | //            self.sent_messages.push(String::from(message));
[INFO] [stdout] 79 | |
[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]    = note: `#[warn(unused_doc_comments)]` 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]    = note: `#[warn(unused_doc_comments)]` on by default
[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 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)]` 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)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 3 warnings emitted
[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)]` 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]    = note: `#[warn(unused_doc_comments)]` 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] 
[INFO] [stdout] warning: 3 warnings emitted
[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)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]  --> src/bin/chap8/4_string_samples.rs:3:13
[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)]` 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: 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)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 10 warnings emitted
[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)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `largest_not_work`
[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)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 2 warnings emitted
[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]    = note: `#[warn(unused_doc_comments)]` 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] 
[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] 48 | |         }
[INFO] [stdout] 49 | |     });
[INFO] [stdout]    | |______- rustdoc does not generate documentation for expressions
[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] 
[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] 
[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] 
[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)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[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]    = note: `#[warn(unused_doc_comments)]` on by default
[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/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] 
[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] 
[INFO] [stdout] warning: 3 warnings emitted
[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)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `read_username_from_file`
[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)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `read_username_from_file2`
[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 is never used: `read_username_from_file3`
[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: 3 warnings emitted
[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] 21 | |
[INFO] [stdout] 22 | |         The two threads continue alternating,
[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]    = note: `#[warn(unused_doc_comments)]` 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)]` 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]    = note: `#[warn(unused_doc_comments)]` 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] 
[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)]` 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: 3 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `some_function`
[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)]` 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]    = note: `#[warn(unused_doc_comments)]` on by default
[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: 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)]` 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] 
[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] 
[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] 
[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] 
[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)]` 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: 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)]` 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: `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)]` 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]    = note: `#[warn(unused_doc_comments)]` on by default
[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/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] 
[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] 
[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)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 3 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 10 warnings emitted
[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)]` 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 is never used: `some_function`
[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)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 3 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 6 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `new`
[INFO] [stdout]   --> src/bin/chap10/4_generic_trait_samples.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 |     fn new(x: T, y: T) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 4 warnings emitted
[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]    = note: `#[warn(unused_doc_comments)]` 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] 
[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] 48 | |         }
[INFO] [stdout] 49 | |     });
[INFO] [stdout]    | |______- rustdoc does not generate documentation for expressions
[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] 
[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] 
[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] 
[INFO] [stdout] warning: 6 warnings emitted
[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]    = note: `#[warn(unused_doc_comments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[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]    = note: `#[warn(unused_doc_comments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[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)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `s2` is never read
[INFO] [stdout]  --> src/bin/chap4/1_variable_scope.rs:7:13
[INFO] [stdout]   |
[INFO] [stdout] 7 |     let mut s2 = "hello world!";
[INFO] [stdout]   |             ^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_assignments)]` on by default
[INFO] [stdout]   = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 8 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]  --> src/bin/chap8/4_string_samples.rs:3:13
[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)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 3 warnings emitted
[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] 23 | |
[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]    = note: `#[warn(unused_doc_comments)]` on by default
[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: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 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)]` on by default
[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] 13 | |
[INFO] [stdout] 14 | |             The call to lock would fail if another thread holding the lock panicked.
[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] 
[INFO] [stdout] warning: 4 warnings emitted
[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: value assigned to `s2` is never read
[INFO] [stdout]  --> src/bin/chap4/1_variable_scope.rs:7:13
[INFO] [stdout]   |
[INFO] [stdout] 7 |     let mut s2 = "hello world!";
[INFO] [stdout]   |             ^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_assignments)]` on by default
[INFO] [stdout]   = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[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)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 3 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `new`
[INFO] [stdout]  --> src/bin/chap13/6_create_own_iter_samples.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 |     fn new() -> Counter {
[INFO] [stdout]   |        ^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[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)]` on by default
[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)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `largest_not_work`
[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)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 3 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `read_username_from_file`
[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)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `read_username_from_file2`
[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 is never used: `read_username_from_file3`
[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/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)]` 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]    = note: `#[warn(unused_doc_comments)]` 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)]` 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: 3 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `longest_x`
[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)]` 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)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field is never read: `value`
[INFO] [stdout]   --> src/bin/chap11/1_test_samples.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     value: i32,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` 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]    = note: `#[warn(unused_doc_comments)]` 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] 
[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] 
[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] 
[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] 
[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)]` 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: 2 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 10 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 4 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 3 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 5 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 4 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished test [unoptimized + debuginfo] target(s) in 6.67s
[INFO] running `Command { std: "docker" "inspect" "701a571881309aca7eb95f2130714f5c2c44bb6942dd21822d7632fa50b4f5ab", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "701a571881309aca7eb95f2130714f5c2c44bb6942dd21822d7632fa50b4f5ab", kill_on_drop: false }`
[INFO] [stdout] 701a571881309aca7eb95f2130714f5c2c44bb6942dd21822d7632fa50b4f5ab
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-14/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-14/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=warn" "-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:34b6a614d2c27851fe6cbf88fbd1137609cefab8b10d0615aaeb6fd47975d74e" "/opt/rustwide/cargo-home/bin/cargo" "+1.54.0" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 29c15b1cf8fae66cc579af936515d2265acde6f0aa86fe5f04cef041ca219faa
[INFO] running `Command { std: "docker" "start" "-a" "29c15b1cf8fae66cc579af936515d2265acde6f0aa86fe5f04cef041ca219faa", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[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)]` 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 is never used: `seat_at_table`
[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]   = note: `#[warn(dead_code)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `take_order`
[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 is never used: `serve_order`
[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 is never used: `take_payment`
[INFO] [stderr]  --> src/front_of_house.rs:6:8
[INFO] [stderr]   |
[INFO] [stderr] 6 |     fn take_payment() {}
[INFO] [stderr]   |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `serve_order`
[INFO] [stderr]   --> src/lib.rs:16:4
[INFO] [stderr]    |
[INFO] [stderr] 16 | fn serve_order() {}
[INFO] [stderr]    |    ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field is never read: `seasonal_fruit`
[INFO] [stderr]   --> src/lib.rs:21:9
[INFO] [stderr]    |
[INFO] [stderr] 21 |         seasonal_fruit: String,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `cook_order`
[INFO] [stderr]   --> src/lib.rs:33:8
[INFO] [stderr]    |
[INFO] [stderr] 33 |     fn cook_order() {}
[INFO] [stderr]    |        ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `fix_incorrect_order`
[INFO] [stderr]   --> src/lib.rs:34:8
[INFO] [stderr]    |
[INFO] [stderr] 34 |     fn fix_incorrect_order() {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: 10 warnings emitted
[INFO] [stderr] 
[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)]` 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 is never used: `seat_at_table`
[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]   = note: `#[warn(dead_code)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `take_order`
[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 is never used: `serve_order`
[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 is never used: `take_payment`
[INFO] [stderr]  --> src/front_of_house.rs:6:8
[INFO] [stderr]   |
[INFO] [stderr] 6 |     fn take_payment() {}
[INFO] [stderr]   |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `serve_order`
[INFO] [stderr]   --> src/lib.rs:16:4
[INFO] [stderr]    |
[INFO] [stderr] 16 | fn serve_order() {}
[INFO] [stderr]    |    ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field is never read: `seasonal_fruit`
[INFO] [stderr]   --> src/lib.rs:21:9
[INFO] [stderr]    |
[INFO] [stderr] 21 |         seasonal_fruit: String,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `cook_order`
[INFO] [stderr]   --> src/lib.rs:33:8
[INFO] [stderr]    |
[INFO] [stderr] 33 |     fn cook_order() {}
[INFO] [stderr]    |        ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `fix_incorrect_order`
[INFO] [stderr]   --> src/lib.rs:34:8
[INFO] [stderr]    |
[INFO] [stderr] 34 |     fn fix_incorrect_order() {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: 10 warnings emitted
[INFO] [stderr] 
[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] 78 | | //            self.sent_messages.push(String::from(message));
[INFO] [stderr] 79 | |
[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]    = note: `#[warn(unused_doc_comments)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: 1 warning emitted
[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]    = note: `#[warn(unused_doc_comments)]` 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] 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] 48 | |         }
[INFO] [stderr] 49 | |     });
[INFO] [stderr]    | |______- rustdoc does not generate documentation for expressions
[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] 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] 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] warning: 6 warnings emitted
[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)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: 1 warning emitted
[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)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: 1 warning emitted
[INFO] [stderr] 
[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)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: 1 warning emitted
[INFO] [stderr] 
[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)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: field is never read: `value`
[INFO] [stderr]   --> src/bin/chap11/1_test_samples.rs:14:5
[INFO] [stderr]    |
[INFO] [stderr] 14 |     value: i32,
[INFO] [stderr]    |     ^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` 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)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: 3 warnings emitted
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `shoes_in_my_size`
[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]   = note: `#[warn(dead_code)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: 1 warning emitted
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `s2` is never read
[INFO] [stderr]  --> src/bin/chap4/1_variable_scope.rs:7:13
[INFO] [stderr]   |
[INFO] [stderr] 7 |     let mut s2 = "hello world!";
[INFO] [stderr]   |             ^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_assignments)]` on by default
[INFO] [stderr]   = help: maybe it is overwritten before being read?
[INFO] [stderr] 
[INFO] [stderr] warning: 1 warning emitted
[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)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: 1 warning emitted
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `s2` is never read
[INFO] [stderr]  --> src/bin/chap4/1_variable_scope.rs:7:13
[INFO] [stderr]   |
[INFO] [stderr] 7 |     let mut s2 = "hello world!";
[INFO] [stderr]   |             ^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_assignments)]` on by default
[INFO] [stderr]   = help: maybe it is overwritten before being read?
[INFO] [stderr] 
[INFO] [stderr] warning: 1 warning emitted
[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]    = note: `#[warn(unused_doc_comments)]` 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] 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] 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] 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] warning: 5 warnings emitted
[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)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `largest_not_work`
[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)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: 2 warnings emitted
[INFO] [stderr] 
[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)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: 1 warning emitted
[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)]` 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 is never used: `some_function`
[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)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: 3 warnings emitted
[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)]` 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: 3 warnings emitted
[INFO] [stderr] 
[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)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: 1 warning emitted
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `s`
[INFO] [stderr]  --> src/bin/chap8/4_string_samples.rs:3:13
[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)]` 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: 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)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: 10 warnings emitted
[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]    = note: `#[warn(unused_doc_comments)]` 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] 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] warning: 3 warnings emitted
[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] 21 | |
[INFO] [stderr] 22 | |         The two threads continue alternating,
[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]    = note: `#[warn(unused_doc_comments)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: 1 warning emitted
[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] 23 | |
[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]    = note: `#[warn(unused_doc_comments)]` on by default
[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: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 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)]` on by default
[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] 13 | |
[INFO] [stderr] 14 | |             The call to lock would fail if another thread holding the lock panicked.
[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] warning: 4 warnings emitted
[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]    = note: `#[warn(unused_doc_comments)]` on by default
[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: 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)]` 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] 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] 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] 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] 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)]` 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: 8 warnings emitted
[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]    = note: `#[warn(unused_doc_comments)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: 1 warning emitted
[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]    = note: `#[warn(unused_doc_comments)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: 1 warning emitted
[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]    = note: `#[warn(unused_doc_comments)]` on by default
[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: 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)]` 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] 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] 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] 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] 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)]` 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: 8 warnings emitted
[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)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: 1 warning emitted
[INFO] [stderr] 
[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)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: field is never read: `value`
[INFO] [stderr]   --> src/bin/chap11/1_test_samples.rs:14:5
[INFO] [stderr]    |
[INFO] [stderr] 14 |     value: i32,
[INFO] [stderr]    |     ^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` 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)]` 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: 4 warnings emitted
[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)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: 1 warning emitted
[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]    = note: `#[warn(unused_doc_comments)]` 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)]` 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 is never used: `longest_x`
[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)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: 4 warnings emitted
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `read_username_from_file`
[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)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `read_username_from_file2`
[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 is never used: `read_username_from_file3`
[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: 3 warnings emitted
[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]    = note: `#[warn(unused_doc_comments)]` 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] 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] 48 | |         }
[INFO] [stderr] 49 | |     });
[INFO] [stderr]    | |______- rustdoc does not generate documentation for expressions
[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] 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] 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] warning: 6 warnings emitted
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `distance_from_origin`
[INFO] [stderr]   --> src/bin/chap10/1_generic_samples.rs:12:8
[INFO] [stderr]    |
[INFO] [stderr] 12 |     fn distance_from_origin(&self) -> f32 {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: 1 warning emitted
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `read_username_from_file`
[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)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `read_username_from_file2`
[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 is never used: `read_username_from_file3`
[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: 3 warnings emitted
[INFO] [stderr] 
[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)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: 1 warning emitted
[INFO] [stderr] 
[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)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: 1 warning emitted
[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)]` 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]    = note: `#[warn(unused_doc_comments)]` 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] warning: 3 warnings emitted
[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]    = note: `#[warn(unused_doc_comments)]` 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] 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] 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] 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] warning: 5 warnings emitted
[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]    = note: `#[warn(unused_doc_comments)]` on by default
[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/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] 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] warning: 3 warnings emitted
[INFO] [stderr] 
[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]    = note: `#[warn(unused_doc_comments)]` on by default
[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 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)]` 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)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: 3 warnings emitted
[INFO] [stderr] 
[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)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: 1 warning emitted
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `new`
[INFO] [stderr]  --> src/bin/chap13/6_create_own_iter_samples.rs:6:8
[INFO] [stderr]   |
[INFO] [stderr] 6 |     fn new() -> Counter {
[INFO] [stderr]   |        ^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(dead_code)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: 1 warning emitted
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `distance_from_origin`
[INFO] [stderr]   --> src/bin/chap10/1_generic_samples.rs:12:8
[INFO] [stderr]    |
[INFO] [stderr] 12 |     fn distance_from_origin(&self) -> f32 {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: 1 warning emitted
[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)]` 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 is never used: `some_function`
[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)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: 3 warnings emitted
[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]    = note: `#[warn(unused_doc_comments)]` on by default
[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/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] 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] warning: 3 warnings emitted
[INFO] [stderr] 
[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]    = note: `#[warn(unused_doc_comments)]` on by default
[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 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)]` 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)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: 3 warnings emitted
[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]    = note: `#[warn(unused_doc_comments)]` 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)]` 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 is never used: `longest_x`
[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)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: 4 warnings emitted
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `s`
[INFO] [stderr]  --> src/bin/chap8/4_string_samples.rs:3:13
[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)]` 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: 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)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: 10 warnings emitted
[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] 23 | |
[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]    = note: `#[warn(unused_doc_comments)]` on by default
[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: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 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)]` on by default
[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] 13 | |
[INFO] [stderr] 14 | |             The call to lock would fail if another thread holding the lock panicked.
[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] warning: 4 warnings emitted
[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]    = note: `#[warn(unused_doc_comments)]` 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] 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] warning: 3 warnings emitted
[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] 21 | |
[INFO] [stderr] 22 | |         The two threads continue alternating,
[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]    = note: `#[warn(unused_doc_comments)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: 1 warning emitted
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `new`
[INFO] [stderr]   --> src/bin/chap10/4_generic_trait_samples.rs:10:8
[INFO] [stderr]    |
[INFO] [stderr] 10 |     fn new(x: T, y: T) -> Self {
[INFO] [stderr]    |        ^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: 1 warning emitted
[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)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `largest_not_work`
[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)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: 2 warnings emitted
[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)]` 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]    = note: `#[warn(unused_doc_comments)]` 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] warning: 3 warnings emitted
[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)]` 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: 3 warnings emitted
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `new`
[INFO] [stderr]   --> src/bin/chap10/4_generic_trait_samples.rs:10:8
[INFO] [stderr]    |
[INFO] [stderr] 10 |     fn new(x: T, y: T) -> Self {
[INFO] [stderr]    |        ^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: 1 warning emitted
[INFO] [stderr] 
[INFO] [stderr]     Finished test [unoptimized + debuginfo] target(s) in 1.34s
[INFO] [stderr]      Running unittests (/opt/rustwide/target/debug/deps/rust_prog_lang-79eb6ee13297d668)
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test front_of_house::adder::tests::internal ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests (/opt/rustwide/target/debug/deps/1_box_samples-c047c0d0c05ed40b)
[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 (/opt/rustwide/target/debug/deps/1_closure_samples-76115ffe88d568fb)
[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 (/opt/rustwide/target/debug/deps/1_enum_sample-b96ebc27f7a8d84a)
[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 (/opt/rustwide/target/debug/deps/1_generic_samples-245e9682dc394b88)
[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 (/opt/rustwide/target/debug/deps/1_panic_samples-c0fe10154c06f294)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stderr]      Running unittests (/opt/rustwide/target/debug/deps/1_struct_sample-7998ea884285b52a)
[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 (/opt/rustwide/target/debug/deps/1_test_samples-fff4086f245c1e8d)
[INFO] [stdout] 
[INFO] [stdout] running 6 tests
[INFO] [stdout] test tests::greeting_contains_name ... ok
[INFO] [stdout] test tests::greeting_contains_name2 ... ok
[INFO] [stdout] test tests::it_adds_two ... ok
[INFO] [stdout] test tests::it_works ... 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.01s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests (/opt/rustwide/target/debug/deps/1_thread_samples-3e53a30f582a2a75)
[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 (/opt/rustwide/target/debug/deps/1_variable_scope-7eb85c1d96eba788)
[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 (/opt/rustwide/target/debug/deps/1_vec_sample-355a474fa6e745cc)
[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 (/opt/rustwide/target/debug/deps/2_closure_samples-ec5634c031544a7f)
[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] thread 'call_with_different_values' panicked at 'assertion failed: `(left == right)`
[INFO] [stdout]   left: `1`,
[INFO] [stdout]  right: `2`', src/bin/chap13/2_closure_samples.rs:65:5
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5612d8824360 - std::backtrace_rs::backtrace::libunwind::trace::h34055254b57d8e79
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/../../backtrace/src/backtrace/libunwind.rs:90:5
[INFO] [stdout]    1:     0x5612d8824360 - std::backtrace_rs::backtrace::trace_unsynchronized::h8f1e3fbd9afff6ec
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
[INFO] [stdout]    2:     0x5612d8824360 - std::sys_common::backtrace::_print_fmt::h3a99a796b770c360
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/sys_common/backtrace.rs:67:5
[INFO] [stdout]    3:     0x5612d8824360 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h32d1f94a80615d18
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/sys_common/backtrace.rs:46:22
[INFO] [stdout]    4:     0x5612d8846b5c - core::fmt::write::h306731c068f7162c
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/core/src/fmt/mod.rs:1110:17
[INFO] [stdout]    5:     0x5612d8821285 - std::io::Write::write_fmt::h87f19b0a2cd190bc
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/io/mod.rs:1588:15
[INFO] [stdout]    6:     0x5612d88264cb - std::sys_common::backtrace::_print::h5abaa2601a852287
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/sys_common/backtrace.rs:49:5
[INFO] [stdout]    7:     0x5612d88264cb - std::sys_common::backtrace::print::h8d81445442bb638f
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/sys_common/backtrace.rs:36:9
[INFO] [stdout]    8:     0x5612d88264cb - std::panicking::default_hook::{{closure}}::hcfe804496a9fa747
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/panicking.rs:208:50
[INFO] [stdout]    9:     0x5612d8825fdc - std::panicking::default_hook::hbea8e3ccf2ba8901
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/panicking.rs:222:9
[INFO] [stdout]   10:     0x5612d8826b94 - std::panicking::rust_panic_with_hook::h7ee9e1a2d0f8975a
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/panicking.rs:622:17
[INFO] [stdout]   11:     0x5612d8826677 - std::panicking::begin_panic_handler::{{closure}}::h8ab3b4491718b2c7
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/panicking.rs:519:13
[INFO] [stdout]   12:     0x5612d882485c - std::sys_common::backtrace::__rust_end_short_backtrace::hd489062ffa586a9f
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/sys_common/backtrace.rs:141:18
[INFO] [stdout]   13:     0x5612d88265d9 - rust_begin_unwind
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/panicking.rs:515:5
[INFO] [stdout]   14:     0x5612d87d2641 - core::panicking::panic_fmt::hca6330e3e14086b4
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/core/src/panicking.rs:92:14
[INFO] [stdout]   15:     0x5612d8845478 - core::panicking::assert_failed_inner::h33b45280069a80ed
[INFO] [stdout]   16:     0x5612d87d35aa - core::panicking::assert_failed::ha05735a9262892ad
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/core/src/panicking.rs:117:5
[INFO] [stdout]   17:     0x5612d87d3350 - _2_closure_samples::call_with_different_values::h30d431994f0f2d0e
[INFO] [stdout]                                at /opt/rustwide/workdir/src/bin/chap13/2_closure_samples.rs:65:5
[INFO] [stdout]   18:     0x5612d87d328a - _2_closure_samples::call_with_different_values::{{closure}}::hb4d6b20421806250
[INFO] [stdout]                                at /opt/rustwide/workdir/src/bin/chap13/2_closure_samples.rs:62:1
[INFO] [stdout]   19:     0x5612d87d30fe - core::ops::function::FnOnce::call_once::h2563868e190d18ad
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/core/src/ops/function.rs:227:5
[INFO] [stdout]   20:     0x5612d87fb863 - core::ops::function::FnOnce::call_once::h152e7e439ff59e19
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/core/src/ops/function.rs:227:5
[INFO] [stdout]   21:     0x5612d87fb863 - test::__rust_begin_short_backtrace::h0908f3b1fdbb72ab
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/test/src/lib.rs:577:5
[INFO] [stdout]   22:     0x5612d87fa320 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::hf6d2a51e5587546c
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/alloc/src/boxed.rs:1575:9
[INFO] [stdout]   23:     0x5612d87fa320 - <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h8af660f3a89ef593
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/panic.rs:347:9
[INFO] [stdout]   24:     0x5612d87fa320 - std::panicking::try::do_call::hd36aef60f84b6d36
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/panicking.rs:401:40
[INFO] [stdout]   25:     0x5612d87fa320 - std::panicking::try::h9932b4480e69817c
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/panicking.rs:365:19
[INFO] [stdout]   26:     0x5612d87fa320 - std::panic::catch_unwind::h6aa177099cfff5f8
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/panic.rs:434:14
[INFO] [stdout]   27:     0x5612d87fa320 - test::run_test_in_process::h5884d6f2d99e20c3
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/test/src/lib.rs:600:18
[INFO] [stdout]   28:     0x5612d87fa320 - test::run_test::run_test_inner::{{closure}}::h6fdc58c6d5f5b6e3
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/test/src/lib.rs:492:39
[INFO] [stdout]   29:     0x5612d87d39d2 - test::run_test::run_test_inner::{{closure}}::h408365d67a78ade8
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/test/src/lib.rs:519:37
[INFO] [stdout]   30:     0x5612d87d39d2 - std::sys_common::backtrace::__rust_begin_short_backtrace::hb560b77c4f701523
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/sys_common/backtrace.rs:125:18
[INFO] [stdout]   31:     0x5612d87d7588 - std::thread::Builder::spawn_unchecked::{{closure}}::{{closure}}::hf2e7831dad93c597
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/thread/mod.rs:481:17
[INFO] [stdout]   32:     0x5612d87d7588 - <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::hd2e08783d8be4d02
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/panic.rs:347:9
[INFO] [stdout]   33:     0x5612d87d7588 - std::panicking::try::do_call::h062597b7acfd6b82
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/panicking.rs:401:40
[INFO] [stdout]   34:     0x5612d87d7588 - std::panicking::try::h0d7b79db04c14552
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/panicking.rs:365:19
[INFO] [stdout]   35:     0x5612d87d7588 - std::panic::catch_unwind::hb01a0b5e7c8cd43b
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/panic.rs:434:14
[INFO] [stdout]   36:     0x5612d87d7588 - std::thread::Builder::spawn_unchecked::{{closure}}::h5bde48cc887e0d1e
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/thread/mod.rs:480:30
[INFO] [stdout]   37:     0x5612d87d7588 - core::ops::function::FnOnce::call_once{{vtable.shim}}::h745ea30807a29e55
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/core/src/ops/function.rs:227:5
[INFO] [stdout]   38:     0x5612d882b657 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h7ece6cfefaff1005
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/alloc/src/boxed.rs:1575:9
[INFO] [stdout]   39:     0x5612d882b657 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::hb8b48e55c21f193e
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/alloc/src/boxed.rs:1575:9
[INFO] [stdout]   40:     0x5612d882b657 - std::sys::unix::thread::Thread::new::thread_start::h8c7c4450dba62914
[INFO] [stdout]                                at /rustc/a178d0322ce20e33eac124758e837cbd80a6f633/library/std/src/sys/unix/thread.rs:71:17
[INFO] [stdout]   41:     0x7fd84f211609 - start_thread
[INFO] [stdout]   42:     0x7fd84efe3293 - clone
[INFO] [stdout]   43:                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.01s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass '--bin 2_closure_samples'
[INFO] running `Command { std: "docker" "inspect" "29c15b1cf8fae66cc579af936515d2265acde6f0aa86fe5f04cef041ca219faa", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "29c15b1cf8fae66cc579af936515d2265acde6f0aa86fe5f04cef041ca219faa", kill_on_drop: false }`
[INFO] [stdout] 29c15b1cf8fae66cc579af936515d2265acde6f0aa86fe5f04cef041ca219faa
