[INFO] cloning repository https://github.com/DreamLarva/learn-rust
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/DreamLarva/learn-rust" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FDreamLarva%2Flearn-rust", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FDreamLarva%2Flearn-rust'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 61935bd35ccb9030747edf3bcbf788e6866678aa
[INFO] checking DreamLarva/learn-rust against try#2cbf9c3ff35600794d69a7dc7ab399810a067910 for pr-129249-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FDreamLarva%2Flearn-rust" "/workspace/builds/worker-2-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/DreamLarva/learn-rust
[INFO] finished tweaking git repo https://github.com/DreamLarva/learn-rust
[INFO] tweaked toml for git repo https://github.com/DreamLarva/learn-rust written to /workspace/builds/worker-2-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/DreamLarva/learn-rust on toolchain 2cbf9c3ff35600794d69a7dc7ab399810a067910
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+2cbf9c3ff35600794d69a7dc7ab399810a067910" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/DreamLarva/learn-rust already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+2cbf9c3ff35600794d69a7dc7ab399810a067910" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 22de3e2e8951df159b5cff384a723f2908fec163b448e512aa915cce3b77a0fa
[INFO] running `Command { std: "docker" "start" "22de3e2e8951df159b5cff384a723f2908fec163b448e512aa915cce3b77a0fa", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "22de3e2e8951df159b5cff384a723f2908fec163b448e512aa915cce3b77a0fa" "/opt/rustwide/cargo-home/bin/cargo" "+2cbf9c3ff35600794d69a7dc7ab399810a067910" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "22de3e2e8951df159b5cff384a723f2908fec163b448e512aa915cce3b77a0fa", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "22de3e2e8951df159b5cff384a723f2908fec163b448e512aa915cce3b77a0fa" "/opt/rustwide/cargo-home/bin/cargo" "+2cbf9c3ff35600794d69a7dc7ab399810a067910" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.101
[INFO] [stderr]    Compiling syn v1.0.76
[INFO] [stderr]     Checking unicode-ident v1.0.18
[INFO] [stderr]    Compiling unicode-xid v0.2.2
[INFO] [stderr]    Compiling libc v0.2.175
[INFO] [stderr]    Compiling getrandom v0.2.2
[INFO] [stderr]     Checking memchr v2.7.4
[INFO] [stderr]     Checking ppv-lite86 v0.2.10
[INFO] [stderr]     Checking adder v0.1.0
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking threadPool v0.1.0 (/opt/rustwide/workdir/threadPool)
[INFO] [stderr]     Checking glob v0.3.1
[INFO] [stdout] warning: crate `threadPool` should have a snake case name
[INFO] [stdout]   |
[INFO] [stdout]   = help: convert the identifier to snake case: `thread_pool`
[INFO] [stdout]   = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking aho-corasick v1.1.3
[INFO] [stderr]     Checking quote v1.0.40
[INFO] [stderr]     Checking rand v0.5.6
[INFO] [stderr]     Checking chrono v0.4.41
[INFO] [stderr]     Checking rand_core v0.6.2
[INFO] [stderr]     Checking regex-automata v0.4.8
[INFO] [stderr]     Checking rand_chacha v0.3.0
[INFO] [stderr]     Checking add-one v0.1.0 (/opt/rustwide/workdir/add-one)
[INFO] [stderr]     Checking adder v0.1.0 (/opt/rustwide/workdir/adder)
[INFO] [stderr]     Checking rand v0.8.3
[INFO] [stderr]     Checking hello_macro_derive v0.1.0 (/opt/rustwide/workdir/derive_macro/hello_macro_derive)
[INFO] [stderr]     Checking proc_marco v0.1.0 (/opt/rustwide/workdir/proc_marco)
[INFO] [stderr]     Checking attribute_macro v0.1.0 (/opt/rustwide/workdir/attribute_macro)
[INFO] [stdout] warning: unused import: `quote::quote`
[INFO] [stdout]  --> attribute_macro/src/lib.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use quote::quote;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `quote::quote`
[INFO] [stdout]  --> attribute_macro/src/lib.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use quote::quote;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `syn`
[INFO] [stdout]  --> attribute_macro/src/lib.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use syn;
[INFO] [stdout]   |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `syn`
[INFO] [stdout]  --> attribute_macro/src/lib.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use syn;
[INFO] [stdout]   |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking regex v1.11.1
[INFO] [stdout] warning: unused import: `quote::quote`
[INFO] [stdout]  --> attribute_macro/src/lib.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use quote::quote;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `syn`
[INFO] [stdout]  --> attribute_macro/src/lib.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use syn;
[INFO] [stdout]   |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking hello_macro v0.1.0 (/opt/rustwide/workdir/derive_macro)
[INFO] [stdout] attr: "GET, "/""
[INFO] [stdout] item: "pub fn macro_attribute() { println!("fn macro_attribute") }"
[INFO] [stdout] attr: "GET, "/""
[INFO] [stdout] item: "pub fn macro_attribute() { println!("fn macro_attribute") }"
[INFO] [stderr]     Checking the_rust_programming_language v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Checking av v0.1.0 (/opt/rustwide/workdir/av)
[INFO] [stdout] warning: unused import: `crate::front_of_house::hosting::add_to_waitlist`
[INFO] [stdout]   --> src/lib.rs:61:5
[INFO] [stdout]    |
[INFO] [stdout] 61 | use crate::front_of_house::hosting::add_to_waitlist;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ch07::plant::Vegetable`
[INFO] [stdout]  --> src/ch07/mod.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::ch07::plant::Vegetable;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::any::Any`
[INFO] [stdout]  --> src/ch07/mod.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 |     use std::any::Any;
[INFO] [stdout]   |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]    --> src/ch07/mod.rs:140:9
[INFO] [stdout]     |
[INFO] [stdout] 140 |     use std::collections::HashMap; // 引入HashMap 的习惯用法 而不是 use std::collections; 在使用 collections::HashMap
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::Result`
[INFO] [stdout]    --> src/ch07/mod.rs:161:13
[INFO] [stdout]     |
[INFO] [stdout] 161 |         use std::fmt::Result;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]    --> src/ch07/mod.rs:197:58
[INFO] [stdout]     |
[INFO] [stdout] 197 |         let secret_number = rand::thread_rng().gen_range((1..100));
[INFO] [stdout]     |                                                          ^      ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 197 -         let secret_number = rand::thread_rng().gen_range((1..100));
[INFO] [stdout] 197 +         let secret_number = rand::thread_rng().gen_range(1..100 );
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]    --> src/ch07/mod.rs:198:58
[INFO] [stdout]     |
[INFO] [stdout] 198 |         let secret_number = rand::thread_rng().gen_range((1..=100));
[INFO] [stdout]     |                                                          ^       ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 198 -         let secret_number = rand::thread_rng().gen_range((1..=100));
[INFO] [stdout] 198 +         let secret_number = rand::thread_rng().gen_range(1..=100 );
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cmp::Ordering`
[INFO] [stdout]    --> src/ch07/mod.rs:205:13
[INFO] [stdout]     |
[INFO] [stdout] 205 |         use std::cmp::Ordering;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io`
[INFO] [stdout]    --> src/ch07/mod.rs:206:13
[INFO] [stdout]     |
[INFO] [stdout] 206 |         use std::io;
[INFO] [stdout]     |             ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `cmp::Ordering` and `io`
[INFO] [stdout]    --> src/ch07/mod.rs:210:19
[INFO] [stdout]     |
[INFO] [stdout] 210 |         use std::{cmp::Ordering, io};
[INFO] [stdout]     |                   ^^^^^^^^^^^^^  ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io`
[INFO] [stdout]    --> src/ch07/mod.rs:215:13
[INFO] [stdout]     |
[INFO] [stdout] 215 |         use std::io;
[INFO] [stdout]     |             ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Write`
[INFO] [stdout]    --> src/ch07/mod.rs:216:13
[INFO] [stdout]     |
[INFO] [stdout] 216 |         use std::io::Write;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Write` and `self`
[INFO] [stdout]    --> src/ch07/mod.rs:220:23
[INFO] [stdout]     |
[INFO] [stdout] 220 |         use std::io::{self, Write};
[INFO] [stdout]     |                       ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::*`
[INFO] [stdout]    --> src/ch07/mod.rs:226:13
[INFO] [stdout]     |
[INFO] [stdout] 226 |         use std::collections::*;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt`
[INFO] [stdout]    --> src/lib.rs:106:5
[INFO] [stdout]     |
[INFO] [stdout] 106 | use std::fmt;
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Result as IoResult`
[INFO] [stdout]    --> src/lib.rs:116:5
[INFO] [stdout]     |
[INFO] [stdout] 116 | use std::io::Result as IoResult;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `borrow` and `cmp::Ordering`
[INFO] [stdout]    --> src/lib.rs:130:11
[INFO] [stdout]     |
[INFO] [stdout] 130 | use std::{borrow, cmp::Ordering};
[INFO] [stdout]     |           ^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Write` and `self`
[INFO] [stdout]    --> src/lib.rs:134:15
[INFO] [stdout]     |
[INFO] [stdout] 134 | use std::io::{self, Write}; // use io 本身 和 io::Write
[INFO] [stdout]     |               ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::*`
[INFO] [stdout]    --> src/lib.rs:137:5
[INFO] [stdout]     |
[INFO] [stdout] 137 | use std::collections::*;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::process`
[INFO] [stdout]    --> src/lib.rs:143:5
[INFO] [stdout]     |
[INFO] [stdout] 143 | use std::process;
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `a`
[INFO] [stdout]   --> src/ch07/mod.rs:24:13
[INFO] [stdout]    |
[INFO] [stdout] 24 |         let a = super::plant::generate_struct();
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_a`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `v`
[INFO] [stdout]   --> src/ch07/mod.rs:56:13
[INFO] [stdout]    |
[INFO] [stdout] 56 |         let v = Vegetable {
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_v`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `order1`
[INFO] [stdout]    --> src/ch07/mod.rs:125:9
[INFO] [stdout]     |
[INFO] [stdout] 125 |     let order1 = menu::Appetizer::Soup;
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_order1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `order2`
[INFO] [stdout]    --> src/ch07/mod.rs:126:9
[INFO] [stdout]     |
[INFO] [stdout] 126 |     let order2 = menu::Appetizer::Salad;
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_order2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `a`
[INFO] [stdout]    --> src/ch07/mod.rs:165:13
[INFO] [stdout]     |
[INFO] [stdout] 165 |         let a: IoResult<i32> = Ok(32);
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `secret_number`
[INFO] [stdout]    --> src/ch07/mod.rs:197:13
[INFO] [stdout]     |
[INFO] [stdout] 197 |         let secret_number = rand::thread_rng().gen_range((1..100));
[INFO] [stdout]     |             ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_secret_number`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `order1`
[INFO] [stdout]   --> src/lib.rs:98:13
[INFO] [stdout]    |
[INFO] [stdout] 98 |         let order1 = back_of_house::Appetizer::Soup;
[INFO] [stdout]    |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_order1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `order2`
[INFO] [stdout]   --> src/lib.rs:99:13
[INFO] [stdout]    |
[INFO] [stdout] 99 |         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: `c1`
[INFO] [stdout]    --> src/lib.rs:313:16
[INFO] [stdout]     |
[INFO] [stdout] 313 |     pub fn mix(c1: PrimaryColor, c2: PrimaryColor) -> SecondaryColor {
[INFO] [stdout]     |                ^^ help: if this is intentional, prefix it with an underscore: `_c1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `c2`
[INFO] [stdout]    --> src/lib.rs:313:34
[INFO] [stdout]     |
[INFO] [stdout] 313 |     pub fn mix(c1: PrimaryColor, c2: PrimaryColor) -> SecondaryColor {
[INFO] [stdout]     |                                  ^^ help: if this is intentional, prefix it with an underscore: `_c2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `serve_order` is never used
[INFO] [stdout]   --> src/lib.rs:21:4
[INFO] [stdout]    |
[INFO] [stdout] 21 | fn serve_order() {}
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `main` is never used
[INFO] [stdout]   --> src/lib.rs:23:4
[INFO] [stdout]    |
[INFO] [stdout] 23 | fn main() {}
[INFO] [stdout]    |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `eat_at_restaurant` is never used
[INFO] [stdout]   --> src/lib.rs:97:12
[INFO] [stdout]    |
[INFO] [stdout] 97 |     pub fn eat_at_restaurant() {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fix_incorrect_order` is never used
[INFO] [stdout]   --> src/lib.rs:27:8
[INFO] [stdout]    |
[INFO] [stdout] 27 |     fn fix_incorrect_order() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cook_order` is never used
[INFO] [stdout]   --> src/lib.rs:33:8
[INFO] [stdout]    |
[INFO] [stdout] 33 |     fn cook_order() {}
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `seasonal_fruit` is never read
[INFO] [stdout]   --> src/lib.rs:42:9
[INFO] [stdout]    |
[INFO] [stdout] 39 |     pub struct Breakfast {
[INFO] [stdout]    |                --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 42 |         seasonal_fruit: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Appetizer` is never used
[INFO] [stdout]   --> src/lib.rs:55:14
[INFO] [stdout]    |
[INFO] [stdout] 55 |     pub enum Appetizer {
[INFO] [stdout]    |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `main` is never used
[INFO] [stdout]    --> src/ch07/mod.rs:101:8
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub fn main() {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `breathe_in` is never used
[INFO] [stdout]   --> src/ch07/mod.rs:20:8
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn breathe_in() {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clarinet` is never used
[INFO] [stdout]   --> src/ch07/mod.rs:11:16
[INFO] [stdout]    |
[INFO] [stdout] 11 |         pub fn clarinet() {
[INFO] [stdout]    |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `private_fn` is never used
[INFO] [stdout]   --> src/ch07/mod.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 |         fn private_fn() {}
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Vegetable` is never constructed
[INFO] [stdout]   --> src/ch07/mod.rs:34:16
[INFO] [stdout]    |
[INFO] [stdout] 34 |     pub struct Vegetable {
[INFO] [stdout]    |                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/ch07/mod.rs:40:16
[INFO] [stdout]    |
[INFO] [stdout] 39 |     impl Vegetable {
[INFO] [stdout]    |     -------------- associated function in this implementation
[INFO] [stdout] 40 |         pub fn new(name: &str) -> Vegetable {
[INFO] [stdout]    |                ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_struct` is never used
[INFO] [stdout]   --> src/ch07/mod.rs:48:12
[INFO] [stdout]    |
[INFO] [stdout] 48 |     pub fn generate_struct() -> Vegetable {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test` is never used
[INFO] [stdout]   --> src/ch07/mod.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 55 |     fn test() {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Appetizer` is never used
[INFO] [stdout]   --> src/ch07/mod.rs:72:14
[INFO] [stdout]    |
[INFO] [stdout] 72 |     pub enum Appetizer {
[INFO] [stdout]    |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clarinet_trio` is never used
[INFO] [stdout]   --> src/ch07/mod.rs:85:12
[INFO] [stdout]    |
[INFO] [stdout] 85 |     pub fn clarinet_trio() {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clarinet` is never used
[INFO] [stdout]  --> src/ch07/sound1.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 |     pub fn clarinet() {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clarinet` is never used
[INFO] [stdout]  --> src/ch07/sound2/instrument.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub fn clarinet() {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clarinet` is never used
[INFO] [stdout]    --> src/ch07/mod.rs:173:24
[INFO] [stdout]     |
[INFO] [stdout] 173 |                 pub fn clarinet() {
[INFO] [stdout]     |                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clarinet_trio` is never used
[INFO] [stdout]    --> src/ch07/mod.rs:183:20
[INFO] [stdout]     |
[INFO] [stdout] 183 |             pub fn clarinet_trio() {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::front_of_house::hosting::add_to_waitlist`
[INFO] [stdout]   --> src/lib.rs:61:5
[INFO] [stdout]    |
[INFO] [stdout] 61 | use crate::front_of_house::hosting::add_to_waitlist;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ch07::plant::Vegetable`
[INFO] [stdout]  --> src/ch07/mod.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::ch07::plant::Vegetable;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::any::Any`
[INFO] [stdout]  --> src/ch07/mod.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 |     use std::any::Any;
[INFO] [stdout]   |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]    --> src/ch07/mod.rs:140:9
[INFO] [stdout]     |
[INFO] [stdout] 140 |     use std::collections::HashMap; // 引入HashMap 的习惯用法 而不是 use std::collections; 在使用 collections::HashMap
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::Result`
[INFO] [stdout]    --> src/ch07/mod.rs:161:13
[INFO] [stdout]     |
[INFO] [stdout] 161 |         use std::fmt::Result;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]    --> src/ch07/mod.rs:197:58
[INFO] [stdout]     |
[INFO] [stdout] 197 |         let secret_number = rand::thread_rng().gen_range((1..100));
[INFO] [stdout]     |                                                          ^      ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 197 -         let secret_number = rand::thread_rng().gen_range((1..100));
[INFO] [stdout] 197 +         let secret_number = rand::thread_rng().gen_range(1..100 );
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]    --> src/ch07/mod.rs:198:58
[INFO] [stdout]     |
[INFO] [stdout] 198 |         let secret_number = rand::thread_rng().gen_range((1..=100));
[INFO] [stdout]     |                                                          ^       ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 198 -         let secret_number = rand::thread_rng().gen_range((1..=100));
[INFO] [stdout] 198 +         let secret_number = rand::thread_rng().gen_range(1..=100 );
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cmp::Ordering`
[INFO] [stdout]    --> src/ch07/mod.rs:205:13
[INFO] [stdout]     |
[INFO] [stdout] 205 |         use std::cmp::Ordering;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io`
[INFO] [stdout]    --> src/ch07/mod.rs:206:13
[INFO] [stdout]     |
[INFO] [stdout] 206 |         use std::io;
[INFO] [stdout]     |             ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `cmp::Ordering` and `io`
[INFO] [stdout]    --> src/ch07/mod.rs:210:19
[INFO] [stdout]     |
[INFO] [stdout] 210 |         use std::{cmp::Ordering, io};
[INFO] [stdout]     |                   ^^^^^^^^^^^^^  ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io`
[INFO] [stdout]    --> src/ch07/mod.rs:215:13
[INFO] [stdout]     |
[INFO] [stdout] 215 |         use std::io;
[INFO] [stdout]     |             ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Write`
[INFO] [stdout]    --> src/ch07/mod.rs:216:13
[INFO] [stdout]     |
[INFO] [stdout] 216 |         use std::io::Write;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Write` and `self`
[INFO] [stdout]    --> src/ch07/mod.rs:220:23
[INFO] [stdout]     |
[INFO] [stdout] 220 |         use std::io::{self, Write};
[INFO] [stdout]     |                       ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::*`
[INFO] [stdout]    --> src/ch07/mod.rs:226:13
[INFO] [stdout]     |
[INFO] [stdout] 226 |         use std::collections::*;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt`
[INFO] [stdout]    --> src/lib.rs:106:5
[INFO] [stdout]     |
[INFO] [stdout] 106 | use std::fmt;
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Result as IoResult`
[INFO] [stdout]    --> src/lib.rs:116:5
[INFO] [stdout]     |
[INFO] [stdout] 116 | use std::io::Result as IoResult;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `borrow` and `cmp::Ordering`
[INFO] [stdout]    --> src/lib.rs:130:11
[INFO] [stdout]     |
[INFO] [stdout] 130 | use std::{borrow, cmp::Ordering};
[INFO] [stdout]     |           ^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Write` and `self`
[INFO] [stdout]    --> src/lib.rs:134:15
[INFO] [stdout]     |
[INFO] [stdout] 134 | use std::io::{self, Write}; // use io 本身 和 io::Write
[INFO] [stdout]     |               ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::*`
[INFO] [stdout]    --> src/lib.rs:137:5
[INFO] [stdout]     |
[INFO] [stdout] 137 | use std::collections::*;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::process`
[INFO] [stdout]    --> src/lib.rs:143:5
[INFO] [stdout]     |
[INFO] [stdout] 143 | use std::process;
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `a`
[INFO] [stdout]   --> src/ch07/mod.rs:24:13
[INFO] [stdout]    |
[INFO] [stdout] 24 |         let a = super::plant::generate_struct();
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_a`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `v`
[INFO] [stdout]   --> src/ch07/mod.rs:56:13
[INFO] [stdout]    |
[INFO] [stdout] 56 |         let v = Vegetable {
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_v`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `order1`
[INFO] [stdout]    --> src/ch07/mod.rs:125:9
[INFO] [stdout]     |
[INFO] [stdout] 125 |     let order1 = menu::Appetizer::Soup;
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_order1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `order2`
[INFO] [stdout]    --> src/ch07/mod.rs:126:9
[INFO] [stdout]     |
[INFO] [stdout] 126 |     let order2 = menu::Appetizer::Salad;
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_order2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `a`
[INFO] [stdout]    --> src/ch07/mod.rs:165:13
[INFO] [stdout]     |
[INFO] [stdout] 165 |         let a: IoResult<i32> = Ok(32);
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `secret_number`
[INFO] [stdout]    --> src/ch07/mod.rs:197:13
[INFO] [stdout]     |
[INFO] [stdout] 197 |         let secret_number = rand::thread_rng().gen_range((1..100));
[INFO] [stdout]     |             ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_secret_number`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `order1`
[INFO] [stdout]   --> src/lib.rs:98:13
[INFO] [stdout]    |
[INFO] [stdout] 98 |         let order1 = back_of_house::Appetizer::Soup;
[INFO] [stdout]    |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_order1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `order2`
[INFO] [stdout]   --> src/lib.rs:99:13
[INFO] [stdout]    |
[INFO] [stdout] 99 |         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: `c1`
[INFO] [stdout]    --> src/lib.rs:313:16
[INFO] [stdout]     |
[INFO] [stdout] 313 |     pub fn mix(c1: PrimaryColor, c2: PrimaryColor) -> SecondaryColor {
[INFO] [stdout]     |                ^^ help: if this is intentional, prefix it with an underscore: `_c1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `c2`
[INFO] [stdout]    --> src/lib.rs:313:34
[INFO] [stdout]     |
[INFO] [stdout] 313 |     pub fn mix(c1: PrimaryColor, c2: PrimaryColor) -> SecondaryColor {
[INFO] [stdout]     |                                  ^^ help: if this is intentional, prefix it with an underscore: `_c2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `serve_order` is never used
[INFO] [stdout]   --> src/lib.rs:21:4
[INFO] [stdout]    |
[INFO] [stdout] 21 | fn serve_order() {}
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `eat_at_restaurant` is never used
[INFO] [stdout]   --> src/lib.rs:97:12
[INFO] [stdout]    |
[INFO] [stdout] 97 |     pub fn eat_at_restaurant() {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fix_incorrect_order` is never used
[INFO] [stdout]   --> src/lib.rs:27:8
[INFO] [stdout]    |
[INFO] [stdout] 27 |     fn fix_incorrect_order() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cook_order` is never used
[INFO] [stdout]   --> src/lib.rs:33:8
[INFO] [stdout]    |
[INFO] [stdout] 33 |     fn cook_order() {}
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `seasonal_fruit` is never read
[INFO] [stdout]   --> src/lib.rs:42:9
[INFO] [stdout]    |
[INFO] [stdout] 39 |     pub struct Breakfast {
[INFO] [stdout]    |                --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 42 |         seasonal_fruit: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Appetizer` is never used
[INFO] [stdout]   --> src/lib.rs:55:14
[INFO] [stdout]    |
[INFO] [stdout] 55 |     pub enum Appetizer {
[INFO] [stdout]    |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `main` is never used
[INFO] [stdout]    --> src/ch07/mod.rs:101:8
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub fn main() {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `breathe_in` is never used
[INFO] [stdout]   --> src/ch07/mod.rs:20:8
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn breathe_in() {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clarinet` is never used
[INFO] [stdout]   --> src/ch07/mod.rs:11:16
[INFO] [stdout]    |
[INFO] [stdout] 11 |         pub fn clarinet() {
[INFO] [stdout]    |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `private_fn` is never used
[INFO] [stdout]   --> src/ch07/mod.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 |         fn private_fn() {}
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Vegetable` is never constructed
[INFO] [stdout]   --> src/ch07/mod.rs:34:16
[INFO] [stdout]    |
[INFO] [stdout] 34 |     pub struct Vegetable {
[INFO] [stdout]    |                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/ch07/mod.rs:40:16
[INFO] [stdout]    |
[INFO] [stdout] 39 |     impl Vegetable {
[INFO] [stdout]    |     -------------- associated function in this implementation
[INFO] [stdout] 40 |         pub fn new(name: &str) -> Vegetable {
[INFO] [stdout]    |                ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_struct` is never used
[INFO] [stdout]   --> src/ch07/mod.rs:48:12
[INFO] [stdout]    |
[INFO] [stdout] 48 |     pub fn generate_struct() -> Vegetable {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test` is never used
[INFO] [stdout]   --> src/ch07/mod.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 55 |     fn test() {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Appetizer` is never used
[INFO] [stdout]   --> src/ch07/mod.rs:72:14
[INFO] [stdout]    |
[INFO] [stdout] 72 |     pub enum Appetizer {
[INFO] [stdout]    |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clarinet_trio` is never used
[INFO] [stdout]   --> src/ch07/mod.rs:85:12
[INFO] [stdout]    |
[INFO] [stdout] 85 |     pub fn clarinet_trio() {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clarinet` is never used
[INFO] [stdout]  --> src/ch07/sound1.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 |     pub fn clarinet() {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clarinet` is never used
[INFO] [stdout]  --> src/ch07/sound2/instrument.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub fn clarinet() {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clarinet` is never used
[INFO] [stdout]    --> src/ch07/mod.rs:173:24
[INFO] [stdout]     |
[INFO] [stdout] 173 |                 pub fn clarinet() {
[INFO] [stdout]     |                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clarinet_trio` is never used
[INFO] [stdout]    --> src/ch07/mod.rs:183:20
[INFO] [stdout]     |
[INFO] [stdout] 183 |             pub fn clarinet_trio() {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]   --> src/ch02.rs:17:54
[INFO] [stdout]    |
[INFO] [stdout] 17 |     let secret_number = rand::thread_rng().gen_range((1..=100)); // 这个也能运行
[INFO] [stdout]    |                                                      ^       ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 17 -     let secret_number = rand::thread_rng().gen_range((1..=100)); // 这个也能运行
[INFO] [stdout] 17 +     let secret_number = rand::thread_rng().gen_range(1..=100); // 这个也能运行
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]  --> src/ch03.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 |     /** 基本类型 */
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 7 |     // 直接的赋值能够直接推断出值的类型
[INFO] [stdout] 8 |     let a = 1; // 默认为 i32
[INFO] [stdout]   |     ---------- rustdoc does not generate documentation for statements
[INFO] [stdout]   |
[INFO] [stdout]   = help: use `/* */` for a plain comment
[INFO] [stdout]   = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused label
[INFO] [stdout]    --> src/ch03.rs:263:9
[INFO] [stdout]     |
[INFO] [stdout] 263 |         'inner: for j in 0..10 {
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_labels)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ch07::plant::Vegetable`
[INFO] [stdout]  --> src/ch07/mod.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::ch07::plant::Vegetable;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::any::Any`
[INFO] [stdout]  --> src/ch07/mod.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 |     use std::any::Any;
[INFO] [stdout]   |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]    --> src/ch07/mod.rs:140:9
[INFO] [stdout]     |
[INFO] [stdout] 140 |     use std::collections::HashMap; // 引入HashMap 的习惯用法 而不是 use std::collections; 在使用 collections::HashMap
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::Result`
[INFO] [stdout]    --> src/ch07/mod.rs:161:13
[INFO] [stdout]     |
[INFO] [stdout] 161 |         use std::fmt::Result;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]    --> src/ch07/mod.rs:197:58
[INFO] [stdout]     |
[INFO] [stdout] 197 |         let secret_number = rand::thread_rng().gen_range((1..100));
[INFO] [stdout]     |                                                          ^      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 197 -         let secret_number = rand::thread_rng().gen_range((1..100));
[INFO] [stdout] 197 +         let secret_number = rand::thread_rng().gen_range(1..100 );
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]    --> src/ch07/mod.rs:198:58
[INFO] [stdout]     |
[INFO] [stdout] 198 |         let secret_number = rand::thread_rng().gen_range((1..=100));
[INFO] [stdout]     |                                                          ^       ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 198 -         let secret_number = rand::thread_rng().gen_range((1..=100));
[INFO] [stdout] 198 +         let secret_number = rand::thread_rng().gen_range(1..=100 );
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cmp::Ordering`
[INFO] [stdout]    --> src/ch07/mod.rs:205:13
[INFO] [stdout]     |
[INFO] [stdout] 205 |         use std::cmp::Ordering;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io`
[INFO] [stdout]    --> src/ch07/mod.rs:206:13
[INFO] [stdout]     |
[INFO] [stdout] 206 |         use std::io;
[INFO] [stdout]     |             ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `cmp::Ordering` and `io`
[INFO] [stdout]    --> src/ch07/mod.rs:210:19
[INFO] [stdout]     |
[INFO] [stdout] 210 |         use std::{cmp::Ordering, io};
[INFO] [stdout]     |                   ^^^^^^^^^^^^^  ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io`
[INFO] [stdout]    --> src/ch07/mod.rs:215:13
[INFO] [stdout]     |
[INFO] [stdout] 215 |         use std::io;
[INFO] [stdout]     |             ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Write`
[INFO] [stdout]    --> src/ch07/mod.rs:216:13
[INFO] [stdout]     |
[INFO] [stdout] 216 |         use std::io::Write;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Write` and `self`
[INFO] [stdout]    --> src/ch07/mod.rs:220:23
[INFO] [stdout]     |
[INFO] [stdout] 220 |         use std::io::{self, Write};
[INFO] [stdout]     |                       ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::*`
[INFO] [stdout]    --> src/ch07/mod.rs:226:13
[INFO] [stdout]     |
[INFO] [stdout] 226 |         use std::collections::*;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::env::temp_dir`
[INFO] [stdout]  --> src/ch08_hashmap.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::env::temp_dir;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `File` and `self`
[INFO] [stdout]  --> src/ch08_hashmap.rs:5:15
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::fs::{self, File};
[INFO] [stdout]   |               ^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io`
[INFO] [stdout]  --> src/ch08_hashmap.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::io;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::ErrorKind`
[INFO] [stdout]  --> src/ch08_hashmap.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::io::ErrorKind;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Read`
[INFO] [stdout]  --> src/ch08_hashmap.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::io::Read;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::Add`
[INFO] [stdout]  --> src/ch08_hashmap.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::ops::Add;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::*`
[INFO] [stdout]  --> src/ch08_string.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::collections::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `File` and `self`
[INFO] [stdout]  --> src/ch08_string.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::fs::{self, File};
[INFO] [stdout]   |               ^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io`
[INFO] [stdout]  --> src/ch08_string.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::io;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::ErrorKind`
[INFO] [stdout]  --> src/ch08_string.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::io::ErrorKind;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::*`
[INFO] [stdout]  --> src/ch08_vec.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::collections::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `File` and `self`
[INFO] [stdout]  --> src/ch08_vec.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::fs::{self, File};
[INFO] [stdout]   |               ^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io`
[INFO] [stdout]  --> src/ch08_vec.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::io;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::ErrorKind`
[INFO] [stdout]  --> src/ch08_vec.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::io::ErrorKind;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Read`
[INFO] [stdout]  --> src/ch08_vec.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::io::Read;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::Add`
[INFO] [stdout]  --> src/ch08_vec.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::ops::Add;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/ch09.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::future::Future`
[INFO] [stdout]  --> src/ch09.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::future::Future;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::Display`
[INFO] [stdout]  --> src/ch13.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::fmt::Display;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::DerefMut`
[INFO] [stdout]    --> src/ch15.rs:302:5
[INFO] [stdout]     |
[INFO] [stdout] 302 | use std::ops::DerefMut;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Ref`
[INFO] [stdout]  --> src/ch15_04.rs:1:17
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::cell::{Ref, RefCell};
[INFO] [stdout]   |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::*`
[INFO] [stdout]  --> src/ch15_05.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::collections::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ptr::read_volatile`
[INFO] [stdout]   --> src/ch16.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 47 | use std::ptr::read_volatile;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::rc::Rc`
[INFO] [stdout]   --> src/ch16.rs:48:5
[INFO] [stdout]    |
[INFO] [stdout] 48 | use std::rc::Rc;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::rc::Rc`
[INFO] [stdout]  --> src/ch17.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::rc::Rc;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::panic::RefUnwindSafe`
[INFO] [stdout]  --> src/ch19.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::panic::RefUnwindSafe;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt`
[INFO] [stdout]    --> src/ch19.rs:509:13
[INFO] [stdout]     |
[INFO] [stdout] 509 |         use std::fmt;
[INFO] [stdout]     |             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Error`
[INFO] [stdout]    --> src/ch19.rs:510:13
[INFO] [stdout]     |
[INFO] [stdout] 510 |         use std::io::Error;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self::proc_macro::TokenStream`
[INFO] [stdout]   --> src/ch19_06.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | use self::proc_macro::TokenStream;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `quote::quote`
[INFO] [stdout]   --> src/ch19_06.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | use quote::quote;
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `syn`
[INFO] [stdout]   --> src/ch19_06.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | use syn;
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `glob::glob`
[INFO] [stdout]   --> src/test.rs:6:9
[INFO] [stdout]    |
[INFO] [stdout]  6 |     use glob::glob;
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> src/main.rs:44:1
[INFO] [stdout]    |
[INFO] [stdout] 44 | mod test;
[INFO] [stdout]    | ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `hex::hex`
[INFO] [stdout]   --> src/main.rs:61:5
[INFO] [stdout]    |
[INFO] [stdout] 61 | use hex::hex;
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `RefCell` and `Ref`
[INFO] [stdout]   --> src/main.rs:64:17
[INFO] [stdout]    |
[INFO] [stdout] 64 | use std::cell::{Ref, RefCell};
[INFO] [stdout]    |                 ^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HashMap` and `hash_map`
[INFO] [stdout]   --> src/main.rs:65:24
[INFO] [stdout]    |
[INFO] [stdout] 65 | use std::collections::{HashMap, hash_map};
[INFO] [stdout]    |                        ^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Debug` and `Display`
[INFO] [stdout]   --> src/main.rs:66:16
[INFO] [stdout]    |
[INFO] [stdout] 66 | use std::fmt::{Debug, Display};
[INFO] [stdout]    |                ^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::hash::Hash`
[INFO] [stdout]   --> src/main.rs:67:5
[INFO] [stdout]    |
[INFO] [stdout] 67 | use std::hash::Hash;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Write`
[INFO] [stdout]   --> src/main.rs:68:5
[INFO] [stdout]    |
[INFO] [stdout] 68 | use std::io::Write;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::num::ParseIntError`
[INFO] [stdout]   --> src/main.rs:69:5
[INFO] [stdout]    |
[INFO] [stdout] 69 | use std::num::ParseIntError;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::rc::Rc`
[INFO] [stdout]   --> src/main.rs:70:5
[INFO] [stdout]    |
[INFO] [stdout] 70 | use std::rc::Rc;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::slice::from_raw_parts`
[INFO] [stdout]   --> src/main.rs:71:5
[INFO] [stdout]    |
[INFO] [stdout] 71 | use std::slice::from_raw_parts;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::from_utf8_unchecked`
[INFO] [stdout]   --> src/main.rs:72:5
[INFO] [stdout]    |
[INFO] [stdout] 72 | use std::str::from_utf8_unchecked;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `env`, `fs`, `io`, and `process`
[INFO] [stdout]   --> src/main.rs:73:11
[INFO] [stdout]    |
[INFO] [stdout] 73 | use std::{env, fs, io, process};
[INFO] [stdout]    |           ^^^  ^^  ^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `the_rust_programming_language::Config`
[INFO] [stdout]   --> src/main.rs:74:5
[INFO] [stdout]    |
[INFO] [stdout] 74 | use the_rust_programming_language::Config;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::TimeDelta`
[INFO] [stdout]   --> src/main.rs:76:5
[INFO] [stdout]    |
[INFO] [stdout] 76 | use chrono::TimeDelta;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::prelude::*`
[INFO] [stdout]   --> src/main.rs:77:5
[INFO] [stdout]    |
[INFO] [stdout] 77 | use chrono::prelude::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Local` and `Utc`
[INFO] [stdout]   --> src/main.rs:78:14
[INFO] [stdout]    |
[INFO] [stdout] 78 | use chrono::{Local, Utc};
[INFO] [stdout]    |              ^^^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test2` is never used
[INFO] [stdout]   --> tests/integration_test.rs:38:4
[INFO] [stdout]    |
[INFO] [stdout] 38 | fn test2() {
[INFO] [stdout]    |    ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]   --> src/ch02.rs:17:54
[INFO] [stdout]    |
[INFO] [stdout] 17 |     let secret_number = rand::thread_rng().gen_range((1..=100)); // 这个也能运行
[INFO] [stdout]    |                                                      ^       ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 17 -     let secret_number = rand::thread_rng().gen_range((1..=100)); // 这个也能运行
[INFO] [stdout] 17 +     let secret_number = rand::thread_rng().gen_range(1..=100); // 这个也能运行
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]  --> src/ch03.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 |     /** 基本类型 */
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 7 |     // 直接的赋值能够直接推断出值的类型
[INFO] [stdout] 8 |     let a = 1; // 默认为 i32
[INFO] [stdout]   |     ---------- rustdoc does not generate documentation for statements
[INFO] [stdout]   |
[INFO] [stdout]   = help: use `/* */` for a plain comment
[INFO] [stdout]   = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused label
[INFO] [stdout]    --> src/ch03.rs:263:9
[INFO] [stdout]     |
[INFO] [stdout] 263 |         'inner: for j in 0..10 {
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_labels)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ch07::plant::Vegetable`
[INFO] [stdout]  --> src/ch07/mod.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::ch07::plant::Vegetable;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::any::Any`
[INFO] [stdout]  --> src/ch07/mod.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 |     use std::any::Any;
[INFO] [stdout]   |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]    --> src/ch07/mod.rs:140:9
[INFO] [stdout]     |
[INFO] [stdout] 140 |     use std::collections::HashMap; // 引入HashMap 的习惯用法 而不是 use std::collections; 在使用 collections::HashMap
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::Result`
[INFO] [stdout]    --> src/ch07/mod.rs:161:13
[INFO] [stdout]     |
[INFO] [stdout] 161 |         use std::fmt::Result;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]    --> src/ch07/mod.rs:197:58
[INFO] [stdout]     |
[INFO] [stdout] 197 |         let secret_number = rand::thread_rng().gen_range((1..100));
[INFO] [stdout]     |                                                          ^      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 197 -         let secret_number = rand::thread_rng().gen_range((1..100));
[INFO] [stdout] 197 +         let secret_number = rand::thread_rng().gen_range(1..100 );
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]    --> src/ch07/mod.rs:198:58
[INFO] [stdout]     |
[INFO] [stdout] 198 |         let secret_number = rand::thread_rng().gen_range((1..=100));
[INFO] [stdout]     |                                                          ^       ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 198 -         let secret_number = rand::thread_rng().gen_range((1..=100));
[INFO] [stdout] 198 +         let secret_number = rand::thread_rng().gen_range(1..=100 );
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cmp::Ordering`
[INFO] [stdout]    --> src/ch07/mod.rs:205:13
[INFO] [stdout]     |
[INFO] [stdout] 205 |         use std::cmp::Ordering;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io`
[INFO] [stdout]    --> src/ch07/mod.rs:206:13
[INFO] [stdout]     |
[INFO] [stdout] 206 |         use std::io;
[INFO] [stdout]     |             ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `cmp::Ordering` and `io`
[INFO] [stdout]    --> src/ch07/mod.rs:210:19
[INFO] [stdout]     |
[INFO] [stdout] 210 |         use std::{cmp::Ordering, io};
[INFO] [stdout]     |                   ^^^^^^^^^^^^^  ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io`
[INFO] [stdout]    --> src/ch07/mod.rs:215:13
[INFO] [stdout]     |
[INFO] [stdout] 215 |         use std::io;
[INFO] [stdout]     |             ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Write`
[INFO] [stdout]    --> src/ch07/mod.rs:216:13
[INFO] [stdout]     |
[INFO] [stdout] 216 |         use std::io::Write;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Write` and `self`
[INFO] [stdout]    --> src/ch07/mod.rs:220:23
[INFO] [stdout]     |
[INFO] [stdout] 220 |         use std::io::{self, Write};
[INFO] [stdout]     |                       ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::*`
[INFO] [stdout]    --> src/ch07/mod.rs:226:13
[INFO] [stdout]     |
[INFO] [stdout] 226 |         use std::collections::*;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::env::temp_dir`
[INFO] [stdout]  --> src/ch08_hashmap.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::env::temp_dir;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `File` and `self`
[INFO] [stdout]  --> src/ch08_hashmap.rs:5:15
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::fs::{self, File};
[INFO] [stdout]   |               ^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io`
[INFO] [stdout]  --> src/ch08_hashmap.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::io;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::ErrorKind`
[INFO] [stdout]  --> src/ch08_hashmap.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::io::ErrorKind;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Read`
[INFO] [stdout]  --> src/ch08_hashmap.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::io::Read;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::Add`
[INFO] [stdout]  --> src/ch08_hashmap.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::ops::Add;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::*`
[INFO] [stdout]  --> src/ch08_string.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::collections::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `File` and `self`
[INFO] [stdout]  --> src/ch08_string.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::fs::{self, File};
[INFO] [stdout]   |               ^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io`
[INFO] [stdout]  --> src/ch08_string.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::io;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::ErrorKind`
[INFO] [stdout]  --> src/ch08_string.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::io::ErrorKind;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::*`
[INFO] [stdout]  --> src/ch08_vec.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::collections::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `File` and `self`
[INFO] [stdout]  --> src/ch08_vec.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::fs::{self, File};
[INFO] [stdout]   |               ^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io`
[INFO] [stdout]  --> src/ch08_vec.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::io;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::ErrorKind`
[INFO] [stdout]  --> src/ch08_vec.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::io::ErrorKind;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Read`
[INFO] [stdout]  --> src/ch08_vec.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::io::Read;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::Add`
[INFO] [stdout]  --> src/ch08_vec.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::ops::Add;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/ch09.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::future::Future`
[INFO] [stdout]  --> src/ch09.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::future::Future;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::Display`
[INFO] [stdout]  --> src/ch13.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::fmt::Display;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: cannot test inner items
[INFO] [stdout]    --> src/ch13.rs:411:9
[INFO] [stdout]     |
[INFO] [stdout] 411 |         #[test]
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unnameable_test_items)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::DerefMut`
[INFO] [stdout]    --> src/ch15.rs:302:5
[INFO] [stdout]     |
[INFO] [stdout] 302 | use std::ops::DerefMut;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Ref`
[INFO] [stdout]  --> src/ch15_04.rs:1:17
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::cell::{Ref, RefCell};
[INFO] [stdout]   |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::*`
[INFO] [stdout]  --> src/ch15_05.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::collections::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ptr::read_volatile`
[INFO] [stdout]   --> src/ch16.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 47 | use std::ptr::read_volatile;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::rc::Rc`
[INFO] [stdout]   --> src/ch16.rs:48:5
[INFO] [stdout]    |
[INFO] [stdout] 48 | use std::rc::Rc;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::rc::Rc`
[INFO] [stdout]  --> src/ch17.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::rc::Rc;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::panic::RefUnwindSafe`
[INFO] [stdout]  --> src/ch19.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::panic::RefUnwindSafe;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt`
[INFO] [stdout]    --> src/ch19.rs:509:13
[INFO] [stdout]     |
[INFO] [stdout] 509 |         use std::fmt;
[INFO] [stdout]     |             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Error`
[INFO] [stdout]    --> src/ch19.rs:510:13
[INFO] [stdout]     |
[INFO] [stdout] 510 |         use std::io::Error;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self::proc_macro::TokenStream`
[INFO] [stdout]   --> src/ch19_06.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | use self::proc_macro::TokenStream;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `quote::quote`
[INFO] [stdout]   --> src/ch19_06.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | use quote::quote;
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `syn`
[INFO] [stdout]   --> src/ch19_06.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | use syn;
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `glob::glob`
[INFO] [stdout]  --> src/test.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 6 |     use glob::glob;
[INFO] [stdout]   |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `hex::hex`
[INFO] [stdout]   --> src/main.rs:61:5
[INFO] [stdout]    |
[INFO] [stdout] 61 | use hex::hex;
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `RefCell` and `Ref`
[INFO] [stdout]   --> src/main.rs:64:17
[INFO] [stdout]    |
[INFO] [stdout] 64 | use std::cell::{Ref, RefCell};
[INFO] [stdout]    |                 ^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HashMap` and `hash_map`
[INFO] [stdout]   --> src/main.rs:65:24
[INFO] [stdout]    |
[INFO] [stdout] 65 | use std::collections::{HashMap, hash_map};
[INFO] [stdout]    |                        ^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Debug` and `Display`
[INFO] [stdout]   --> src/main.rs:66:16
[INFO] [stdout]    |
[INFO] [stdout] 66 | use std::fmt::{Debug, Display};
[INFO] [stdout]    |                ^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::hash::Hash`
[INFO] [stdout]   --> src/main.rs:67:5
[INFO] [stdout]    |
[INFO] [stdout] 67 | use std::hash::Hash;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Write`
[INFO] [stdout]   --> src/main.rs:68:5
[INFO] [stdout]    |
[INFO] [stdout] 68 | use std::io::Write;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::num::ParseIntError`
[INFO] [stdout]   --> src/main.rs:69:5
[INFO] [stdout]    |
[INFO] [stdout] 69 | use std::num::ParseIntError;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::rc::Rc`
[INFO] [stdout]   --> src/main.rs:70:5
[INFO] [stdout]    |
[INFO] [stdout] 70 | use std::rc::Rc;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::slice::from_raw_parts`
[INFO] [stdout]   --> src/main.rs:71:5
[INFO] [stdout]    |
[INFO] [stdout] 71 | use std::slice::from_raw_parts;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::from_utf8_unchecked`
[INFO] [stdout]   --> src/main.rs:72:5
[INFO] [stdout]    |
[INFO] [stdout] 72 | use std::str::from_utf8_unchecked;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `env`, `fs`, `io`, and `process`
[INFO] [stdout]   --> src/main.rs:73:11
[INFO] [stdout]    |
[INFO] [stdout] 73 | use std::{env, fs, io, process};
[INFO] [stdout]    |           ^^^  ^^  ^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `the_rust_programming_language::Config`
[INFO] [stdout]   --> src/main.rs:74:5
[INFO] [stdout]    |
[INFO] [stdout] 74 | use the_rust_programming_language::Config;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::TimeDelta`
[INFO] [stdout]   --> src/main.rs:76:5
[INFO] [stdout]    |
[INFO] [stdout] 76 | use chrono::TimeDelta;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::prelude::*`
[INFO] [stdout]   --> src/main.rs:77:5
[INFO] [stdout]    |
[INFO] [stdout] 77 | use chrono::prelude::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Local` and `Utc`
[INFO] [stdout]   --> src/main.rs:78:14
[INFO] [stdout]    |
[INFO] [stdout] 78 | use chrono::{Local, Utc};
[INFO] [stdout]    |              ^^^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Read`
[INFO] [stdout]  --> src/ch08_string.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::io::Read;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `a` is never read
[INFO] [stdout]    --> src/ch03.rs:123:5
[INFO] [stdout]     |
[INFO] [stdout] 123 |     a = [1, 2, 3, 4, 5];
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/ch04.rs:214:13
[INFO] [stdout]     |
[INFO] [stdout] 214 |         let mut s = String::from("hello");
[INFO] [stdout]     |             ----^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/ch04.rs:305:13
[INFO] [stdout]     |
[INFO] [stdout] 305 |         let mut s = String::from("hello world");
[INFO] [stdout]     |             ----^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `count` is never read
[INFO] [stdout]    --> src/ch06.rs:292:18
[INFO] [stdout]     |
[INFO] [stdout] 292 |             _ => count += 1,
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `count` is never read
[INFO] [stdout]    --> src/ch06.rs:302:13
[INFO] [stdout]     |
[INFO] [stdout] 302 |             count += 1;
[INFO] [stdout]     |             ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/ch08_string.rs:20:13
[INFO] [stdout]    |
[INFO] [stdout] 20 |         let mut a = String::new(); // 使用类似Vector 的方法 新建一个空的字符串
[INFO] [stdout]    |             ----^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/ch08_string.rs:61:13
[INFO] [stdout]    |
[INFO] [stdout] 61 |         let mut s3 = s1 + &s2 + &s4; // 注意 s1 被移动了，不能继续使用 s2 s3 可以继续使用
[INFO] [stdout]    |             ----^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/ch08_string.rs:62:13
[INFO] [stdout]    |
[INFO] [stdout] 62 |         let mut t3 = String::from("") + &s2 + &s3;
[INFO] [stdout]    |             ----^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/ch08_vec.rs:137:13
[INFO] [stdout]     |
[INFO] [stdout] 136 |             Float => (),
[INFO] [stdout]     |             ----- matches any value
[INFO] [stdout] 137 |             Text => (),
[INFO] [stdout]     |             ^^^^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/ch08_vec.rs:138:13
[INFO] [stdout]     |
[INFO] [stdout] 136 |             Float => (),
[INFO] [stdout]     |             ----- matches any value
[INFO] [stdout] 137 |             Text => (),
[INFO] [stdout] 138 |             Int => (),
[INFO] [stdout]     |             ^^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/ch10.rs:90:13
[INFO] [stdout]    |
[INFO] [stdout] 90 |         let mut p = Point { x: 5, y: 10 };
[INFO] [stdout]    |             ----^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/ch10.rs:988:13
[INFO] [stdout]     |
[INFO] [stdout] 988 |         let mut s: &'static str = "I have a static lifetime.";
[INFO] [stdout]     |             ----^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `result` is never read
[INFO] [stdout]    --> src/ch10.rs:828:13
[INFO] [stdout]     |
[INFO] [stdout] 828 |             result = longest(string1.as_str(), string2.as_str());
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/ch15.rs:156:13
[INFO] [stdout]     |
[INFO] [stdout] 156 |         let mut z = MyBox::new(x);
[INFO] [stdout]     |             ----^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `z` is never read
[INFO] [stdout]    --> src/ch15.rs:112:9
[INFO] [stdout]     |
[INFO] [stdout] 112 |         z = &mut 4;
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/ch15_03.rs:110:13
[INFO] [stdout]     |
[INFO] [stdout] 110 |         let mut log = self.log.borrow();
[INFO] [stdout]     |             ----^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function cannot return without recursing
[INFO] [stdout]   --> src/ch18.rs:87:9
[INFO] [stdout]    |
[INFO] [stdout] 87 |         fn print_coordinates(&(x, y): &(i32, i32)) {
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot return without recursing
[INFO] [stdout] ...
[INFO] [stdout] 91 |             print_coordinates(&point);
[INFO] [stdout]    |             ------------------------- recursive call site
[INFO] [stdout]    |
[INFO] [stdout]    = help: a `loop` may express intention better if this is on purpose
[INFO] [stdout]    = note: `#[warn(unconditional_recursion)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/ch19.rs:183:9
[INFO] [stdout]     |
[INFO] [stdout] 183 |         unsafe {
[INFO] [stdout]     |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Read`
[INFO] [stdout]  --> src/ch08_string.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::io::Read;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Summary` is never used
[INFO] [stdout]    --> src/main.rs:176:15
[INFO] [stdout]     |
[INFO] [stdout] 176 |     pub trait Summary {
[INFO] [stdout]     |               ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NewsArticle` is never constructed
[INFO] [stdout]    --> src/main.rs:181:16
[INFO] [stdout]     |
[INFO] [stdout] 181 |     pub struct NewsArticle {
[INFO] [stdout]     |                ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Another` is never constructed
[INFO] [stdout]    --> src/main.rs:189:16
[INFO] [stdout]     |
[INFO] [stdout] 189 |     pub struct Another {}
[INFO] [stdout]     |                ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `a` is never read
[INFO] [stdout]    --> src/ch03.rs:123:5
[INFO] [stdout]     |
[INFO] [stdout] 123 |     a = [1, 2, 3, 4, 5];
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `notify` is never used
[INFO] [stdout]    --> src/main.rs:194:12
[INFO] [stdout]     |
[INFO] [stdout] 194 |     pub fn notify<T: Summary>(item: T) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `main` is never used
[INFO] [stdout]  --> src/ch01.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub fn main() {
[INFO] [stdout]   |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch02_00_guessing_game_tutorial` is never used
[INFO] [stdout]   --> src/ch02.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn ch02_00_guessing_game_tutorial() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch03_02_data_types` is never used
[INFO] [stdout]  --> src/ch03.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn ch03_02_data_types() {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch03_03_how_functions_work` is never used
[INFO] [stdout]    --> src/ch03.rs:135:8
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub fn ch03_03_how_functions_work() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch03_05_control_flow` is never used
[INFO] [stdout]    --> src/ch03.rs:181:8
[INFO] [stdout]     |
[INFO] [stdout] 181 | pub fn ch03_05_control_flow() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fun_2` is never used
[INFO] [stdout]    --> src/ch03.rs:272:4
[INFO] [stdout]     |
[INFO] [stdout] 272 | fn fun_2() {}
[INFO] [stdout]     |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch04_01_what_is_ownership` is never used
[INFO] [stdout]   --> src/ch04.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub fn ch04_01_what_is_ownership() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch04_02_references_and_borrowing` is never used
[INFO] [stdout]    --> src/ch04.rs:140:8
[INFO] [stdout]     |
[INFO] [stdout] 140 | pub fn ch04_02_references_and_borrowing() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch04_03_slices` is never used
[INFO] [stdout]    --> src/ch04.rs:242:8
[INFO] [stdout]     |
[INFO] [stdout] 242 | pub fn ch04_03_slices() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch05_01_defining_structs` is never used
[INFO] [stdout]  --> src/ch05.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn ch05_01_defining_structs() {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch05_02_example_structs` is never used
[INFO] [stdout]    --> src/ch05.rs:165:8
[INFO] [stdout]     |
[INFO] [stdout] 165 | pub fn ch05_02_example_structs() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch05_03_method_syntax` is never used
[INFO] [stdout]    --> src/ch05.rs:234:8
[INFO] [stdout]     |
[INFO] [stdout] 234 | pub fn ch05_03_method_syntax() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `area`, `set_height`, `set_weight`, and `test1` are never used
[INFO] [stdout]    --> src/ch05.rs:247:16
[INFO] [stdout]     |
[INFO] [stdout] 246 |         impl Rectangle {
[INFO] [stdout]     |         -------------- methods in this implementation
[INFO] [stdout] 247 |             fn area(&self) -> u32 {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |             fn set_height(&mut self, new_value: u32) {
[INFO] [stdout]     |                ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 257 |             fn set_weight(&mut self, new_value: u32) {
[INFO] [stdout]     |                ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 262 |             fn test1(self) -> Self {
[INFO] [stdout]     |                ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `area` and `can_hold` are never used
[INFO] [stdout]    --> src/ch05.rs:305:16
[INFO] [stdout]     |
[INFO] [stdout] 304 |         impl Rectangle {
[INFO] [stdout]     |         -------------- methods in this implementation
[INFO] [stdout] 305 |             fn area(&self) -> u32 {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 309 |             fn can_hold(&self, other: &Rectangle) -> bool {
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `square` is never used
[INFO] [stdout]    --> src/ch05.rs:345:16
[INFO] [stdout]     |
[INFO] [stdout] 343 |         impl Rectangle {
[INFO] [stdout]     |         -------------- associated function in this implementation
[INFO] [stdout] 344 |             // 参数中 没有 &self 相当于一个静态方法
[INFO] [stdout] 345 |             fn square(size: u32) -> Self {
[INFO] [stdout]     |                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `square` is never used
[INFO] [stdout]    --> src/ch05.rs:366:16
[INFO] [stdout]     |
[INFO] [stdout] 365 |         impl Rectangle {
[INFO] [stdout]     |         -------------- associated function in this implementation
[INFO] [stdout] 366 |             fn square(size: u32) -> Self {
[INFO] [stdout]     |                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `area` is never used
[INFO] [stdout]    --> src/ch05.rs:375:16
[INFO] [stdout]     |
[INFO] [stdout] 374 |         impl Rectangle {
[INFO] [stdout]     |         -------------- method in this implementation
[INFO] [stdout] 375 |             fn area(&self) -> u32 {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `can_hold` is never used
[INFO] [stdout]    --> src/ch05.rs:381:16
[INFO] [stdout]     |
[INFO] [stdout] 380 |         impl Rectangle {
[INFO] [stdout]     |         -------------- method in this implementation
[INFO] [stdout] 381 |             fn can_hold(&self, other: &Rectangle) -> bool {
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch06_01_defining_an_enum` is never used
[INFO] [stdout]  --> src/ch06.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn ch06_01_defining_an_enum() {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `call` is never used
[INFO] [stdout]   --> src/ch06.rs:91:16
[INFO] [stdout]    |
[INFO] [stdout] 90 |         impl Message {
[INFO] [stdout]    |         ------------ method in this implementation
[INFO] [stdout] 91 |             fn call(&self) -> i32 {
[INFO] [stdout]    |                ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch06_02_match` is never used
[INFO] [stdout]    --> src/ch06.rs:138:8
[INFO] [stdout]     |
[INFO] [stdout] 138 | pub fn ch06_02_match() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `UsState` is never used
[INFO] [stdout]    --> src/ch06.rs:243:6
[INFO] [stdout]     |
[INFO] [stdout] 243 | enum UsState {
[INFO] [stdout]     |      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `B1` is never used
[INFO] [stdout]    --> src/ch06.rs:250:6
[INFO] [stdout]     |
[INFO] [stdout] 250 | enum B1 {
[INFO] [stdout]     |      ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Coin` is never used
[INFO] [stdout]    --> src/ch06.rs:256:6
[INFO] [stdout]     |
[INFO] [stdout] 256 | enum Coin {
[INFO] [stdout]     |      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch06_03_if_let` is never used
[INFO] [stdout]    --> src/ch06.rs:264:8
[INFO] [stdout]     |
[INFO] [stdout] 264 | pub fn ch06_03_if_let() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch06_03_matches` is never used
[INFO] [stdout]    --> src/ch06.rs:324:8
[INFO] [stdout]     |
[INFO] [stdout] 324 | pub fn ch06_03_matches() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `main` is never used
[INFO] [stdout]    --> src/ch07/mod.rs:101:8
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub fn main() {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `breathe_in` is never used
[INFO] [stdout]   --> src/ch07/mod.rs:20:8
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn breathe_in() {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clarinet` is never used
[INFO] [stdout]   --> src/ch07/mod.rs:11:16
[INFO] [stdout]    |
[INFO] [stdout] 11 |         pub fn clarinet() {
[INFO] [stdout]    |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `private_fn` is never used
[INFO] [stdout]   --> src/ch07/mod.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 |         fn private_fn() {}
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Vegetable` is never constructed
[INFO] [stdout]   --> src/ch07/mod.rs:34:16
[INFO] [stdout]    |
[INFO] [stdout] 34 |     pub struct Vegetable {
[INFO] [stdout]    |                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/ch07/mod.rs:40:16
[INFO] [stdout]    |
[INFO] [stdout] 39 |     impl Vegetable {
[INFO] [stdout]    |     -------------- associated function in this implementation
[INFO] [stdout] 40 |         pub fn new(name: &str) -> Vegetable {
[INFO] [stdout]    |                ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_struct` is never used
[INFO] [stdout]   --> src/ch07/mod.rs:48:12
[INFO] [stdout]    |
[INFO] [stdout] 48 |     pub fn generate_struct() -> Vegetable {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test` is never used
[INFO] [stdout]   --> src/ch07/mod.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 55 |     fn test() {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Appetizer` is never used
[INFO] [stdout]   --> src/ch07/mod.rs:72:14
[INFO] [stdout]    |
[INFO] [stdout] 72 |     pub enum Appetizer {
[INFO] [stdout]    |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clarinet_trio` is never used
[INFO] [stdout]   --> src/ch07/mod.rs:85:12
[INFO] [stdout]    |
[INFO] [stdout] 85 |     pub fn clarinet_trio() {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clarinet` is never used
[INFO] [stdout]  --> src/ch07/sound1.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 |     pub fn clarinet() {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clarinet` is never used
[INFO] [stdout]  --> src/ch07/sound2/instrument.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub fn clarinet() {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clarinet` is never used
[INFO] [stdout]  --> src/ch07/sound3/instrument.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub fn clarinet() {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clarinet` is never used
[INFO] [stdout]    --> src/ch07/mod.rs:173:24
[INFO] [stdout]     |
[INFO] [stdout] 173 |                 pub fn clarinet() {
[INFO] [stdout]     |                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clarinet_trio` is never used
[INFO] [stdout]    --> src/ch07/mod.rs:183:20
[INFO] [stdout]     |
[INFO] [stdout] 183 |             pub fn clarinet_trio() {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch08_03_hash_maps` is never used
[INFO] [stdout]   --> src/ch08_hashmap.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn ch08_03_hash_maps() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch08_02_strings` is never used
[INFO] [stdout]   --> src/ch08_string.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn ch08_02_strings() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch08_01_vectors` is never used
[INFO] [stdout]   --> src/ch08_vec.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn ch08_01_vectors() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch09_01_unrecoverable_errors_with_panic` is never used
[INFO] [stdout]   --> src/ch09.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub fn ch09_01_unrecoverable_errors_with_panic() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch09_02_recoverable_errors_with_result` is never used
[INFO] [stdout]   --> src/ch09.rs:31:8
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub fn ch09_02_recoverable_errors_with_result() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch09_03_to_panic_or_not_to_panic` is never used
[INFO] [stdout]    --> src/ch09.rs:207:8
[INFO] [stdout]     |
[INFO] [stdout] 207 | pub fn ch09_03_to_panic_or_not_to_panic() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch10_00_generics` is never used
[INFO] [stdout]  --> src/ch10.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn ch10_00_generics() {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch10_01_syntax` is never used
[INFO] [stdout]   --> src/ch10.rs:40:8
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub fn ch10_01_syntax() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `x` is never used
[INFO] [stdout]   --> src/ch10.rs:79:16
[INFO] [stdout]    |
[INFO] [stdout] 78 |         impl<A> Point<A> {
[INFO] [stdout]    |         ---------------- method in this implementation
[INFO] [stdout] 79 |             fn x(&self) -> &A {
[INFO] [stdout]    |                ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `distance_from_origin` is never used
[INFO] [stdout]   --> src/ch10.rs:85:16
[INFO] [stdout]    |
[INFO] [stdout] 84 |         impl Point<f32> {
[INFO] [stdout]    |         --------------- method in this implementation
[INFO] [stdout] 85 |             fn distance_from_origin(&self) -> f32 {
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `mix_up` is never used
[INFO] [stdout]    --> src/ch10.rs:109:16
[INFO] [stdout]     |
[INFO] [stdout] 106 |         impl<T, U> Point<T, U> {
[INFO] [stdout]     |         ---------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 109 |             fn mix_up<V, W>(self, other: Point<V, W>) -> Point<T, W> {
[INFO] [stdout]     |                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch10_02_traits` is never used
[INFO] [stdout]    --> src/ch10.rs:190:8
[INFO] [stdout]     |
[INFO] [stdout] 190 | pub fn ch10_02_traits() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/ch10.rs:739:16
[INFO] [stdout]     |
[INFO] [stdout] 738 |         impl<T> Pair<T> {
[INFO] [stdout]     |         --------------- associated function in this implementation
[INFO] [stdout] 739 |             fn new(x: T, y: T) -> Self {
[INFO] [stdout]     |                ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `cmp_display` is never used
[INFO] [stdout]    --> src/ch10.rs:746:16
[INFO] [stdout]     |
[INFO] [stdout] 745 |         impl<T: Display + PartialOrd> Pair<T> {
[INFO] [stdout]     |         ------------------------------------- method in this implementation
[INFO] [stdout] 746 |             fn cmp_display(&self) {
[INFO] [stdout]     |                ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch10_03_lifetime_syntax` is never used
[INFO] [stdout]    --> src/ch10.rs:774:8
[INFO] [stdout]     |
[INFO] [stdout] 774 | pub fn ch10_03_lifetime_syntax() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `level` is never used
[INFO] [stdout]    --> src/ch10.rs:944:16
[INFO] [stdout]     |
[INFO] [stdout] 943 |         impl ImportantExcerpt {
[INFO] [stdout]     |         --------------------- method in this implementation
[INFO] [stdout] 944 |             fn level(&self) -> i32 {
[INFO] [stdout]     |                ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `level` and `announce_and_return_part` are never used
[INFO] [stdout]    --> src/ch10.rs:962:16
[INFO] [stdout]     |
[INFO] [stdout] 961 |         impl<'a> ImportantExcerpt<'a> {
[INFO] [stdout]     |         ----------------------------- methods in this implementation
[INFO] [stdout] 962 |             fn level(&self) -> i32 {
[INFO] [stdout]     |                ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 965 |             fn announce_and_return_part(&self, announcement: &str) -> &str {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `a` is never used
[INFO] [stdout]    --> src/ch10.rs:978:16
[INFO] [stdout]     |
[INFO] [stdout] 977 |         impl ImportantExcerpt<'_> {
[INFO] [stdout]     |         ------------------------- method in this implementation
[INFO] [stdout] 978 |             fn a(&self, announcement: &str) -> &str {
[INFO] [stdout]     |                ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Rectangle` is never constructed
[INFO] [stdout]  --> src/ch11_01.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Rectangle {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `can_hold` is never used
[INFO] [stdout]   --> src/ch11_01.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl Rectangle {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] 10 |     pub fn can_hold(&self, other: &Rectangle) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TestStruct` is never constructed
[INFO] [stdout]   --> src/ch11_01.rs:78:8
[INFO] [stdout]    |
[INFO] [stdout] 78 | struct TestStruct {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/ch04.rs:214:13
[INFO] [stdout]     |
[INFO] [stdout] 214 |         let mut s = String::from("hello");
[INFO] [stdout]     |             ----^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `add_two` is never used
[INFO] [stdout]   --> src/ch11_01.rs:82:8
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub fn add_two(a: i32) -> i32 {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `greeting` is never used
[INFO] [stdout]    --> src/ch11_01.rs:112:8
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub fn greeting(name: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Guess` is never constructed
[INFO] [stdout]    --> src/ch11_01.rs:132:12
[INFO] [stdout]     |
[INFO] [stdout] 132 | pub struct Guess {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/ch11_01.rs:137:12
[INFO] [stdout]     |
[INFO] [stdout] 136 | impl Guess {
[INFO] [stdout]     | ---------- associated function in this implementation
[INFO] [stdout] 137 |     pub fn new(value: i32) -> Guess {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `prints_and_returns_10` is never used
[INFO] [stdout]   --> src/ch11_02.rs:12:4
[INFO] [stdout]    |
[INFO] [stdout] 12 | fn prints_and_returns_10(a: i32) -> i32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `add_two` is never used
[INFO] [stdout]   --> src/ch11_02.rs:38:8
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub fn add_two(a: i32) -> i32 {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `add_two` is never used
[INFO] [stdout]   --> src/ch11_03.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub fn add_two(a: i32) -> i32 {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `internal_adder` is never used
[INFO] [stdout]   --> src/ch11_03.rs:22:4
[INFO] [stdout]    |
[INFO] [stdout] 22 | fn internal_adder(a: i32, b: i32) -> i32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Config` is never constructed
[INFO] [stdout]   --> src/ch12.rs:20:8
[INFO] [stdout]    |
[INFO] [stdout] 20 | struct Config<'a> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/ch12.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl Config<'_> {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] 26 |     fn new(args: &[String]) -> Result<Config<'_>, &'static str> {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `minigrep` is never used
[INFO] [stdout]   --> src/ch12.rs:38:8
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub fn minigrep() {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> src/ch12.rs:61:4
[INFO] [stdout]    |
[INFO] [stdout] 61 | fn run(config: Config) -> Result<(), Box<dyn Error>> {
[INFO] [stdout]    |    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `search` is never used
[INFO] [stdout]   --> src/ch12.rs:72:8
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub fn search<'a>(query: &str, contents: &'a str) -> Vec<&'a str> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch13_01_closures` is never used
[INFO] [stdout]   --> src/ch13.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn ch13_01_closures() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `value` are never used
[INFO] [stdout]    --> src/ch13.rs:118:16
[INFO] [stdout]     |
[INFO] [stdout] 114 | /         impl<T> Cacher<T>
[INFO] [stdout] 115 | |         where
[INFO] [stdout] 116 | |             T: Fn(u32) -> u32, // 还得再写一遍
[INFO] [stdout]     | |______________________________- associated items in this implementation
[INFO] [stdout] 117 |           {
[INFO] [stdout] 118 |               fn new(calculation: T) -> Cacher<T> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |               fn value(&mut self, arg: u32) -> u32 {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `value` are never used
[INFO] [stdout]    --> src/ch13.rs:178:16
[INFO] [stdout]     |
[INFO] [stdout] 174 | /         impl<T> Cacher<T>
[INFO] [stdout] 175 | |         where
[INFO] [stdout] 176 | |             T: Fn(u32) -> u32,
[INFO] [stdout]     | |______________________________- associated items in this implementation
[INFO] [stdout] 177 |           {
[INFO] [stdout] 178 |               fn new(calculation: T) -> Cacher<T> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |               fn value(&mut self, arg: u32) -> u32 {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/ch04.rs:305:13
[INFO] [stdout]     |
[INFO] [stdout] 305 |         let mut s = String::from("hello world");
[INFO] [stdout]     |             ----^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `value` are never used
[INFO] [stdout]    --> src/ch13.rs:221:16
[INFO] [stdout]     |
[INFO] [stdout] 216 | /         impl<T, U> Cacher1<T, U>
[INFO] [stdout] 217 | |         where
[INFO] [stdout] 218 | |             U: Eq + Hash + Clone,
[INFO] [stdout] 219 | |             T: Fn(U) -> u32, // 获取所有权
[INFO] [stdout]     | |____________________________- associated items in this implementation
[INFO] [stdout] 220 |           {
[INFO] [stdout] 221 |               fn new(calculation: T) -> Cacher1<T, U> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |               fn value(&mut self, arg: U) -> u32 {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `value` are never used
[INFO] [stdout]    --> src/ch13.rs:261:16
[INFO] [stdout]     |
[INFO] [stdout] 256 | /         impl<T, U> Cacher2<T, U>
[INFO] [stdout] 257 | |         where
[INFO] [stdout] 258 | |             U: Eq + Hash + Clone,
[INFO] [stdout] 259 | |             T: Fn(&U) -> u32,
[INFO] [stdout]     | |_____________________________- associated items in this implementation
[INFO] [stdout] 260 |           {
[INFO] [stdout] 261 |               fn new(calculation: T) -> Cacher2<T, U> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 267 |               fn value(&mut self, arg: U) -> u32 {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch13_02_iterators` is never used
[INFO] [stdout]    --> src/ch13.rs:339:8
[INFO] [stdout]     |
[INFO] [stdout] 339 | pub fn ch13_02_iterators() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/ch13.rs:456:16
[INFO] [stdout]     |
[INFO] [stdout] 455 |         impl Counter {
[INFO] [stdout]     |         ------------ associated function in this implementation
[INFO] [stdout] 456 |             fn new() -> Counter {
[INFO] [stdout]     |                ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch13_04_performance` is never used
[INFO] [stdout]    --> src/ch13.rs:528:8
[INFO] [stdout]     |
[INFO] [stdout] 528 | pub fn ch13_04_performance(buffer: &mut [i32], coefficients: [i64; 12], qlp_shift: i16) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch14_01_release_profiles` is never used
[INFO] [stdout]   --> src/ch14.rs:22:4
[INFO] [stdout]    |
[INFO] [stdout] 22 | fn ch14_01_release_profiles() {}
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch14_02_publishing_to_crates_io` is never used
[INFO] [stdout]   --> src/ch14.rs:27:4
[INFO] [stdout]    |
[INFO] [stdout] 27 | fn ch14_02_publishing_to_crates_io() {}
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch15_01_box` is never used
[INFO] [stdout]   --> src/ch15.rs:34:8
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub fn ch15_01_box() {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch15_02_deref` is never used
[INFO] [stdout]   --> src/ch15.rs:93:8
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub fn ch15_02_deref() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/ch15.rs:135:12
[INFO] [stdout]     |
[INFO] [stdout] 134 |     impl<T> MyBox<T> {
[INFO] [stdout]     |     ---------------- associated function in this implementation
[INFO] [stdout] 135 |         fn new(x: T) -> MyBox<T> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/ch15.rs:212:16
[INFO] [stdout]     |
[INFO] [stdout] 211 |         impl<T> MyBox<T> {
[INFO] [stdout]     |         ---------------- associated function in this implementation
[INFO] [stdout] 212 |             fn new(x: T) -> MyBox<T> {
[INFO] [stdout]     |                ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch15_03_drop` is never used
[INFO] [stdout]    --> src/ch15.rs:239:8
[INFO] [stdout]     |
[INFO] [stdout] 239 | pub fn ch15_03_drop() {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `List` is never used
[INFO] [stdout]    --> src/ch15.rs:305:6
[INFO] [stdout]     |
[INFO] [stdout] 305 | enum List {
[INFO] [stdout]     |      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch15_04_rc` is never used
[INFO] [stdout]    --> src/ch15.rs:310:8
[INFO] [stdout]     |
[INFO] [stdout] 310 | pub fn ch15_04_rc() {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Messenger` is never used
[INFO] [stdout]    --> src/ch15.rs:404:11
[INFO] [stdout]     |
[INFO] [stdout] 404 | pub trait Messenger {
[INFO] [stdout]     |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LimitTracker` is never constructed
[INFO] [stdout]    --> src/ch15.rs:408:12
[INFO] [stdout]     |
[INFO] [stdout] 408 | pub struct LimitTracker<'a, T: Messenger> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `set_value` are never used
[INFO] [stdout]    --> src/ch15.rs:418:12
[INFO] [stdout]     |
[INFO] [stdout] 414 | / impl<'a, T> LimitTracker<'a, T>
[INFO] [stdout] 415 | | where
[INFO] [stdout] 416 | |     T: Messenger,
[INFO] [stdout]     | |_________________- associated items in this implementation
[INFO] [stdout] 417 |   {
[INFO] [stdout] 418 |       pub fn new(messenger: &'_ T, max: usize) -> LimitTracker<'_, T> {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] ...
[INFO] [stdout] 426 |       pub fn set_value(&mut self, value: usize) {
[INFO] [stdout]     |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `List` is never used
[INFO] [stdout]  --> src/ch15_02.rs:9:6
[INFO] [stdout]   |
[INFO] [stdout] 9 | enum List {
[INFO] [stdout]   |      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `main` is never used
[INFO] [stdout]   --> src/ch15_02.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn main() {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `List` is never used
[INFO] [stdout]   --> src/ch15_03.rs:12:6
[INFO] [stdout]    |
[INFO] [stdout] 12 | enum List {
[INFO] [stdout]    |      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `tail` is never used
[INFO] [stdout]   --> src/ch15_03.rs:20:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl List {
[INFO] [stdout]    | --------- method in this implementation
[INFO] [stdout] 19 |     // 我们希望能够修改 Cons 成员所指向的 List。这里还增加了一个 tail 方法来方便我们在有 Cons 成员的时候访问其第二项。
[INFO] [stdout] 20 |     fn tail(&self) -> Option<&RefCell<Rc<List>>> {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `main` is never used
[INFO] [stdout]   --> src/ch15_03.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn main() {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Worker` is never constructed
[INFO] [stdout]   --> src/ch15_03.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub struct Worker {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `run` are never used
[INFO] [stdout]   --> src/ch15_03.rs:69:12
[INFO] [stdout]    |
[INFO] [stdout] 68 | impl Worker {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout] 69 |     pub fn new(id: usize, log: Rc<RefCell<Vec<String>>>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 73 |     pub fn run(&self) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Engine` is never constructed
[INFO] [stdout]   --> src/ch15_03.rs:79:12
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub struct Engine {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_worker`, `run`, and `print_log` are never used
[INFO] [stdout]    --> src/ch15_03.rs:85:12
[INFO] [stdout]     |
[INFO] [stdout]  84 | impl Engine {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout]  85 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn add_worker(&mut self, id: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn run(&self) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     pub fn print_log(&self) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Node` is never constructed
[INFO] [stdout]   --> src/ch15_04.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | struct Node {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `main` is never used
[INFO] [stdout]   --> src/ch15_04.rs:30:8
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub fn main() {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `abs_all` is never used
[INFO] [stdout]   --> src/ch15_05.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn abs_all<'a, 'b>(input: &'a mut Cow<'b, [i32]>) -> &'a mut Cow<'b, [i32]> {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SomeStruct` is never constructed
[INFO] [stdout]   --> src/ch15_05.rs:86:8
[INFO] [stdout]    |
[INFO] [stdout] 86 | struct SomeStruct {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Switcher` is never constructed
[INFO] [stdout]    --> src/ch15_05.rs:109:12
[INFO] [stdout]     |
[INFO] [stdout] 109 | pub struct Switcher<'a> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `switch` are never used
[INFO] [stdout]    --> src/ch15_05.rs:114:12
[INFO] [stdout]     |
[INFO] [stdout] 113 | impl<'a> Switcher<'a> {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] 114 |     pub fn new(lamp: &'a Cell<Lamp>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn switch(&mut self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Lamp` is never constructed
[INFO] [stdout]    --> src/ch15_05.rs:130:12
[INFO] [stdout]     |
[INFO] [stdout] 130 | pub struct Lamp {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_on`, `switch_on`, and `switch_off` are never used
[INFO] [stdout]    --> src/ch15_05.rs:135:12
[INFO] [stdout]     |
[INFO] [stdout] 134 | impl Lamp {
[INFO] [stdout]     | --------- methods in this implementation
[INFO] [stdout] 135 |     pub fn is_on(&self) -> bool {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     pub fn switch_on(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn switch_off(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch16_01_threads` is never used
[INFO] [stdout]   --> src/ch16.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn ch16_01_threads() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch16_02_message_passing` is never used
[INFO] [stdout]   --> src/ch16.rs:52:8
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub fn ch16_02_message_passing() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch16_03_shared_state` is never used
[INFO] [stdout]    --> src/ch16.rs:140:8
[INFO] [stdout]     |
[INFO] [stdout] 140 | pub fn ch16_03_shared_state() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch16_04_extensible_concurrency_sync_and_send` is never used
[INFO] [stdout]    --> src/ch16.rs:218:8
[INFO] [stdout]     |
[INFO] [stdout] 218 | pub fn ch16_04_extensible_concurrency_sync_and_send() {}
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch17_01whatis_oo` is never used
[INFO] [stdout]  --> src/ch17.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn ch17_01whatis_oo() {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `add`, `remove`, `average`, and `update_average` are never used
[INFO] [stdout]   --> src/ch17.rs:10:16
[INFO] [stdout]    |
[INFO] [stdout]  9 |     impl AveragedCollection {
[INFO] [stdout]    |     ----------------------- methods in this implementation
[INFO] [stdout] 10 |         pub fn add(&mut self, value: i32) {
[INFO] [stdout]    |                ^^^
[INFO] [stdout] ...
[INFO] [stdout] 15 |         pub fn remove(&mut self) -> Option<i32> {
[INFO] [stdout]    |                ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |         pub fn average(&self) -> f64 {
[INFO] [stdout]    |                ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |         fn update_average(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch17_02_trait_objects` is never used
[INFO] [stdout]   --> src/ch17.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub fn ch17_02_trait_objects() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `run` is never used
[INFO] [stdout]   --> src/ch17.rs:49:16
[INFO] [stdout]    |
[INFO] [stdout] 48 |     impl Screen {
[INFO] [stdout]    |     ----------- method in this implementation
[INFO] [stdout] 49 |         pub fn run(&self) {
[INFO] [stdout]    |                ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `run` is never used
[INFO] [stdout]   --> src/ch17.rs:70:20
[INFO] [stdout]    |
[INFO] [stdout] 66 | /         impl<T> Screen<T>
[INFO] [stdout] 67 | |         where
[INFO] [stdout] 68 | |             T: Draw,
[INFO] [stdout]    | |____________________- method in this implementation
[INFO] [stdout] 69 |           {
[INFO] [stdout] 70 |               pub fn run(&self) {
[INFO] [stdout]    |                      ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch17_03_oo_design_patterns` is never used
[INFO] [stdout]    --> src/ch17.rs:226:8
[INFO] [stdout]     |
[INFO] [stdout] 226 | pub fn ch17_03_oo_design_patterns() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_text`, `content`, `request_review`, `approve`, and `reject` are never used
[INFO] [stdout]    --> src/ch17.rs:241:20
[INFO] [stdout]     |
[INFO] [stdout] 240 |         impl Post {
[INFO] [stdout]     |         --------- associated items in this implementation
[INFO] [stdout] 241 |             pub fn new() -> Post {
[INFO] [stdout]     |                    ^^^
[INFO] [stdout] ...
[INFO] [stdout] 249 |             pub fn add_text(&mut self, text: &str) {
[INFO] [stdout]     |                    ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 255 |             pub fn content(&self) -> &str {
[INFO] [stdout]     |                    ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 266 |             pub fn request_review(&mut self) {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 273 |             pub fn approve(&mut self) {
[INFO] [stdout]     |                    ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 280 |             pub fn reject(&mut self) {
[INFO] [stdout]     |                    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `content` are never used
[INFO] [stdout]    --> src/ch17.rs:386:20
[INFO] [stdout]     |
[INFO] [stdout] 385 |         impl Post {
[INFO] [stdout]     |         --------- associated items in this implementation
[INFO] [stdout] 386 |             pub fn new() -> DraftPost {
[INFO] [stdout]     |                    ^^^
[INFO] [stdout] ...
[INFO] [stdout] 391 |             pub fn content(&self) -> &str {
[INFO] [stdout]     |                    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `add_text` and `request_review` are never used
[INFO] [stdout]    --> src/ch17.rs:397:20
[INFO] [stdout]     |
[INFO] [stdout] 396 |         impl DraftPost {
[INFO] [stdout]     |         -------------- methods in this implementation
[INFO] [stdout] 397 |             pub fn add_text(&mut self, text: &str) {
[INFO] [stdout]     |                    ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 401 |             pub fn request_review(self) -> PendingReviewPost {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `approve` is never used
[INFO] [stdout]    --> src/ch17.rs:413:20
[INFO] [stdout]     |
[INFO] [stdout] 412 |         impl PendingReviewPost {
[INFO] [stdout]     |         ---------------------- method in this implementation
[INFO] [stdout] 413 |             pub fn approve(self) -> Post {
[INFO] [stdout]     |                    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch18_01_all_the_places_for_patterns` is never used
[INFO] [stdout]  --> src/ch18.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn ch18_01_all_the_places_for_patterns() {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch18_02_refutability` is never used
[INFO] [stdout]   --> src/ch18.rs:97:8
[INFO] [stdout]    |
[INFO] [stdout] 97 | pub fn ch18_02_refutability() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch18_03_pattern_syntax` is never used
[INFO] [stdout]    --> src/ch18.rs:106:8
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub fn ch18_03_pattern_syntax() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch19_01_unsafe_rust` is never used
[INFO] [stdout]  --> src/ch19.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn ch19_01_unsafe_rust() {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch19_03_advanced_traits` is never used
[INFO] [stdout]    --> src/ch19.rs:215:8
[INFO] [stdout]     |
[INFO] [stdout] 215 | pub fn ch19_03_advanced_traits() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `fly` is never used
[INFO] [stdout]    --> src/ch19.rs:363:16
[INFO] [stdout]     |
[INFO] [stdout] 362 |         impl Human {
[INFO] [stdout]     |         ---------- method in this implementation
[INFO] [stdout] 363 |             fn fly(&self) {
[INFO] [stdout]     |                ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `baby_name` is never used
[INFO] [stdout]    --> src/ch19.rs:385:16
[INFO] [stdout]     |
[INFO] [stdout] 384 |         impl Dog {
[INFO] [stdout]     |         -------- associated function in this implementation
[INFO] [stdout] 385 |             fn baby_name() -> String {
[INFO] [stdout]     |                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch19_04_advanced_types` is never used
[INFO] [stdout]    --> src/ch19.rs:477:8
[INFO] [stdout]     |
[INFO] [stdout] 477 | pub fn ch19_04_advanced_types() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch19_05_advanced_functions_and_closures` is never used
[INFO] [stdout]    --> src/ch19.rs:663:8
[INFO] [stdout]     |
[INFO] [stdout] 663 | pub fn ch19_05_advanced_functions_and_closures() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `abs` is never used
[INFO] [stdout]    --> src/ch19.rs:134:12
[INFO] [stdout]     |
[INFO] [stdout] 134 |         fn abs(input: i32) -> i32;
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `main` is never used
[INFO] [stdout]   --> src/ch19_06.rs:35:4
[INFO] [stdout]    |
[INFO] [stdout] 35 | fn main() {
[INFO] [stdout]    |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `main` is never used
[INFO] [stdout]  --> src/ch20.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn main() {
[INFO] [stdout]   |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_connection` is never used
[INFO] [stdout]   --> src/ch20.rs:19:4
[INFO] [stdout]    |
[INFO] [stdout] 19 | fn handle_connection(mut stream: TcpStream) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `main` is never used
[INFO] [stdout]  --> src/test.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn main() {
[INFO] [stdout]   |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: path statement with no effect
[INFO] [stdout]    --> src/ch06.rs:315:9
[INFO] [stdout]     |
[INFO] [stdout] 315 |         a;
[INFO] [stdout]     |         ^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(path_statements)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: path statement with no effect
[INFO] [stdout]    --> src/ch06.rs:316:9
[INFO] [stdout]     |
[INFO] [stdout] 316 |         b;
[INFO] [stdout]     |         ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: path statement with no effect
[INFO] [stdout]    --> src/ch06.rs:317:9
[INFO] [stdout]     |
[INFO] [stdout] 317 |         c;
[INFO] [stdout]     |         ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: path statement with no effect
[INFO] [stdout]    --> src/ch06.rs:318:9
[INFO] [stdout]     |
[INFO] [stdout] 318 |         d;
[INFO] [stdout]     |         ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Float` should have a snake case name
[INFO] [stdout]    --> src/ch08_vec.rs:136:13
[INFO] [stdout]     |
[INFO] [stdout] 136 |             Float => (),
[INFO] [stdout]     |             ^^^^^ help: convert the identifier to snake case (notice the capitalization): `float`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Text` should have a snake case name
[INFO] [stdout]    --> src/ch08_vec.rs:137:13
[INFO] [stdout]     |
[INFO] [stdout] 137 |             Text => (),
[INFO] [stdout]     |             ^^^^ help: convert the identifier to snake case: `text`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Int` should have a snake case name
[INFO] [stdout]    --> src/ch08_vec.rs:138:13
[INFO] [stdout]     |
[INFO] [stdout] 138 |             Int => (),
[INFO] [stdout]     |             ^^^ help: convert the identifier to snake case (notice the capitalization): `int`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `count` is never read
[INFO] [stdout]    --> src/ch06.rs:292:18
[INFO] [stdout]     |
[INFO] [stdout] 292 |             _ => count += 1,
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `count` is never read
[INFO] [stdout]    --> src/ch06.rs:302:13
[INFO] [stdout]     |
[INFO] [stdout] 302 |             count += 1;
[INFO] [stdout]     |             ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/ch08_string.rs:20:13
[INFO] [stdout]    |
[INFO] [stdout] 20 |         let mut a = String::new(); // 使用类似Vector 的方法 新建一个空的字符串
[INFO] [stdout]    |             ----^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/ch08_string.rs:61:13
[INFO] [stdout]    |
[INFO] [stdout] 61 |         let mut s3 = s1 + &s2 + &s4; // 注意 s1 被移动了，不能继续使用 s2 s3 可以继续使用
[INFO] [stdout]    |             ----^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/ch08_string.rs:62:13
[INFO] [stdout]    |
[INFO] [stdout] 62 |         let mut t3 = String::from("") + &s2 + &s3;
[INFO] [stdout]    |             ----^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/ch08_vec.rs:137:13
[INFO] [stdout]     |
[INFO] [stdout] 136 |             Float => (),
[INFO] [stdout]     |             ----- matches any value
[INFO] [stdout] 137 |             Text => (),
[INFO] [stdout]     |             ^^^^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/ch08_vec.rs:138:13
[INFO] [stdout]     |
[INFO] [stdout] 136 |             Float => (),
[INFO] [stdout]     |             ----- matches any value
[INFO] [stdout] 137 |             Text => (),
[INFO] [stdout] 138 |             Int => (),
[INFO] [stdout]     |             ^^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/ch10.rs:90:13
[INFO] [stdout]    |
[INFO] [stdout] 90 |         let mut p = Point { x: 5, y: 10 };
[INFO] [stdout]    |             ----^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/ch10.rs:988:13
[INFO] [stdout]     |
[INFO] [stdout] 988 |         let mut s: &'static str = "I have a static lifetime.";
[INFO] [stdout]     |             ----^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `result` is never read
[INFO] [stdout]    --> src/ch10.rs:828:13
[INFO] [stdout]     |
[INFO] [stdout] 828 |             result = longest(string1.as_str(), string2.as_str());
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/ch15.rs:156:13
[INFO] [stdout]     |
[INFO] [stdout] 156 |         let mut z = MyBox::new(x);
[INFO] [stdout]     |             ----^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `z` is never read
[INFO] [stdout]    --> src/ch15.rs:112:9
[INFO] [stdout]     |
[INFO] [stdout] 112 |         z = &mut 4;
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/ch15_03.rs:110:13
[INFO] [stdout]     |
[INFO] [stdout] 110 |         let mut log = self.log.borrow();
[INFO] [stdout]     |             ----^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function cannot return without recursing
[INFO] [stdout]   --> src/ch18.rs:87:9
[INFO] [stdout]    |
[INFO] [stdout] 87 |         fn print_coordinates(&(x, y): &(i32, i32)) {
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot return without recursing
[INFO] [stdout] ...
[INFO] [stdout] 91 |             print_coordinates(&point);
[INFO] [stdout]    |             ------------------------- recursive call site
[INFO] [stdout]    |
[INFO] [stdout]    = help: a `loop` may express intention better if this is on purpose
[INFO] [stdout]    = note: `#[warn(unconditional_recursion)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/ch19.rs:183:9
[INFO] [stdout]     |
[INFO] [stdout] 183 |         unsafe {
[INFO] [stdout]     |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Summary` is never used
[INFO] [stdout]    --> src/main.rs:176:15
[INFO] [stdout]     |
[INFO] [stdout] 176 |     pub trait Summary {
[INFO] [stdout]     |               ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NewsArticle` is never constructed
[INFO] [stdout]    --> src/main.rs:181:16
[INFO] [stdout]     |
[INFO] [stdout] 181 |     pub struct NewsArticle {
[INFO] [stdout]     |                ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Another` is never constructed
[INFO] [stdout]    --> src/main.rs:189:16
[INFO] [stdout]     |
[INFO] [stdout] 189 |     pub struct Another {}
[INFO] [stdout]     |                ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `notify` is never used
[INFO] [stdout]    --> src/main.rs:194:12
[INFO] [stdout]     |
[INFO] [stdout] 194 |     pub fn notify<T: Summary>(item: T) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `main` is never used
[INFO] [stdout]  --> src/ch01.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub fn main() {
[INFO] [stdout]   |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch02_00_guessing_game_tutorial` is never used
[INFO] [stdout]   --> src/ch02.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn ch02_00_guessing_game_tutorial() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch03_02_data_types` is never used
[INFO] [stdout]  --> src/ch03.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn ch03_02_data_types() {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch03_03_how_functions_work` is never used
[INFO] [stdout]    --> src/ch03.rs:135:8
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub fn ch03_03_how_functions_work() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch03_05_control_flow` is never used
[INFO] [stdout]    --> src/ch03.rs:181:8
[INFO] [stdout]     |
[INFO] [stdout] 181 | pub fn ch03_05_control_flow() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fun_2` is never used
[INFO] [stdout]    --> src/ch03.rs:272:4
[INFO] [stdout]     |
[INFO] [stdout] 272 | fn fun_2() {}
[INFO] [stdout]     |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch04_01_what_is_ownership` is never used
[INFO] [stdout]   --> src/ch04.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub fn ch04_01_what_is_ownership() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch04_02_references_and_borrowing` is never used
[INFO] [stdout]    --> src/ch04.rs:140:8
[INFO] [stdout]     |
[INFO] [stdout] 140 | pub fn ch04_02_references_and_borrowing() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch04_03_slices` is never used
[INFO] [stdout]    --> src/ch04.rs:242:8
[INFO] [stdout]     |
[INFO] [stdout] 242 | pub fn ch04_03_slices() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch05_01_defining_structs` is never used
[INFO] [stdout]  --> src/ch05.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn ch05_01_defining_structs() {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch05_02_example_structs` is never used
[INFO] [stdout]    --> src/ch05.rs:165:8
[INFO] [stdout]     |
[INFO] [stdout] 165 | pub fn ch05_02_example_structs() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch05_03_method_syntax` is never used
[INFO] [stdout]    --> src/ch05.rs:234:8
[INFO] [stdout]     |
[INFO] [stdout] 234 | pub fn ch05_03_method_syntax() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `area`, `set_height`, `set_weight`, and `test1` are never used
[INFO] [stdout]    --> src/ch05.rs:247:16
[INFO] [stdout]     |
[INFO] [stdout] 246 |         impl Rectangle {
[INFO] [stdout]     |         -------------- methods in this implementation
[INFO] [stdout] 247 |             fn area(&self) -> u32 {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |             fn set_height(&mut self, new_value: u32) {
[INFO] [stdout]     |                ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 257 |             fn set_weight(&mut self, new_value: u32) {
[INFO] [stdout]     |                ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 262 |             fn test1(self) -> Self {
[INFO] [stdout]     |                ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `area` and `can_hold` are never used
[INFO] [stdout]    --> src/ch05.rs:305:16
[INFO] [stdout]     |
[INFO] [stdout] 304 |         impl Rectangle {
[INFO] [stdout]     |         -------------- methods in this implementation
[INFO] [stdout] 305 |             fn area(&self) -> u32 {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 309 |             fn can_hold(&self, other: &Rectangle) -> bool {
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `square` is never used
[INFO] [stdout]    --> src/ch05.rs:345:16
[INFO] [stdout]     |
[INFO] [stdout] 343 |         impl Rectangle {
[INFO] [stdout]     |         -------------- associated function in this implementation
[INFO] [stdout] 344 |             // 参数中 没有 &self 相当于一个静态方法
[INFO] [stdout] 345 |             fn square(size: u32) -> Self {
[INFO] [stdout]     |                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `square` is never used
[INFO] [stdout]    --> src/ch05.rs:366:16
[INFO] [stdout]     |
[INFO] [stdout] 365 |         impl Rectangle {
[INFO] [stdout]     |         -------------- associated function in this implementation
[INFO] [stdout] 366 |             fn square(size: u32) -> Self {
[INFO] [stdout]     |                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `area` is never used
[INFO] [stdout]    --> src/ch05.rs:375:16
[INFO] [stdout]     |
[INFO] [stdout] 374 |         impl Rectangle {
[INFO] [stdout]     |         -------------- method in this implementation
[INFO] [stdout] 375 |             fn area(&self) -> u32 {
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `can_hold` is never used
[INFO] [stdout]    --> src/ch05.rs:381:16
[INFO] [stdout]     |
[INFO] [stdout] 380 |         impl Rectangle {
[INFO] [stdout]     |         -------------- method in this implementation
[INFO] [stdout] 381 |             fn can_hold(&self, other: &Rectangle) -> bool {
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch06_01_defining_an_enum` is never used
[INFO] [stdout]  --> src/ch06.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn ch06_01_defining_an_enum() {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `call` is never used
[INFO] [stdout]   --> src/ch06.rs:91:16
[INFO] [stdout]    |
[INFO] [stdout] 90 |         impl Message {
[INFO] [stdout]    |         ------------ method in this implementation
[INFO] [stdout] 91 |             fn call(&self) -> i32 {
[INFO] [stdout]    |                ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch06_02_match` is never used
[INFO] [stdout]    --> src/ch06.rs:138:8
[INFO] [stdout]     |
[INFO] [stdout] 138 | pub fn ch06_02_match() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `UsState` is never used
[INFO] [stdout]    --> src/ch06.rs:243:6
[INFO] [stdout]     |
[INFO] [stdout] 243 | enum UsState {
[INFO] [stdout]     |      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `B1` is never used
[INFO] [stdout]    --> src/ch06.rs:250:6
[INFO] [stdout]     |
[INFO] [stdout] 250 | enum B1 {
[INFO] [stdout]     |      ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Coin` is never used
[INFO] [stdout]    --> src/ch06.rs:256:6
[INFO] [stdout]     |
[INFO] [stdout] 256 | enum Coin {
[INFO] [stdout]     |      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch06_03_if_let` is never used
[INFO] [stdout]    --> src/ch06.rs:264:8
[INFO] [stdout]     |
[INFO] [stdout] 264 | pub fn ch06_03_if_let() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch06_03_matches` is never used
[INFO] [stdout]    --> src/ch06.rs:324:8
[INFO] [stdout]     |
[INFO] [stdout] 324 | pub fn ch06_03_matches() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `main` is never used
[INFO] [stdout]    --> src/ch07/mod.rs:101:8
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub fn main() {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `breathe_in` is never used
[INFO] [stdout]   --> src/ch07/mod.rs:20:8
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn breathe_in() {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clarinet` is never used
[INFO] [stdout]   --> src/ch07/mod.rs:11:16
[INFO] [stdout]    |
[INFO] [stdout] 11 |         pub fn clarinet() {
[INFO] [stdout]    |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `private_fn` is never used
[INFO] [stdout]   --> src/ch07/mod.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 |         fn private_fn() {}
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Vegetable` is never constructed
[INFO] [stdout]   --> src/ch07/mod.rs:34:16
[INFO] [stdout]    |
[INFO] [stdout] 34 |     pub struct Vegetable {
[INFO] [stdout]    |                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/ch07/mod.rs:40:16
[INFO] [stdout]    |
[INFO] [stdout] 39 |     impl Vegetable {
[INFO] [stdout]    |     -------------- associated function in this implementation
[INFO] [stdout] 40 |         pub fn new(name: &str) -> Vegetable {
[INFO] [stdout]    |                ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_struct` is never used
[INFO] [stdout]   --> src/ch07/mod.rs:48:12
[INFO] [stdout]    |
[INFO] [stdout] 48 |     pub fn generate_struct() -> Vegetable {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test` is never used
[INFO] [stdout]   --> src/ch07/mod.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 55 |     fn test() {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Appetizer` is never used
[INFO] [stdout]   --> src/ch07/mod.rs:72:14
[INFO] [stdout]    |
[INFO] [stdout] 72 |     pub enum Appetizer {
[INFO] [stdout]    |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clarinet_trio` is never used
[INFO] [stdout]   --> src/ch07/mod.rs:85:12
[INFO] [stdout]    |
[INFO] [stdout] 85 |     pub fn clarinet_trio() {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clarinet` is never used
[INFO] [stdout]  --> src/ch07/sound1.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 |     pub fn clarinet() {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clarinet` is never used
[INFO] [stdout]  --> src/ch07/sound2/instrument.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub fn clarinet() {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clarinet` is never used
[INFO] [stdout]  --> src/ch07/sound3/instrument.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub fn clarinet() {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clarinet` is never used
[INFO] [stdout]    --> src/ch07/mod.rs:173:24
[INFO] [stdout]     |
[INFO] [stdout] 173 |                 pub fn clarinet() {
[INFO] [stdout]     |                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clarinet_trio` is never used
[INFO] [stdout]    --> src/ch07/mod.rs:183:20
[INFO] [stdout]     |
[INFO] [stdout] 183 |             pub fn clarinet_trio() {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch08_03_hash_maps` is never used
[INFO] [stdout]   --> src/ch08_hashmap.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn ch08_03_hash_maps() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch08_02_strings` is never used
[INFO] [stdout]   --> src/ch08_string.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn ch08_02_strings() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch08_01_vectors` is never used
[INFO] [stdout]   --> src/ch08_vec.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn ch08_01_vectors() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch09_01_unrecoverable_errors_with_panic` is never used
[INFO] [stdout]   --> src/ch09.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub fn ch09_01_unrecoverable_errors_with_panic() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch09_02_recoverable_errors_with_result` is never used
[INFO] [stdout]   --> src/ch09.rs:31:8
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub fn ch09_02_recoverable_errors_with_result() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch09_03_to_panic_or_not_to_panic` is never used
[INFO] [stdout]    --> src/ch09.rs:207:8
[INFO] [stdout]     |
[INFO] [stdout] 207 | pub fn ch09_03_to_panic_or_not_to_panic() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch10_00_generics` is never used
[INFO] [stdout]  --> src/ch10.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn ch10_00_generics() {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch10_01_syntax` is never used
[INFO] [stdout]   --> src/ch10.rs:40:8
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub fn ch10_01_syntax() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `x` is never used
[INFO] [stdout]   --> src/ch10.rs:79:16
[INFO] [stdout]    |
[INFO] [stdout] 78 |         impl<A> Point<A> {
[INFO] [stdout]    |         ---------------- method in this implementation
[INFO] [stdout] 79 |             fn x(&self) -> &A {
[INFO] [stdout]    |                ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `distance_from_origin` is never used
[INFO] [stdout]   --> src/ch10.rs:85:16
[INFO] [stdout]    |
[INFO] [stdout] 84 |         impl Point<f32> {
[INFO] [stdout]    |         --------------- method in this implementation
[INFO] [stdout] 85 |             fn distance_from_origin(&self) -> f32 {
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `mix_up` is never used
[INFO] [stdout]    --> src/ch10.rs:109:16
[INFO] [stdout]     |
[INFO] [stdout] 106 |         impl<T, U> Point<T, U> {
[INFO] [stdout]     |         ---------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 109 |             fn mix_up<V, W>(self, other: Point<V, W>) -> Point<T, W> {
[INFO] [stdout]     |                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch10_02_traits` is never used
[INFO] [stdout]    --> src/ch10.rs:190:8
[INFO] [stdout]     |
[INFO] [stdout] 190 | pub fn ch10_02_traits() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/ch10.rs:739:16
[INFO] [stdout]     |
[INFO] [stdout] 738 |         impl<T> Pair<T> {
[INFO] [stdout]     |         --------------- associated function in this implementation
[INFO] [stdout] 739 |             fn new(x: T, y: T) -> Self {
[INFO] [stdout]     |                ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `cmp_display` is never used
[INFO] [stdout]    --> src/ch10.rs:746:16
[INFO] [stdout]     |
[INFO] [stdout] 745 |         impl<T: Display + PartialOrd> Pair<T> {
[INFO] [stdout]     |         ------------------------------------- method in this implementation
[INFO] [stdout] 746 |             fn cmp_display(&self) {
[INFO] [stdout]     |                ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch10_03_lifetime_syntax` is never used
[INFO] [stdout]    --> src/ch10.rs:774:8
[INFO] [stdout]     |
[INFO] [stdout] 774 | pub fn ch10_03_lifetime_syntax() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `level` is never used
[INFO] [stdout]    --> src/ch10.rs:944:16
[INFO] [stdout]     |
[INFO] [stdout] 943 |         impl ImportantExcerpt {
[INFO] [stdout]     |         --------------------- method in this implementation
[INFO] [stdout] 944 |             fn level(&self) -> i32 {
[INFO] [stdout]     |                ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `level` and `announce_and_return_part` are never used
[INFO] [stdout]    --> src/ch10.rs:962:16
[INFO] [stdout]     |
[INFO] [stdout] 961 |         impl<'a> ImportantExcerpt<'a> {
[INFO] [stdout]     |         ----------------------------- methods in this implementation
[INFO] [stdout] 962 |             fn level(&self) -> i32 {
[INFO] [stdout]     |                ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 965 |             fn announce_and_return_part(&self, announcement: &str) -> &str {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `a` is never used
[INFO] [stdout]    --> src/ch10.rs:978:16
[INFO] [stdout]     |
[INFO] [stdout] 977 |         impl ImportantExcerpt<'_> {
[INFO] [stdout]     |         ------------------------- method in this implementation
[INFO] [stdout] 978 |             fn a(&self, announcement: &str) -> &str {
[INFO] [stdout]     |                ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `value` is never read
[INFO] [stdout]    --> src/ch11_01.rs:133:5
[INFO] [stdout]     |
[INFO] [stdout] 132 | pub struct Guess {
[INFO] [stdout]     |            ----- field in this struct
[INFO] [stdout] 133 |     value: i32,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `add_two` is never used
[INFO] [stdout]   --> src/ch11_03.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub fn add_two(a: i32) -> i32 {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Config` is never constructed
[INFO] [stdout]   --> src/ch12.rs:20:8
[INFO] [stdout]    |
[INFO] [stdout] 20 | struct Config<'a> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/ch12.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl Config<'_> {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] 26 |     fn new(args: &[String]) -> Result<Config<'_>, &'static str> {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `minigrep` is never used
[INFO] [stdout]   --> src/ch12.rs:38:8
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub fn minigrep() {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> src/ch12.rs:61:4
[INFO] [stdout]    |
[INFO] [stdout] 61 | fn run(config: Config) -> Result<(), Box<dyn Error>> {
[INFO] [stdout]    |    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch13_01_closures` is never used
[INFO] [stdout]   --> src/ch13.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn ch13_01_closures() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `value` are never used
[INFO] [stdout]    --> src/ch13.rs:118:16
[INFO] [stdout]     |
[INFO] [stdout] 114 | /         impl<T> Cacher<T>
[INFO] [stdout] 115 | |         where
[INFO] [stdout] 116 | |             T: Fn(u32) -> u32, // 还得再写一遍
[INFO] [stdout]     | |______________________________- associated items in this implementation
[INFO] [stdout] 117 |           {
[INFO] [stdout] 118 |               fn new(calculation: T) -> Cacher<T> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |               fn value(&mut self, arg: u32) -> u32 {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `value` are never used
[INFO] [stdout]    --> src/ch13.rs:178:16
[INFO] [stdout]     |
[INFO] [stdout] 174 | /         impl<T> Cacher<T>
[INFO] [stdout] 175 | |         where
[INFO] [stdout] 176 | |             T: Fn(u32) -> u32,
[INFO] [stdout]     | |______________________________- associated items in this implementation
[INFO] [stdout] 177 |           {
[INFO] [stdout] 178 |               fn new(calculation: T) -> Cacher<T> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |               fn value(&mut self, arg: u32) -> u32 {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `value` are never used
[INFO] [stdout]    --> src/ch13.rs:221:16
[INFO] [stdout]     |
[INFO] [stdout] 216 | /         impl<T, U> Cacher1<T, U>
[INFO] [stdout] 217 | |         where
[INFO] [stdout] 218 | |             U: Eq + Hash + Clone,
[INFO] [stdout] 219 | |             T: Fn(U) -> u32, // 获取所有权
[INFO] [stdout]     | |____________________________- associated items in this implementation
[INFO] [stdout] 220 |           {
[INFO] [stdout] 221 |               fn new(calculation: T) -> Cacher1<T, U> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |               fn value(&mut self, arg: U) -> u32 {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `value` are never used
[INFO] [stdout]    --> src/ch13.rs:261:16
[INFO] [stdout]     |
[INFO] [stdout] 256 | /         impl<T, U> Cacher2<T, U>
[INFO] [stdout] 257 | |         where
[INFO] [stdout] 258 | |             U: Eq + Hash + Clone,
[INFO] [stdout] 259 | |             T: Fn(&U) -> u32,
[INFO] [stdout]     | |_____________________________- associated items in this implementation
[INFO] [stdout] 260 |           {
[INFO] [stdout] 261 |               fn new(calculation: T) -> Cacher2<T, U> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 267 |               fn value(&mut self, arg: U) -> u32 {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch13_02_iterators` is never used
[INFO] [stdout]    --> src/ch13.rs:339:8
[INFO] [stdout]     |
[INFO] [stdout] 339 | pub fn ch13_02_iterators() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/ch13.rs:456:16
[INFO] [stdout]     |
[INFO] [stdout] 455 |         impl Counter {
[INFO] [stdout]     |         ------------ associated function in this implementation
[INFO] [stdout] 456 |             fn new() -> Counter {
[INFO] [stdout]     |                ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch13_04_performance` is never used
[INFO] [stdout]    --> src/ch13.rs:528:8
[INFO] [stdout]     |
[INFO] [stdout] 528 | pub fn ch13_04_performance(buffer: &mut [i32], coefficients: [i64; 12], qlp_shift: i16) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch14_01_release_profiles` is never used
[INFO] [stdout]   --> src/ch14.rs:22:4
[INFO] [stdout]    |
[INFO] [stdout] 22 | fn ch14_01_release_profiles() {}
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch14_02_publishing_to_crates_io` is never used
[INFO] [stdout]   --> src/ch14.rs:27:4
[INFO] [stdout]    |
[INFO] [stdout] 27 | fn ch14_02_publishing_to_crates_io() {}
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch15_01_box` is never used
[INFO] [stdout]   --> src/ch15.rs:34:8
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub fn ch15_01_box() {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch15_02_deref` is never used
[INFO] [stdout]   --> src/ch15.rs:93:8
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub fn ch15_02_deref() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/ch15.rs:135:12
[INFO] [stdout]     |
[INFO] [stdout] 134 |     impl<T> MyBox<T> {
[INFO] [stdout]     |     ---------------- associated function in this implementation
[INFO] [stdout] 135 |         fn new(x: T) -> MyBox<T> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/ch15.rs:212:16
[INFO] [stdout]     |
[INFO] [stdout] 211 |         impl<T> MyBox<T> {
[INFO] [stdout]     |         ---------------- associated function in this implementation
[INFO] [stdout] 212 |             fn new(x: T) -> MyBox<T> {
[INFO] [stdout]     |                ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch15_03_drop` is never used
[INFO] [stdout]    --> src/ch15.rs:239:8
[INFO] [stdout]     |
[INFO] [stdout] 239 | pub fn ch15_03_drop() {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `List` is never used
[INFO] [stdout]    --> src/ch15.rs:305:6
[INFO] [stdout]     |
[INFO] [stdout] 305 | enum List {
[INFO] [stdout]     |      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch15_04_rc` is never used
[INFO] [stdout]    --> src/ch15.rs:310:8
[INFO] [stdout]     |
[INFO] [stdout] 310 | pub fn ch15_04_rc() {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Messenger` is never used
[INFO] [stdout]    --> src/ch15.rs:404:11
[INFO] [stdout]     |
[INFO] [stdout] 404 | pub trait Messenger {
[INFO] [stdout]     |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LimitTracker` is never constructed
[INFO] [stdout]    --> src/ch15.rs:408:12
[INFO] [stdout]     |
[INFO] [stdout] 408 | pub struct LimitTracker<'a, T: Messenger> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `set_value` are never used
[INFO] [stdout]    --> src/ch15.rs:418:12
[INFO] [stdout]     |
[INFO] [stdout] 414 | / impl<'a, T> LimitTracker<'a, T>
[INFO] [stdout] 415 | | where
[INFO] [stdout] 416 | |     T: Messenger,
[INFO] [stdout]     | |_________________- associated items in this implementation
[INFO] [stdout] 417 |   {
[INFO] [stdout] 418 |       pub fn new(messenger: &'_ T, max: usize) -> LimitTracker<'_, T> {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] ...
[INFO] [stdout] 426 |       pub fn set_value(&mut self, value: usize) {
[INFO] [stdout]     |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `List` is never used
[INFO] [stdout]  --> src/ch15_02.rs:9:6
[INFO] [stdout]   |
[INFO] [stdout] 9 | enum List {
[INFO] [stdout]   |      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `main` is never used
[INFO] [stdout]   --> src/ch15_02.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn main() {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `List` is never used
[INFO] [stdout]   --> src/ch15_03.rs:12:6
[INFO] [stdout]    |
[INFO] [stdout] 12 | enum List {
[INFO] [stdout]    |      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `tail` is never used
[INFO] [stdout]   --> src/ch15_03.rs:20:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl List {
[INFO] [stdout]    | --------- method in this implementation
[INFO] [stdout] 19 |     // 我们希望能够修改 Cons 成员所指向的 List。这里还增加了一个 tail 方法来方便我们在有 Cons 成员的时候访问其第二项。
[INFO] [stdout] 20 |     fn tail(&self) -> Option<&RefCell<Rc<List>>> {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `main` is never used
[INFO] [stdout]   --> src/ch15_03.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn main() {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Node` is never constructed
[INFO] [stdout]   --> src/ch15_04.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | struct Node {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `main` is never used
[INFO] [stdout]   --> src/ch15_04.rs:30:8
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub fn main() {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `regular_field` is never read
[INFO] [stdout]   --> src/ch15_05.rs:87:5
[INFO] [stdout]    |
[INFO] [stdout] 86 | struct SomeStruct {
[INFO] [stdout]    |        ---------- field in this struct
[INFO] [stdout] 87 |     regular_field: u8,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch16_01_threads` is never used
[INFO] [stdout]   --> src/ch16.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn ch16_01_threads() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch16_02_message_passing` is never used
[INFO] [stdout]   --> src/ch16.rs:52:8
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub fn ch16_02_message_passing() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch16_03_shared_state` is never used
[INFO] [stdout]    --> src/ch16.rs:140:8
[INFO] [stdout]     |
[INFO] [stdout] 140 | pub fn ch16_03_shared_state() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch16_04_extensible_concurrency_sync_and_send` is never used
[INFO] [stdout]    --> src/ch16.rs:218:8
[INFO] [stdout]     |
[INFO] [stdout] 218 | pub fn ch16_04_extensible_concurrency_sync_and_send() {}
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch17_01whatis_oo` is never used
[INFO] [stdout]  --> src/ch17.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn ch17_01whatis_oo() {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `add`, `remove`, `average`, and `update_average` are never used
[INFO] [stdout]   --> src/ch17.rs:10:16
[INFO] [stdout]    |
[INFO] [stdout]  9 |     impl AveragedCollection {
[INFO] [stdout]    |     ----------------------- methods in this implementation
[INFO] [stdout] 10 |         pub fn add(&mut self, value: i32) {
[INFO] [stdout]    |                ^^^
[INFO] [stdout] ...
[INFO] [stdout] 15 |         pub fn remove(&mut self) -> Option<i32> {
[INFO] [stdout]    |                ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |         pub fn average(&self) -> f64 {
[INFO] [stdout]    |                ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |         fn update_average(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch17_02_trait_objects` is never used
[INFO] [stdout]   --> src/ch17.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub fn ch17_02_trait_objects() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `run` is never used
[INFO] [stdout]   --> src/ch17.rs:49:16
[INFO] [stdout]    |
[INFO] [stdout] 48 |     impl Screen {
[INFO] [stdout]    |     ----------- method in this implementation
[INFO] [stdout] 49 |         pub fn run(&self) {
[INFO] [stdout]    |                ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `run` is never used
[INFO] [stdout]   --> src/ch17.rs:70:20
[INFO] [stdout]    |
[INFO] [stdout] 66 | /         impl<T> Screen<T>
[INFO] [stdout] 67 | |         where
[INFO] [stdout] 68 | |             T: Draw,
[INFO] [stdout]    | |____________________- method in this implementation
[INFO] [stdout] 69 |           {
[INFO] [stdout] 70 |               pub fn run(&self) {
[INFO] [stdout]    |                      ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch17_03_oo_design_patterns` is never used
[INFO] [stdout]    --> src/ch17.rs:226:8
[INFO] [stdout]     |
[INFO] [stdout] 226 | pub fn ch17_03_oo_design_patterns() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_text`, `content`, `request_review`, `approve`, and `reject` are never used
[INFO] [stdout]    --> src/ch17.rs:241:20
[INFO] [stdout]     |
[INFO] [stdout] 240 |         impl Post {
[INFO] [stdout]     |         --------- associated items in this implementation
[INFO] [stdout] 241 |             pub fn new() -> Post {
[INFO] [stdout]     |                    ^^^
[INFO] [stdout] ...
[INFO] [stdout] 249 |             pub fn add_text(&mut self, text: &str) {
[INFO] [stdout]     |                    ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 255 |             pub fn content(&self) -> &str {
[INFO] [stdout]     |                    ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 266 |             pub fn request_review(&mut self) {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 273 |             pub fn approve(&mut self) {
[INFO] [stdout]     |                    ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 280 |             pub fn reject(&mut self) {
[INFO] [stdout]     |                    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `content` are never used
[INFO] [stdout]    --> src/ch17.rs:386:20
[INFO] [stdout]     |
[INFO] [stdout] 385 |         impl Post {
[INFO] [stdout]     |         --------- associated items in this implementation
[INFO] [stdout] 386 |             pub fn new() -> DraftPost {
[INFO] [stdout]     |                    ^^^
[INFO] [stdout] ...
[INFO] [stdout] 391 |             pub fn content(&self) -> &str {
[INFO] [stdout]     |                    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `add_text` and `request_review` are never used
[INFO] [stdout]    --> src/ch17.rs:397:20
[INFO] [stdout]     |
[INFO] [stdout] 396 |         impl DraftPost {
[INFO] [stdout]     |         -------------- methods in this implementation
[INFO] [stdout] 397 |             pub fn add_text(&mut self, text: &str) {
[INFO] [stdout]     |                    ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 401 |             pub fn request_review(self) -> PendingReviewPost {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `approve` is never used
[INFO] [stdout]    --> src/ch17.rs:413:20
[INFO] [stdout]     |
[INFO] [stdout] 412 |         impl PendingReviewPost {
[INFO] [stdout]     |         ---------------------- method in this implementation
[INFO] [stdout] 413 |             pub fn approve(self) -> Post {
[INFO] [stdout]     |                    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch18_01_all_the_places_for_patterns` is never used
[INFO] [stdout]  --> src/ch18.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn ch18_01_all_the_places_for_patterns() {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch18_02_refutability` is never used
[INFO] [stdout]   --> src/ch18.rs:97:8
[INFO] [stdout]    |
[INFO] [stdout] 97 | pub fn ch18_02_refutability() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch18_03_pattern_syntax` is never used
[INFO] [stdout]    --> src/ch18.rs:106:8
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub fn ch18_03_pattern_syntax() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch19_01_unsafe_rust` is never used
[INFO] [stdout]  --> src/ch19.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn ch19_01_unsafe_rust() {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch19_03_advanced_traits` is never used
[INFO] [stdout]    --> src/ch19.rs:215:8
[INFO] [stdout]     |
[INFO] [stdout] 215 | pub fn ch19_03_advanced_traits() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `fly` is never used
[INFO] [stdout]    --> src/ch19.rs:363:16
[INFO] [stdout]     |
[INFO] [stdout] 362 |         impl Human {
[INFO] [stdout]     |         ---------- method in this implementation
[INFO] [stdout] 363 |             fn fly(&self) {
[INFO] [stdout]     |                ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `baby_name` is never used
[INFO] [stdout]    --> src/ch19.rs:385:16
[INFO] [stdout]     |
[INFO] [stdout] 384 |         impl Dog {
[INFO] [stdout]     |         -------- associated function in this implementation
[INFO] [stdout] 385 |             fn baby_name() -> String {
[INFO] [stdout]     |                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch19_04_advanced_types` is never used
[INFO] [stdout]    --> src/ch19.rs:477:8
[INFO] [stdout]     |
[INFO] [stdout] 477 | pub fn ch19_04_advanced_types() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ch19_05_advanced_functions_and_closures` is never used
[INFO] [stdout]    --> src/ch19.rs:663:8
[INFO] [stdout]     |
[INFO] [stdout] 663 | pub fn ch19_05_advanced_functions_and_closures() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `abs` is never used
[INFO] [stdout]    --> src/ch19.rs:134:12
[INFO] [stdout]     |
[INFO] [stdout] 134 |         fn abs(input: i32) -> i32;
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `main` is never used
[INFO] [stdout]   --> src/ch19_06.rs:35:4
[INFO] [stdout]    |
[INFO] [stdout] 35 | fn main() {
[INFO] [stdout]    |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `main` is never used
[INFO] [stdout]  --> src/ch20.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn main() {
[INFO] [stdout]   |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_connection` is never used
[INFO] [stdout]   --> src/ch20.rs:19:4
[INFO] [stdout]    |
[INFO] [stdout] 19 | fn handle_connection(mut stream: TcpStream) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `main` is never used
[INFO] [stdout]  --> src/test.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn main() {
[INFO] [stdout]   |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: path statement with no effect
[INFO] [stdout]    --> src/ch06.rs:315:9
[INFO] [stdout]     |
[INFO] [stdout] 315 |         a;
[INFO] [stdout]     |         ^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(path_statements)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: path statement with no effect
[INFO] [stdout]    --> src/ch06.rs:316:9
[INFO] [stdout]     |
[INFO] [stdout] 316 |         b;
[INFO] [stdout]     |         ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: path statement with no effect
[INFO] [stdout]    --> src/ch06.rs:317:9
[INFO] [stdout]     |
[INFO] [stdout] 317 |         c;
[INFO] [stdout]     |         ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: path statement with no effect
[INFO] [stdout]    --> src/ch06.rs:318:9
[INFO] [stdout]     |
[INFO] [stdout] 318 |         d;
[INFO] [stdout]     |         ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Float` should have a snake case name
[INFO] [stdout]    --> src/ch08_vec.rs:136:13
[INFO] [stdout]     |
[INFO] [stdout] 136 |             Float => (),
[INFO] [stdout]     |             ^^^^^ help: convert the identifier to snake case (notice the capitalization): `float`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Text` should have a snake case name
[INFO] [stdout]    --> src/ch08_vec.rs:137:13
[INFO] [stdout]     |
[INFO] [stdout] 137 |             Text => (),
[INFO] [stdout]     |             ^^^^ help: convert the identifier to snake case: `text`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `Int` should have a snake case name
[INFO] [stdout]    --> src/ch08_vec.rs:138:13
[INFO] [stdout]     |
[INFO] [stdout] 138 |             Int => (),
[INFO] [stdout]     |             ^^^ help: convert the identifier to snake case (notice the capitalization): `int`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/ch15.rs:464:31
[INFO] [stdout]     |
[INFO] [stdout] 464 |         pub fn new(messenger: &T, max: usize) -> LimitTracker<T> {
[INFO] [stdout]     |                               ^^                 ^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                               |
[INFO] [stdout]     |                               the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 464 |         pub fn new(messenger: &T, max: usize) -> LimitTracker<'_, T> {
[INFO] [stdout]     |                                                               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 9.03s
[INFO] running `Command { std: "docker" "inspect" "22de3e2e8951df159b5cff384a723f2908fec163b448e512aa915cce3b77a0fa", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "22de3e2e8951df159b5cff384a723f2908fec163b448e512aa915cce3b77a0fa", kill_on_drop: false }`
[INFO] [stdout] 22de3e2e8951df159b5cff384a723f2908fec163b448e512aa915cce3b77a0fa
