[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 beta-2020-10-09 for beta-1.48-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftokiwadai%2Frust_prog_lang" "/workspace/builds/worker-4/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/tokiwadai/rust_prog_lang on toolchain beta-2020-10-09
[INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+beta-2020-10-09" "read-manifest" "--manifest-path" "Cargo.toml", 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-4/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" "+beta-2020-10-09" "fetch" "--locked" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4/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" "rustops/crates-build-env@sha256:d92eaeed33fa75130ca1ee6c8a01d1ffb62bac859dfdfb3450e3e5d1c0146529" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2020-10-09" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] e534e56946875b5f14aa270a2d1002295d29e83e659e51ad09ce104f05e9c135
[INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
[INFO] running `Command { std: "docker" "start" "-a" "e534e56946875b5f14aa270a2d1002295d29e83e659e51ad09ce104f05e9c135", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "e534e56946875b5f14aa270a2d1002295d29e83e659e51ad09ce104f05e9c135", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "e534e56946875b5f14aa270a2d1002295d29e83e659e51ad09ce104f05e9c135", kill_on_drop: false }`
[INFO] [stdout] e534e56946875b5f14aa270a2d1002295d29e83e659e51ad09ce104f05e9c135
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4/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" "rustops/crates-build-env@sha256:d92eaeed33fa75130ca1ee6c8a01d1ffb62bac859dfdfb3450e3e5d1c0146529" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2020-10-09" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
[INFO] [stdout] fdc6fd30a433bed406f619a12d279eaea51a4b0ba467d58fa7df041ab8b1e80f
[INFO] running `Command { std: "docker" "start" "-a" "fdc6fd30a433bed406f619a12d279eaea51a4b0ba467d58fa7df041ab8b1e80f", 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 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 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/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: 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: `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: 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 variable: `s`
[INFO] [stdout]  --> src/bin/chap8/4_string_samples.rs:3:9
[INFO] [stdout]   |
[INFO] [stdout] 3 |     let mut s = String::new();
[INFO] [stdout]   |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_variables)]` 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: 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 3 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 3 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: 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: 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: 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: 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: 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 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: 3 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/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: 10 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning 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: 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: 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: 2 warnings emitted
[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: 1 warning emitted
[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 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: 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: 3 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: 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: 8 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/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]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ rustdoc does not generate documentation for macro invocations
[INFO] [stdout]    |
[INFO] [stdout]    = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap16/6_mutex_samples.rs:35:5
[INFO] [stdout]    |
[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] 38 | |         So Rust is telling us that we can’t move the ownership of lock counter
[INFO] [stdout] ...  |
[INFO] [stdout] 42 | |                                    ^^^^^^^ value moved into closure here, in previous iteration of loop
[INFO] [stdout] 43 | |         */
[INFO] [stdout]    | |__________^ rustdoc does not generate documentation for macro invocations
[INFO] [stdout]    |
[INFO] [stdout]    = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap16/6_mutex_samples.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 46 | /     /** Compile Error
[INFO] [stdout] 47 | |         Unfortunately, Rc<T> is not safe to share across threads.
[INFO] [stdout] 48 | |         When Rc<T> manages the reference count,
[INFO] [stdout] 49 | |         it adds to the count for each call to clone and subtracts from the count
[INFO] [stdout] ...  |
[INFO] [stdout] 54 | |                      std::rc::Rc<std::sync::Mutex<i32>> cannot be sent between threads safely
[INFO] [stdout] 55 | |         */
[INFO] [stdout]    | |__________^ rustdoc does not generate documentation for macro invocations
[INFO] [stdout]    |
[INFO] [stdout]    = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap16/6_mutex_samples.rs:56:5
[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]    | |______^ 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 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: `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: 4 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: 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: value assigned to `s2` is never read
[INFO] [stdout]  --> src/bin/chap4/1_variable_scope.rs:7:9
[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 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: 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: 3 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 6 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 3 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: 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: 7 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished dev [unoptimized + debuginfo] target(s) in 15.62s
[INFO] running `Command { std: "docker" "inspect" "fdc6fd30a433bed406f619a12d279eaea51a4b0ba467d58fa7df041ab8b1e80f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "fdc6fd30a433bed406f619a12d279eaea51a4b0ba467d58fa7df041ab8b1e80f", kill_on_drop: false }`
[INFO] [stdout] fdc6fd30a433bed406f619a12d279eaea51a4b0ba467d58fa7df041ab8b1e80f
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4/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" "rustops/crates-build-env@sha256:d92eaeed33fa75130ca1ee6c8a01d1ffb62bac859dfdfb3450e3e5d1c0146529" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2020-10-09" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
[INFO] [stdout] 205501eb7d4e510285b5bc8ec33aba1c30b9815d2b2560fae141a9736d6b3ba3
[INFO] running `Command { std: "docker" "start" "-a" "205501eb7d4e510285b5bc8ec33aba1c30b9815d2b2560fae141a9736d6b3ba3", 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/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: `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: 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: `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/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]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ rustdoc does not generate documentation for macro invocations
[INFO] [stdout]    |
[INFO] [stdout]    = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap16/6_mutex_samples.rs:35:5
[INFO] [stdout]    |
[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] 38 | |         So Rust is telling us that we can’t move the ownership of lock counter
[INFO] [stdout] ...  |
[INFO] [stdout] 42 | |                                    ^^^^^^^ value moved into closure here, in previous iteration of loop
[INFO] [stdout] 43 | |         */
[INFO] [stdout]    | |__________^ rustdoc does not generate documentation for macro invocations
[INFO] [stdout]    |
[INFO] [stdout]    = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap16/6_mutex_samples.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 46 | /     /** Compile Error
[INFO] [stdout] 47 | |         Unfortunately, Rc<T> is not safe to share across threads.
[INFO] [stdout] 48 | |         When Rc<T> manages the reference count,
[INFO] [stdout] 49 | |         it adds to the count for each call to clone and subtracts from the count
[INFO] [stdout] ...  |
[INFO] [stdout] 54 | |                      std::rc::Rc<std::sync::Mutex<i32>> cannot be sent between threads safely
[INFO] [stdout] 55 | |         */
[INFO] [stdout]    | |__________^ rustdoc does not generate documentation for macro invocations
[INFO] [stdout]    |
[INFO] [stdout]    = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap16/6_mutex_samples.rs:56:5
[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]    | |______^ 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 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: 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: 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: 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/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: 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 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: 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: 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 7 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: value assigned to `s2` is never read
[INFO] [stdout]  --> src/bin/chap4/1_variable_scope.rs:7:9
[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: 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: 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 10 warnings emitted
[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: 4 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: 3 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 3 warnings emitted
[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/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 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: 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 variable: `s`
[INFO] [stdout]  --> src/bin/chap8/4_string_samples.rs:3:9
[INFO] [stdout]   |
[INFO] [stdout] 3 |     let mut s = String::new();
[INFO] [stdout]   |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_variables)]` 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: 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: 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 6 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: 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: 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: 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: 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 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: 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 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: 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: 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: 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: 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 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 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: 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: 3 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `c`
[INFO] [stdout]   --> src/bin/chap15/3_rc_samples.rs:56:13
[INFO] [stdout]    |
[INFO] [stdout] 56 |         let c = List::Cons(4, Rc::clone(&a));
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_c`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function 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 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: 1 warning 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/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: 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: value assigned to `s2` is never read
[INFO] [stdout]  --> src/bin/chap4/1_variable_scope.rs:7:9
[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: 8 warnings 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: `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: 2 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: 1 warning emitted
[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: 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/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: 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: 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: 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 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]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ rustdoc does not generate documentation for macro invocations
[INFO] [stdout]    |
[INFO] [stdout]    = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap16/6_mutex_samples.rs:35:5
[INFO] [stdout]    |
[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] 38 | |         So Rust is telling us that we can’t move the ownership of lock counter
[INFO] [stdout] ...  |
[INFO] [stdout] 42 | |                                    ^^^^^^^ value moved into closure here, in previous iteration of loop
[INFO] [stdout] 43 | |         */
[INFO] [stdout]    | |__________^ rustdoc does not generate documentation for macro invocations
[INFO] [stdout]    |
[INFO] [stdout]    = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap16/6_mutex_samples.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 46 | /     /** Compile Error
[INFO] [stdout] 47 | |         Unfortunately, Rc<T> is not safe to share across threads.
[INFO] [stdout] 48 | |         When Rc<T> manages the reference count,
[INFO] [stdout] 49 | |         it adds to the count for each call to clone and subtracts from the count
[INFO] [stdout] ...  |
[INFO] [stdout] 54 | |                      std::rc::Rc<std::sync::Mutex<i32>> cannot be sent between threads safely
[INFO] [stdout] 55 | |         */
[INFO] [stdout]    | |__________^ rustdoc does not generate documentation for macro invocations
[INFO] [stdout]    |
[INFO] [stdout]    = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/bin/chap16/6_mutex_samples.rs:56:5
[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]    | |______^ 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: 7 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: 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: 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 variable: `s`
[INFO] [stdout]  --> src/bin/chap8/4_string_samples.rs:3:9
[INFO] [stdout]   |
[INFO] [stdout] 3 |     let mut s = String::new();
[INFO] [stdout]   |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_variables)]` 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 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: `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: 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: 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: `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: 5 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: 3 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 4 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 10 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 3 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 17.54s
[INFO] running `Command { std: "docker" "inspect" "205501eb7d4e510285b5bc8ec33aba1c30b9815d2b2560fae141a9736d6b3ba3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "205501eb7d4e510285b5bc8ec33aba1c30b9815d2b2560fae141a9736d6b3ba3", kill_on_drop: false }`
[INFO] [stdout] 205501eb7d4e510285b5bc8ec33aba1c30b9815d2b2560fae141a9736d6b3ba3
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4/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" "rustops/crates-build-env@sha256:d92eaeed33fa75130ca1ee6c8a01d1ffb62bac859dfdfb3450e3e5d1c0146529" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2020-10-09" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 5412ac555d7af6677b99d9b8472df49fe2759331144e52ab6ae45f010a0bd6d4
[INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
[INFO] running `Command { std: "docker" "start" "-a" "5412ac555d7af6677b99d9b8472df49fe2759331144e52ab6ae45f010a0bd6d4", kill_on_drop: false }`
[INFO] [stderr] warning: unused variable: `order1`
[INFO] [stderr]   --> src/lib.rs:57:9
[INFO] [stderr]    |
[INFO] [stderr] 57 |     let order1 = back_of_house::Appetizer::Soup;
[INFO] [stderr]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_order1`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` 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: 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: `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: 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: unused variable: `s`
[INFO] [stderr]  --> src/bin/chap8/4_string_samples.rs:3:9
[INFO] [stderr]   |
[INFO] [stderr] 3 |     let mut s = String::new();
[INFO] [stderr]   |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_variables)]` 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 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 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: 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: 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/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/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/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/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/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 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 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: 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: 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 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/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/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/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/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: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/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/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 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: 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: 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 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:9
[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: `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: 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: 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 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]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ rustdoc does not generate documentation for macro invocations
[INFO] [stderr]    |
[INFO] [stderr]    = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]   --> src/bin/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: unused doc comment
[INFO] [stderr]   --> src/bin/chap16/6_mutex_samples.rs:35:5
[INFO] [stderr]    |
[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] 38 | |         So Rust is telling us that we can’t move the ownership of lock counter
[INFO] [stderr] ...  |
[INFO] [stderr] 42 | |                                    ^^^^^^^ value moved into closure here, in previous iteration of loop
[INFO] [stderr] 43 | |         */
[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: 3 warnings emitted
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]   --> src/bin/chap16/6_mutex_samples.rs:46:5
[INFO] [stderr]    |
[INFO] [stderr] 46 | /     /** Compile Error
[INFO] [stderr] 47 | |         Unfortunately, Rc<T> is not safe to share across threads.
[INFO] [stderr] 48 | |         When Rc<T> manages the reference count,
[INFO] [stderr] 49 | |         it adds to the count for each call to clone and subtracts from the count
[INFO] [stderr] ...  |
[INFO] [stderr] 54 | |                      std::rc::Rc<std::sync::Mutex<i32>> cannot be sent between threads safely
[INFO] [stderr] 55 | |         */
[INFO] [stderr]    | |__________^ rustdoc does not generate documentation for macro invocations
[INFO] [stderr]    |
[INFO] [stderr]    = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]   --> src/bin/chap16/6_mutex_samples.rs:56:5
[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]    | |______^ rustdoc does not generate documentation for macro invocations
[INFO] [stderr]    |
[INFO] [stderr]    = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]   --> src/bin/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 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 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 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: 7 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 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: `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: `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: value assigned to `s2` is never read
[INFO] [stderr]  --> src/bin/chap4/1_variable_scope.rs:7:9
[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/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: `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 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: 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 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: 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: `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 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/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/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]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ rustdoc does not generate documentation for macro invocations
[INFO] [stderr]    |
[INFO] [stderr]    = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion
[INFO] [stderr] 
[INFO] [stderr] warning: unused doc comment
[INFO] [stderr]   --> src/bin/chap16/6_mutex_samples.rs:35:5
[INFO] [stderr]    |
[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] 38 | |         So Rust is telling us that we can’t move the ownership of lock counter
[INFO] [stderr] ...  |
[INFO] [stderr] 42 | |                                    ^^^^^^^ value moved into closure here, in previous iteration of loop
[INFO] [stderr] 43 | |         */
[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: 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: unused doc comment
[INFO] [stderr]   --> src/bin/chap16/6_mutex_samples.rs:46:5
[INFO] [stderr]    |
[INFO] [stderr] 46 | /     /** Compile Error
[INFO] [stderr] 47 | |         Unfortunately, Rc<T> is not safe to share across threads.
[INFO] [stderr] 48 | |         When Rc<T> manages the reference count,
[INFO] [stderr] 49 | |         it adds to the count for each call to clone and subtracts from the count
[INFO] [stderr] ...  |
[INFO] [stderr] 54 | |                      std::rc::Rc<std::sync::Mutex<i32>> cannot be sent between threads safely
[INFO] [stderr] 55 | |         */
[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: 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/6_mutex_samples.rs:56:5
[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]    | |______^ 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: 7 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: unused variable: `s`
[INFO] [stderr]  --> src/bin/chap8/4_string_samples.rs:3:9
[INFO] [stderr]   |
[INFO] [stderr] 3 |     let mut s = String::new();
[INFO] [stderr]   |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_variables)]` 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: 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 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 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/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/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: 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 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: `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 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: 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 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: `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: 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: `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: 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: `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: `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: `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 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]     Finished test [unoptimized + debuginfo] target(s) in 0.12s
[INFO] [stdout] 
[INFO] [stderr]      Running /opt/rustwide/target/debug/deps/rust_prog_lang-24e864b3ff7cffad
[INFO] [stdout] running 1 test
[INFO] [stderr]      Running /opt/rustwide/target/debug/deps/1_box_samples-1f17b0bbecf0b8b1
[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
[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
[INFO] [stdout] 
[INFO] [stderr]      Running /opt/rustwide/target/debug/deps/1_closure_samples-40e3be9e4f061cb4
[INFO] [stdout] 
[INFO] [stderr]      Running /opt/rustwide/target/debug/deps/1_enum_sample-80e974c7b126a87d
[INFO] [stdout] running 0 tests
[INFO] [stderr]      Running /opt/rustwide/target/debug/deps/1_generic_samples-82fb2c1bd595e8a4
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
[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
[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
[INFO] [stdout] 
[INFO] [stderr]      Running /opt/rustwide/target/debug/deps/1_panic_samples-27021b2f52bbbe64
[INFO] [stdout] 
[INFO] [stderr]      Running /opt/rustwide/target/debug/deps/1_struct_sample-27079b43b570146f
[INFO] [stdout] running 0 tests
[INFO] [stderr]      Running /opt/rustwide/target/debug/deps/1_test_samples-ea89000d7b8529f7
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
[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
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 6 tests
[INFO] [stdout] test tests::greeting_contains_name2 ... ok
[INFO] [stdout] test tests::greeting_contains_name ... ok
[INFO] [stdout] test tests::it_adds_two ... ok
[INFO] [stdout] test tests::it_works ... ok
[INFO] [stderr]      Running /opt/rustwide/target/debug/deps/1_thread_samples-033aed38cdd718ef
[INFO] [stdout] test tests::greater_than_100 ... ok
[INFO] [stderr]      Running /opt/rustwide/target/debug/deps/1_variable_scope-f93944795214e1b1
[INFO] [stdout] test tests::greater_than_100B ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
[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
[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
[INFO] [stdout] 
[INFO] [stderr]      Running /opt/rustwide/target/debug/deps/1_vec_sample-0221bdf29fa0c0c2
[INFO] [stdout] 
[INFO] [stderr]      Running /opt/rustwide/target/debug/deps/2_closure_samples-d48b283fb431be89
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test call_with_different_values ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- call_with_different_values stdout ----
[INFO] [stdout] 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:     0x558ff1eb63c0 - std::backtrace_rs::backtrace::libunwind::trace::h7cf3ca97bd83fbab
[INFO] [stdout]                                at /rustc/212e76c31d461462544b5d516d3bdc99fc8f016e/library/std/src/../../backtrace/src/backtrace/libunwind.rs:96
[INFO] [stdout]    1:     0x558ff1eb63c0 - std::backtrace_rs::backtrace::trace_unsynchronized::h5a69c674b2d9ea5c
[INFO] [stdout]                                at /rustc/212e76c31d461462544b5d516d3bdc99fc8f016e/library/std/src/../../backtrace/src/backtrace/mod.rs:66
[INFO] [stdout]    2:     0x558ff1eb63c0 - std::sys_common::backtrace::_print_fmt::hdf72478dfcb50678
[INFO] [stdout]                                at /rustc/212e76c31d461462544b5d516d3bdc99fc8f016e/library/std/src/sys_common/backtrace.rs:79
[INFO] [stdout]    3:     0x558ff1eb63c0 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h1e0bdbb35e83deca
[INFO] [stdout]                                at /rustc/212e76c31d461462544b5d516d3bdc99fc8f016e/library/std/src/sys_common/backtrace.rs:58
[INFO] [stdout]    4:     0x558ff1ed865c - core::fmt::write::he67f9b17bcb7ee73
[INFO] [stdout]                                at /rustc/212e76c31d461462544b5d516d3bdc99fc8f016e/library/core/src/fmt/mod.rs:1080
[INFO] [stdout]    5:     0x558ff1e61e86 - std::io::Write::write_fmt::h68b2e5fe4c78e61a
[INFO] [stdout]                                at /rustc/212e76c31d461462544b5d516d3bdc99fc8f016e/library/std/src/io/mod.rs:1516
[INFO] [stdout]    6:     0x558ff1eb0bdd - std::io::impls::<impl std::io::Write for alloc::boxed::Box<W>>::write_fmt::he9ebec865e28165c
[INFO] [stdout]                                at /rustc/212e76c31d461462544b5d516d3bdc99fc8f016e/library/std/src/io/impls.rs:179
[INFO] [stdout]    7:     0x558ff1eb88dd - std::sys_common::backtrace::_print::haa20918e28a126c5
[INFO] [stdout]                                at /rustc/212e76c31d461462544b5d516d3bdc99fc8f016e/library/std/src/sys_common/backtrace.rs:61
[INFO] [stdout]    8:     0x558ff1eb88dd - std::sys_common::backtrace::print::h49e772a4873d9076
[INFO] [stdout]                                at /rustc/212e76c31d461462544b5d516d3bdc99fc8f016e/library/std/src/sys_common/backtrace.rs:48
[INFO] [stdout]    9:     0x558ff1eb88dd - std::panicking::default_hook::{{closure}}::hb218b305d15e3f11
[INFO] [stdout]                                at /rustc/212e76c31d461462544b5d516d3bdc99fc8f016e/library/std/src/panicking.rs:208
[INFO] [stdout]   10:     0x558ff1eb8532 - std::panicking::default_hook::h63997b7b949e1ce0
[INFO] [stdout]                                at /rustc/212e76c31d461462544b5d516d3bdc99fc8f016e/library/std/src/panicking.rs:224
[INFO] [stdout]   11:     0x558ff1eb8fc1 - std::panicking::rust_panic_with_hook::hb54f09ccadf64bd3
[INFO] [stdout]                                at /rustc/212e76c31d461462544b5d516d3bdc99fc8f016e/library/std/src/panicking.rs:577
[INFO] [stdout]   12:     0x558ff1eb8b69 - std::panicking::begin_panic_handler::{{closure}}::h8b43445b254eeb30
[INFO] [stdout]                                at /rustc/212e76c31d461462544b5d516d3bdc99fc8f016e/library/std/src/panicking.rs:484
[INFO] [stdout]   13:     0x558ff1eb684c - std::sys_common::backtrace::__rust_end_short_backtrace::hacd691450edfeae0
[INFO] [stdout]                                at /rustc/212e76c31d461462544b5d516d3bdc99fc8f016e/library/std/src/sys_common/backtrace.rs:153
[INFO] [stdout]   14:     0x558ff1eb8b29 - rust_begin_unwind
[INFO] [stdout]                                at /rustc/212e76c31d461462544b5d516d3bdc99fc8f016e/library/std/src/panicking.rs:483
[INFO] [stdout]   15:     0x558ff1eb8adb - std::panicking::begin_panic_fmt::hef75366dd3a9de61
[INFO] [stdout]                                at /rustc/212e76c31d461462544b5d516d3bdc99fc8f016e/library/std/src/panicking.rs:437
[INFO] [stdout]   16:     0x558ff1e60956 - _2_closure_samples::call_with_different_values::hf4ade6d6e39bc56a
[INFO] [stdout]                                at /opt/rustwide/workdir/src/bin/chap13/2_closure_samples.rs:65
[INFO] [stdout]   17:     0x558ff1e607aa - _2_closure_samples::call_with_different_values::{{closure}}::ha6478c9a8eb73805
[INFO] [stdout]                                at /opt/rustwide/workdir/src/bin/chap13/2_closure_samples.rs:62
[INFO] [stdout]   18:     0x558ff1e6065e - core::ops::function::FnOnce::call_once::h249000040d6ad99a
[INFO] [stdout]                                at /rustc/212e76c31d461462544b5d516d3bdc99fc8f016e/library/core/src/ops/function.rs:227
[INFO] [stdout]   19:     0x558ff1e88c73 - core::ops::function::FnOnce::call_once::hcd3fa2f0696c1015
[INFO] [stdout]                                at /rustc/212e76c31d461462544b5d516d3bdc99fc8f016e/library/core/src/ops/function.rs:227
[INFO] [stdout]   20:     0x558ff1e88c73 - test::__rust_begin_short_backtrace::h113f97c5e5ab7d4a
[INFO] [stdout]                                at /rustc/212e76c31d461462544b5d516d3bdc99fc8f016e/library/test/src/lib.rs:516
[INFO] [stdout]   21:     0x558ff1e87178 - <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once::h01fd09163cae2442
[INFO] [stdout]                                at /rustc/212e76c31d461462544b5d516d3bdc99fc8f016e/library/alloc/src/boxed.rs:1042
[INFO] [stdout]   22:     0x558ff1e87178 - <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h0da6b685ae74a04a
[INFO] [stdout]                                at /rustc/212e76c31d461462544b5d516d3bdc99fc8f016e/library/std/src/panic.rs:308
[INFO] [stdout]   23:     0x558ff1e87178 - std::panicking::try::do_call::h564a32f132f2c264
[INFO] [stdout]                                at /rustc/212e76c31d461462544b5d516d3bdc99fc8f016e/library/std/src/panicking.rs:381
[INFO] [stdout]   24:     0x558ff1e87178 - std::panicking::try::h477cfd4b06a2e64a
[INFO] [stdout]                                at /rustc/212e76c31d461462544b5d516d3bdc99fc8f016e/library/std/src/panicking.rs:345
[INFO] [stdout]   25:     0x558ff1e87178 - std::panic::catch_unwind::hdb5abc6d008c399d
[INFO] [stdout]                                at /rustc/212e76c31d461462544b5d516d3bdc99fc8f016e/library/std/src/panic.rs:382
[INFO] [stdout]   26:     0x558ff1e87178 - test::run_test_in_process::he8ff7dec91b275be
[INFO] [stdout]                                at /rustc/212e76c31d461462544b5d516d3bdc99fc8f016e/library/test/src/lib.rs:543
[INFO] [stdout]   27:     0x558ff1e87178 - test::run_test::run_test_inner::{{closure}}::hfd9f49e4a4ff9162
[INFO] [stdout]                                at /rustc/212e76c31d461462544b5d516d3bdc99fc8f016e/library/test/src/lib.rs:449
[INFO] [stdout]   28:     0x558ff1e61206 - std::sys_common::backtrace::__rust_begin_short_backtrace::hee6d60d5bb466aff
[INFO] [stdout]                                at /rustc/212e76c31d461462544b5d516d3bdc99fc8f016e/library/std/src/sys_common/backtrace.rs:137
[INFO] [stdout]   29:     0x558ff1e66375 - std::thread::Builder::spawn_unchecked::{{closure}}::{{closure}}::h988cecdf9ebbaf00
[INFO] [stdout]                                at /rustc/212e76c31d461462544b5d516d3bdc99fc8f016e/library/std/src/thread/mod.rs:464
[INFO] [stdout]   30:     0x558ff1e66375 - <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h330cf727ec126982
[INFO] [stdout]                                at /rustc/212e76c31d461462544b5d516d3bdc99fc8f016e/library/std/src/panic.rs:308
[INFO] [stdout]   31:     0x558ff1e66375 - std::panicking::try::do_call::h6cd25078f4a5ea13
[INFO] [stdout]                                at /rustc/212e76c31d461462544b5d516d3bdc99fc8f016e/library/std/src/panicking.rs:381
[INFO] [stdout]   32:     0x558ff1e66375 - std::panicking::try::h84b1d49961301705
[INFO] [stdout]                                at /rustc/212e76c31d461462544b5d516d3bdc99fc8f016e/library/std/src/panicking.rs:345
[INFO] [stdout]   33:     0x558ff1e66375 - std::panic::catch_unwind::h6145324593b3654b
[INFO] [stdout]                                at /rustc/212e76c31d461462544b5d516d3bdc99fc8f016e/library/std/src/panic.rs:382
[INFO] [stdout]   34:     0x558ff1e66375 - std::thread::Builder::spawn_unchecked::{{closure}}::ha41e72e8024f9192
[INFO] [stdout]                                at /rustc/212e76c31d461462544b5d516d3bdc99fc8f016e/library/std/src/thread/mod.rs:463
[INFO] [stdout]   35:     0x558ff1e66375 - core::ops::function::FnOnce::call_once{{vtable.shim}}::hfb5034cf1f1be223
[INFO] [stdout]                                at /rustc/212e76c31d461462544b5d516d3bdc99fc8f016e/library/core/src/ops/function.rs:227
[INFO] [stdout]   36:     0x558ff1ebefea - <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once::hd4d30e37db281e8f
[INFO] [stdout]                                at /rustc/212e76c31d461462544b5d516d3bdc99fc8f016e/library/alloc/src/boxed.rs:1042
[INFO] [stdout]   37:     0x558ff1ebefea - <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once::h019185a215ba16e4
[INFO] [stdout]                                at /rustc/212e76c31d461462544b5d516d3bdc99fc8f016e/library/alloc/src/boxed.rs:1042
[INFO] [stdout]   38:     0x558ff1ebefea - std::sys::unix::thread::Thread::new::thread_start::h33c6d7cf25f9291f
[INFO] [stdout]                                at /rustc/212e76c31d461462544b5d516d3bdc99fc8f016e/library/std/src/sys/unix/thread.rs:87
[INFO] [stdout]   39:     0x7f5493708609 - start_thread
[INFO] [stdout]   40:     0x7f5493993103 - clone
[INFO] [stdout]   41:                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
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass '--bin 2_closure_samples'
[INFO] running `Command { std: "docker" "inspect" "5412ac555d7af6677b99d9b8472df49fe2759331144e52ab6ae45f010a0bd6d4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5412ac555d7af6677b99d9b8472df49fe2759331144e52ab6ae45f010a0bd6d4", kill_on_drop: false }`
[INFO] [stdout] 5412ac555d7af6677b99d9b8472df49fe2759331144e52ab6ae45f010a0bd6d4
