[INFO] cloning repository https://github.com/coutcin-xw/rust_lerning
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/coutcin-xw/rust_lerning" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcoutcin-xw%2Frust_lerning", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcoutcin-xw%2Frust_lerning'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 337f245d5e2769dda06e90e0371373398f0b514e
[INFO] checking coutcin-xw/rust_lerning against try#e622d8d7bed4f2668d446e06c6c1436ecae15796 for pr-156776
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcoutcin-xw%2Frust_lerning" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/coutcin-xw/rust_lerning
[INFO] finished tweaking git repo https://github.com/coutcin-xw/rust_lerning
[INFO] tweaked toml for git repo https://github.com/coutcin-xw/rust_lerning written to /workspace/builds/worker-0-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/coutcin-xw/rust_lerning on toolchain e622d8d7bed4f2668d446e06c6c1436ecae15796
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+e622d8d7bed4f2668d446e06c6c1436ecae15796" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/coutcin-xw/rust_lerning 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" "+e622d8d7bed4f2668d446e06c6c1436ecae15796" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+e622d8d7bed4f2668d446e06c6c1436ecae15796" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 3534056e77d4fb2be3350a1ccfc3e179d042f60b91d2ad0a45b894d6f0bb9e6f
[INFO] running `Command { std: "docker" "start" "-a" "3534056e77d4fb2be3350a1ccfc3e179d042f60b91d2ad0a45b894d6f0bb9e6f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "3534056e77d4fb2be3350a1ccfc3e179d042f60b91d2ad0a45b894d6f0bb9e6f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "3534056e77d4fb2be3350a1ccfc3e179d042f60b91d2ad0a45b894d6f0bb9e6f", kill_on_drop: false }`
[INFO] [stdout] 3534056e77d4fb2be3350a1ccfc3e179d042f60b91d2ad0a45b894d6f0bb9e6f
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+e622d8d7bed4f2668d446e06c6c1436ecae15796" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] c4f9e3ae10053235aeebe8eca3dbf7f5a6b4bac98da9bde1395c982e7caac3aa
[INFO] running `Command { std: "docker" "start" "-a" "c4f9e3ae10053235aeebe8eca3dbf7f5a6b4bac98da9bde1395c982e7caac3aa", kill_on_drop: false }`
[INFO] [stderr]     Checking rust_learning v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `animals::*`
[INFO] [stdout]    --> src/14_modules.rs:203:9
[INFO] [stdout]     |
[INFO] [stdout] 203 |     use animals::*;
[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: `backend::Database`
[INFO] [stdout]    --> src/14_modules.rs:372:13
[INFO] [stdout]     |
[INFO] [stdout] 372 |     pub use backend::Database;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `animals::*`
[INFO] [stdout]    --> src/14_modules.rs:203:9
[INFO] [stdout]     |
[INFO] [stdout] 203 |     use animals::*;
[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: `backend::Database`
[INFO] [stdout]    --> src/14_modules.rs:372:13
[INFO] [stdout]     |
[INFO] [stdout] 372 |     pub use backend::Database;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]   --> src/01_basics.rs:58:9
[INFO] [stdout]    |
[INFO] [stdout] 58 |     let x = x + 1; // 新的x，类型可以不同
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `y` is never read
[INFO] [stdout]   --> src/01_basics.rs:39:17
[INFO] [stdout]    |
[INFO] [stdout] 39 |     let mut y = 10; // mut = mutable，可变变量
[INFO] [stdout]    |                 ^^ this value is reassigned later and never used
[INFO] [stdout] 40 |     y = 20; // OK，可以修改
[INFO] [stdout]    |     ------ `y` is overwritten here before the previous value is read
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/01_basics.rs:76:9
[INFO] [stdout]    |
[INFO] [stdout] 76 |     let i: i32 = 42;
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `big`
[INFO] [stdout]   --> src/01_basics.rs:77:9
[INFO] [stdout]    |
[INFO] [stdout] 77 |     let big: u128 = 100_000_000; // 下划线提高可读性
[INFO] [stdout]    |         ^^^ help: if this is intentional, prefix it with an underscore: `_big`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]   --> src/01_basics.rs:82:9
[INFO] [stdout]    |
[INFO] [stdout] 82 |     let f: f64 = 3.14;
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f2`
[INFO] [stdout]   --> src/01_basics.rs:83:9
[INFO] [stdout]    |
[INFO] [stdout] 83 |     let f2 = 2.0_f32; // 类型后缀
[INFO] [stdout]    |         ^^ help: if this is intentional, prefix it with an underscore: `_f2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `b`
[INFO] [stdout]   --> src/01_basics.rs:86:9
[INFO] [stdout]    |
[INFO] [stdout] 86 |     let b: bool = true;
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_b`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s2`
[INFO] [stdout]   --> src/02_ownership.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 26 |     let s2 = s1; // 所有权从s1转移到s2
[INFO] [stdout]    |         ^^ help: if this is intentional, prefix it with an underscore: `_s2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `c`
[INFO] [stdout]    --> src/02_ownership.rs:183:9
[INFO] [stdout]     |
[INFO] [stdout] 183 |     let c = CustomSmartPointer {
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_c`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `literal`
[INFO] [stdout]    --> src/03_borrowing.rs:146:9
[INFO] [stdout]     |
[INFO] [stdout] 146 |     let literal: &str = "hello"; // 字面量，编译期确定
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_literal`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `slice`
[INFO] [stdout]    --> src/03_borrowing.rs:148:9
[INFO] [stdout]     |
[INFO] [stdout] 148 |     let slice: &str = &string; // String可以转成&str
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_slice`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]   --> src/01_basics.rs:58:9
[INFO] [stdout]    |
[INFO] [stdout] 58 |     let x = x + 1; // 新的x，类型可以不同
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `y` is never read
[INFO] [stdout]   --> src/01_basics.rs:39:17
[INFO] [stdout]    |
[INFO] [stdout] 39 |     let mut y = 10; // mut = mutable，可变变量
[INFO] [stdout]    |                 ^^ this value is reassigned later and never used
[INFO] [stdout] 40 |     y = 20; // OK，可以修改
[INFO] [stdout]    |     ------ `y` is overwritten here before the previous value is read
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `origin`
[INFO] [stdout]   --> src/04_struct_enum.rs:88:9
[INFO] [stdout]    |
[INFO] [stdout] 88 |     let origin = Point(0.0, 0.0);
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_origin`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/01_basics.rs:76:9
[INFO] [stdout]    |
[INFO] [stdout] 76 |     let i: i32 = 42;
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `big`
[INFO] [stdout]   --> src/01_basics.rs:77:9
[INFO] [stdout]    |
[INFO] [stdout] 77 |     let big: u128 = 100_000_000; // 下划线提高可读性
[INFO] [stdout]    |         ^^^ help: if this is intentional, prefix it with an underscore: `_big`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]   --> src/01_basics.rs:82:9
[INFO] [stdout]    |
[INFO] [stdout] 82 |     let f: f64 = 3.14;
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f2`
[INFO] [stdout]   --> src/01_basics.rs:83:9
[INFO] [stdout]    |
[INFO] [stdout] 83 |     let f2 = 2.0_f32; // 类型后缀
[INFO] [stdout]    |         ^^ help: if this is intentional, prefix it with an underscore: `_f2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `b`
[INFO] [stdout]   --> src/01_basics.rs:86:9
[INFO] [stdout]    |
[INFO] [stdout] 86 |     let b: bool = true;
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_b`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s2`
[INFO] [stdout]   --> src/02_ownership.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 26 |     let s2 = s1; // 所有权从s1转移到s2
[INFO] [stdout]    |         ^^ help: if this is intentional, prefix it with an underscore: `_s2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `c`
[INFO] [stdout]    --> src/02_ownership.rs:183:9
[INFO] [stdout]     |
[INFO] [stdout] 183 |     let c = CustomSmartPointer {
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_c`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `literal`
[INFO] [stdout]    --> src/03_borrowing.rs:146:9
[INFO] [stdout]     |
[INFO] [stdout] 146 |     let literal: &str = "hello"; // 字面量，编译期确定
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_literal`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `slice`
[INFO] [stdout]    --> src/03_borrowing.rs:148:9
[INFO] [stdout]     |
[INFO] [stdout] 148 |     let slice: &str = &string; // String可以转成&str
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_slice`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]    --> src/06_error_handling.rs:112:9
[INFO] [stdout]     |
[INFO] [stdout] 112 |     let f = File::open("Cargo.toml").unwrap();
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `origin`
[INFO] [stdout]   --> src/04_struct_enum.rs:88:9
[INFO] [stdout]    |
[INFO] [stdout] 88 |     let origin = Point(0.0, 0.0);
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_origin`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]    --> src/07_trait_generics.rs:256:24
[INFO] [stdout]     |
[INFO] [stdout] 256 | fn some_function<T, U>(t: &T, u: &U) -> String
[INFO] [stdout]     |                        ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `u`
[INFO] [stdout]    --> src/07_trait_generics.rs:256:31
[INFO] [stdout]     |
[INFO] [stdout] 256 | fn some_function<T, U>(t: &T, u: &U) -> String
[INFO] [stdout]     |                               ^ help: if this is intentional, prefix it with an underscore: `_u`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `r` is assigned to, but never used
[INFO] [stdout]   --> src/08_lifetime.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 35 |     let r;       // ---------+-- 'a
[INFO] [stdout]    |         ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: consider using `_r` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `r` is never read
[INFO] [stdout]   --> src/08_lifetime.rs:40:9
[INFO] [stdout]    |
[INFO] [stdout] 40 |         r = &x;          //  |       |
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]    --> src/06_error_handling.rs:112:9
[INFO] [stdout]     |
[INFO] [stdout] 112 |     let f = File::open("Cargo.toml").unwrap();
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]    --> src/07_trait_generics.rs:256:24
[INFO] [stdout]     |
[INFO] [stdout] 256 | fn some_function<T, U>(t: &T, u: &U) -> String
[INFO] [stdout]     |                        ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `u`
[INFO] [stdout]    --> src/07_trait_generics.rs:256:31
[INFO] [stdout]     |
[INFO] [stdout] 256 | fn some_function<T, U>(t: &T, u: &U) -> String
[INFO] [stdout]     |                               ^ help: if this is intentional, prefix it with an underscore: `_u`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `r` is assigned to, but never used
[INFO] [stdout]   --> src/08_lifetime.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 35 |     let r;       // ---------+-- 'a
[INFO] [stdout]    |         ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: consider using `_r` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `r` is never read
[INFO] [stdout]   --> src/08_lifetime.rs:40:9
[INFO] [stdout]    |
[INFO] [stdout] 40 |         r = &x;          //  |       |
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `iter`
[INFO] [stdout]   --> src/11_iterators.rs:37:9
[INFO] [stdout]    |
[INFO] [stdout] 37 |     let iter: std::slice::Iter<i32> = v.iter();
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_iter`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `iter_mut`
[INFO] [stdout]   --> src/11_iterators.rs:42:9
[INFO] [stdout]    |
[INFO] [stdout] 42 |     let iter_mut: std::slice::IterMut<i32> = v2.iter_mut();
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_iter_mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `iter_own`
[INFO] [stdout]   --> src/11_iterators.rs:46:9
[INFO] [stdout]    |
[INFO] [stdout] 46 |     let iter_own: std::vec::IntoIter<i32> = v.into_iter();
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_iter_own`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `iter`
[INFO] [stdout]   --> src/11_iterators.rs:37:9
[INFO] [stdout]    |
[INFO] [stdout] 37 |     let iter: std::slice::Iter<i32> = v.iter();
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_iter`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `iter_mut`
[INFO] [stdout]   --> src/11_iterators.rs:42:9
[INFO] [stdout]    |
[INFO] [stdout] 42 |     let iter_mut: std::slice::IterMut<i32> = v2.iter_mut();
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_iter_mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `iter_own`
[INFO] [stdout]   --> src/11_iterators.rs:46:9
[INFO] [stdout]    |
[INFO] [stdout] 46 |     let iter_own: std::vec::IntoIter<i32> = v.into_iter();
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_iter_own`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `large`
[INFO] [stdout]   --> src/12_smart_pointers.rs:64:9
[INFO] [stdout]    |
[INFO] [stdout] 64 |     let large = Box::new(LargeData { data: [0; 1000] });
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_large`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tool`
[INFO] [stdout]    --> src/12_smart_pointers.rs:173:9
[INFO] [stdout]     |
[INFO] [stdout] 173 |     let tool = Rc::new(Tool {
[INFO] [stdout]     |         ^^^^ help: if this is intentional, prefix it with an underscore: `_tool`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/12_smart_pointers.rs:286:9
[INFO] [stdout]     |
[INFO] [stdout] 286 |     let mut s = MyBox::new(String::from("hello"));
[INFO] [stdout]     |         ----^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]    --> src/12_smart_pointers.rs:286:9
[INFO] [stdout]     |
[INFO] [stdout] 286 |     let mut s = MyBox::new(String::from("hello"));
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/12_smart_pointers.rs:318:9
[INFO] [stdout]     |
[INFO] [stdout] 318 |     let mut p = CustomPointer {
[INFO] [stdout]     |         ----^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `future`
[INFO] [stdout]   --> src/13_async_await.rs:49:9
[INFO] [stdout]    |
[INFO] [stdout] 49 |     let future = async {
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_future`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `future`
[INFO] [stdout]    --> src/13_async_await.rs:151:9
[INFO] [stdout]     |
[INFO] [stdout] 151 |     let future = async {
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_future`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `future1`
[INFO] [stdout]    --> src/13_async_await.rs:159:9
[INFO] [stdout]     |
[INFO] [stdout] 159 |     let future1 = fetch_data(1);
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_future1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `future2`
[INFO] [stdout]    --> src/13_async_await.rs:160:9
[INFO] [stdout]     |
[INFO] [stdout] 160 |     let future2 = fetch_data(2);
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_future2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `large`
[INFO] [stdout]   --> src/12_smart_pointers.rs:64:9
[INFO] [stdout]    |
[INFO] [stdout] 64 |     let large = Box::new(LargeData { data: [0; 1000] });
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_large`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tool`
[INFO] [stdout]    --> src/12_smart_pointers.rs:173:9
[INFO] [stdout]     |
[INFO] [stdout] 173 |     let tool = Rc::new(Tool {
[INFO] [stdout]     |         ^^^^ help: if this is intentional, prefix it with an underscore: `_tool`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/12_smart_pointers.rs:286:9
[INFO] [stdout]     |
[INFO] [stdout] 286 |     let mut s = MyBox::new(String::from("hello"));
[INFO] [stdout]     |         ----^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]    --> src/12_smart_pointers.rs:286:9
[INFO] [stdout]     |
[INFO] [stdout] 286 |     let mut s = MyBox::new(String::from("hello"));
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/12_smart_pointers.rs:318:9
[INFO] [stdout]     |
[INFO] [stdout] 318 |     let mut p = CustomPointer {
[INFO] [stdout]     |         ----^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `future`
[INFO] [stdout]   --> src/13_async_await.rs:49:9
[INFO] [stdout]    |
[INFO] [stdout] 49 |     let future = async {
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_future`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `future`
[INFO] [stdout]    --> src/13_async_await.rs:151:9
[INFO] [stdout]     |
[INFO] [stdout] 151 |     let future = async {
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_future`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `future1`
[INFO] [stdout]    --> src/13_async_await.rs:159:9
[INFO] [stdout]     |
[INFO] [stdout] 159 |     let future1 = fetch_data(1);
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_future1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `future2`
[INFO] [stdout]    --> src/13_async_await.rs:160:9
[INFO] [stdout]     |
[INFO] [stdout] 160 |     let future2 = fetch_data(2);
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_future2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `no_return` is never used
[INFO] [stdout]    --> src/01_basics.rs:150:4
[INFO] [stdout]     |
[INFO] [stdout] 150 | fn no_return() {
[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 `take_and_give` is never used
[INFO] [stdout]   --> src/02_ownership.rs:77:4
[INFO] [stdout]    |
[INFO] [stdout] 77 | fn take_and_give(s: String) -> String {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `username`, `active`, and `sign_in_count` are never read
[INFO] [stdout]   --> src/04_struct_enum.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 34 | struct User {
[INFO] [stdout]    |        ---- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 37 |     username: String,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 38 |     email: String,
[INFO] [stdout] 39 |     active: bool,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 40 |     sign_in_count: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `User` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `0` and `1` are never read
[INFO] [stdout]   --> src/04_struct_enum.rs:85:18
[INFO] [stdout]    |
[INFO] [stdout] 85 |     struct Point(f64, f64); // 2D坐标
[INFO] [stdout]    |            ----- ^^^  ^^^
[INFO] [stdout]    |            |
[INFO] [stdout]    |            fields in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider removing these fields
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Down`, `Left`, and `Right` are never constructed
[INFO] [stdout]    --> src/04_struct_enum.rs:185:5
[INFO] [stdout]     |
[INFO] [stdout] 183 | enum Direction {
[INFO] [stdout]     |      --------- variants in this enum
[INFO] [stdout] 184 |     Up, // 无数据的变体
[INFO] [stdout] 185 |     Down,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 186 |     Left,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 187 |     Right,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Direction` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `y` is never read
[INFO] [stdout]    --> src/05_pattern_match.rs:210:9
[INFO] [stdout]     |
[INFO] [stdout] 208 |     struct Point {
[INFO] [stdout]     |            ----- field in this struct
[INFO] [stdout] 209 |         x: i32,
[INFO] [stdout] 210 |         y: i32,
[INFO] [stdout]     |         ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Sub` is never constructed
[INFO] [stdout]    --> src/05_pattern_match.rs:331:5
[INFO] [stdout]     |
[INFO] [stdout] 328 | enum Expr {
[INFO] [stdout]     |      ---- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 331 |     Sub(Box<Expr>, Box<Expr>), // 减法
[INFO] [stdout]     |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_file_contents` is never used
[INFO] [stdout]   --> src/06_error_handling.rs:37:4
[INFO] [stdout]    |
[INFO] [stdout] 37 | fn read_file_contents(path: &str) -> Result<String, io::Error> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_config` is never used
[INFO] [stdout]   --> src/06_error_handling.rs:83:4
[INFO] [stdout]    |
[INFO] [stdout] 83 | fn read_config(path: &str) -> Result<String, io::Error> {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unwrap_usage` is never used
[INFO] [stdout]    --> src/06_error_handling.rs:105:4
[INFO] [stdout]     |
[INFO] [stdout] 105 | fn unwrap_usage() {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `with_match` is never used
[INFO] [stdout]    --> src/06_error_handling.rs:135:8
[INFO] [stdout]     |
[INFO] [stdout] 135 |     fn with_match() -> Result<i32, &'static str> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `with_question_mark` is never used
[INFO] [stdout]    --> src/06_error_handling.rs:145:8
[INFO] [stdout]     |
[INFO] [stdout] 145 |     fn with_question_mark() -> Result<i32, &'static str> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_number_from_file` is never used
[INFO] [stdout]    --> src/06_error_handling.rs:154:4
[INFO] [stdout]     |
[INFO] [stdout] 154 | fn read_number_from_file() -> Result<i32, &'static str> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MyError` is never used
[INFO] [stdout]    --> src/06_error_handling.rs:162:6
[INFO] [stdout]     |
[INFO] [stdout] 162 | enum MyError {
[INFO] [stdout]     |      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `custom_error_demo` is never used
[INFO] [stdout]    --> src/06_error_handling.rs:183:4
[INFO] [stdout]     |
[INFO] [stdout] 183 | fn custom_error_demo() -> Result<i32, MyError> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `summarize_author` and `summarize_with_author` are never used
[INFO] [stdout]   --> src/07_trait_generics.rs:39:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | trait Summary {
[INFO] [stdout]    |       ------- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 39 |     fn summarize_author(&self) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     fn summarize_with_author(&self) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Display` is never used
[INFO] [stdout]   --> src/07_trait_generics.rs:50:7
[INFO] [stdout]    |
[INFO] [stdout] 50 | trait Display {
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `content` is never read
[INFO] [stdout]   --> src/07_trait_generics.rs:61:5
[INFO] [stdout]    |
[INFO] [stdout] 57 | struct NewsArticle {
[INFO] [stdout]    |        ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 61 |     content: String,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `reply` and `retweet` are never read
[INFO] [stdout]   --> src/07_trait_generics.rs:87:5
[INFO] [stdout]    |
[INFO] [stdout] 84 | struct Tweet {
[INFO] [stdout]    |        ----- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 87 |     reply: bool,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 88 |     retweet: bool,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `notify2` is never used
[INFO] [stdout]    --> src/07_trait_generics.rs:113:4
[INFO] [stdout]     |
[INFO] [stdout] 113 | fn notify2<T: Summary>(item: &T) {
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `notify_same` is never used
[INFO] [stdout]    --> src/07_trait_generics.rs:120:4
[INFO] [stdout]     |
[INFO] [stdout] 120 | fn notify_same<T: Summary>(item1: &T, item2: &T) {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `notify3` is never used
[INFO] [stdout]    --> src/07_trait_generics.rs:128:4
[INFO] [stdout]     |
[INFO] [stdout] 128 | fn notify3(item: &(impl Summary + Display)) {
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `notify4` is never used
[INFO] [stdout]    --> src/07_trait_generics.rs:135:4
[INFO] [stdout]     |
[INFO] [stdout] 135 | fn notify4<T: Summary + Display>(item: &T) {
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `returns_summarizable` is never used
[INFO] [stdout]    --> src/07_trait_generics.rs:142:4
[INFO] [stdout]     |
[INFO] [stdout] 142 | fn returns_summarizable() -> impl Summary {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `x` and `y` are never used
[INFO] [stdout]    --> src/07_trait_generics.rs:244:8
[INFO] [stdout]     |
[INFO] [stdout] 242 | impl<T> Point<T, f64> {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] 243 |     // 只为 y 是 f64 的 Point 实现
[INFO] [stdout] 244 |     fn x(&self) -> &T {
[INFO] [stdout]     |        ^
[INFO] [stdout] ...
[INFO] [stdout] 248 |     fn y(&self) -> &f64 {
[INFO] [stdout]     |        ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `some_function` is never used
[INFO] [stdout]    --> src/07_trait_generics.rs:256:4
[INFO] [stdout]     |
[INFO] [stdout] 256 | fn some_function<T, U>(t: &T, u: &U) -> String
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Iterator2` is never used
[INFO] [stdout]    --> src/07_trait_generics.rs:343:7
[INFO] [stdout]     |
[INFO] [stdout] 343 | trait Iterator2 {
[INFO] [stdout]     |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Counter` is never constructed
[INFO] [stdout]    --> src/07_trait_generics.rs:364:8
[INFO] [stdout]     |
[INFO] [stdout] 364 | struct Counter {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/07_trait_generics.rs:370:8
[INFO] [stdout]     |
[INFO] [stdout] 369 | impl Counter {
[INFO] [stdout]     | ------------ associated function in this implementation
[INFO] [stdout] 370 |     fn new(max: usize) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Wrapper` is never constructed
[INFO] [stdout]    --> src/07_trait_generics.rs:391:8
[INFO] [stdout]     |
[INFO] [stdout] 391 | struct Wrapper<T = Vec<String>> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `announce_and_return` is never used
[INFO] [stdout]    --> src/08_lifetime.rs:126:8
[INFO] [stdout]     |
[INFO] [stdout] 125 | impl<'a> ImportantExcerpt<'a> {
[INFO] [stdout]     | ----------------------------- method in this implementation
[INFO] [stdout] 126 |     fn announce_and_return(&self, announcement: &str) -> &str {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `level` and `announce_and_return2` are never used
[INFO] [stdout]    --> src/08_lifetime.rs:153:8
[INFO] [stdout]     |
[INFO] [stdout] 152 | impl<'a> ImportantExcerpt<'a> {
[INFO] [stdout]     | ----------------------------- methods in this implementation
[INFO] [stdout] 153 |     fn level(&self) -> i32 {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 158 |     fn announce_and_return2<'b>(&self, announcement: &'b str) -> &'a str {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `first_word` is never used
[INFO] [stdout]    --> src/08_lifetime.rs:197:4
[INFO] [stdout]     |
[INFO] [stdout] 197 | fn first_word(s: &str) -> &str {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `longest_with_announcement` is never used
[INFO] [stdout]    --> src/08_lifetime.rs:228:4
[INFO] [stdout]     |
[INFO] [stdout] 228 | fn longest_with_announcement<'a, T>(x: &'a str, y: &'a str, ann: T) -> &'a str
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `call_with_fn` is never used
[INFO] [stdout]    --> src/10_closures.rs:183:4
[INFO] [stdout]     |
[INFO] [stdout] 183 | fn call_with_fn(f: &impl Fn() -> i32) {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `call_with_fn_mut` is never used
[INFO] [stdout]    --> src/10_closures.rs:188:4
[INFO] [stdout]     |
[INFO] [stdout] 188 | fn call_with_fn_mut(f: &mut impl FnMut() -> i32) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `call_with_fn_once` is never used
[INFO] [stdout]    --> src/10_closures.rs:193:4
[INFO] [stdout]     |
[INFO] [stdout] 193 | fn call_with_fn_once(f: impl FnOnce()) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `0` and `1` are never read
[INFO] [stdout]   --> src/12_smart_pointers.rs:51:14
[INFO] [stdout]    |
[INFO] [stdout] 51 |         Cons(i32, Box<List>), // Box<List> 有固定大小（指针大小）
[INFO] [stdout]    |         ---- ^^^  ^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         fields in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `List` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields
[INFO] [stdout]    |
[INFO] [stdout] 51 -         Cons(i32, Box<List>), // Box<List> 有固定大小（指针大小）
[INFO] [stdout] 51 +         Cons((), ()), // Box<List> 有固定大小（指针大小）
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `data` is never read
[INFO] [stdout]   --> src/12_smart_pointers.rs:61:9
[INFO] [stdout]    |
[INFO] [stdout] 60 |     struct LargeData {
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] 61 |         data: [u8; 1000],
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `value` is never read
[INFO] [stdout]    --> src/12_smart_pointers.rs:130:9
[INFO] [stdout]     |
[INFO] [stdout] 129 |     struct Node {
[INFO] [stdout]     |            ---- field in this struct
[INFO] [stdout] 130 |         value: i32,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name` and `tools` are never read
[INFO] [stdout]    --> src/12_smart_pointers.rs:159:9
[INFO] [stdout]     |
[INFO] [stdout] 158 |     struct Owner {
[INFO] [stdout]     |            ----- fields in this struct
[INFO] [stdout] 159 |         name: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 160 |         tools: Vec<Weak<Tool>>, // Weak引用，不增加strong_count
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name` and `owner` are never read
[INFO] [stdout]    --> src/12_smart_pointers.rs:164:9
[INFO] [stdout]     |
[INFO] [stdout] 163 |     struct Tool {
[INFO] [stdout]     |            ---- fields in this struct
[INFO] [stdout] 164 |         name: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 165 |         owner: Rc<Owner>,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hello_async` is never used
[INFO] [stdout]   --> src/13_async_await.rs:44:14
[INFO] [stdout]    |
[INFO] [stdout] 44 |     async fn hello_async() {
[INFO] [stdout]    |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SimpleFuture` is never constructed
[INFO] [stdout]   --> src/13_async_await.rs:74:8
[INFO] [stdout]    |
[INFO] [stdout] 74 | struct SimpleFuture {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Delay` is never constructed
[INFO] [stdout]    --> src/13_async_await.rs:111:12
[INFO] [stdout]     |
[INFO] [stdout] 111 |     struct Delay {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sequential` is never used
[INFO] [stdout]    --> src/13_async_await.rs:168:14
[INFO] [stdout]     |
[INFO] [stdout] 168 |     async fn sequential() {
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Service` is never constructed
[INFO] [stdout]    --> src/13_async_await.rs:219:12
[INFO] [stdout]     |
[INFO] [stdout] 219 |     struct Service {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `fetch` and `process` are never used
[INFO] [stdout]    --> src/13_async_await.rs:224:18
[INFO] [stdout]     |
[INFO] [stdout] 223 |     impl Service {
[INFO] [stdout]     |     ------------ methods in this implementation
[INFO] [stdout] 224 |         async fn fetch(&self) -> String {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 228 |         async fn process(&self, data: &str) -> String {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `crate_fn` is never used
[INFO] [stdout]   --> src/14_modules.rs:86:23
[INFO] [stdout]    |
[INFO] [stdout] 86 |         pub(crate) fn crate_fn() {
[INFO] [stdout]    |                       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `super_fn` is never used
[INFO] [stdout]   --> src/14_modules.rs:91:23
[INFO] [stdout]    |
[INFO] [stdout] 91 |         pub(super) fn super_fn() {
[INFO] [stdout]    |                       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `path_fn` is never used
[INFO] [stdout]   --> src/14_modules.rs:96:16
[INFO] [stdout]    |
[INFO] [stdout] 96 |         pub fn path_fn() {
[INFO] [stdout]    |                ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `internal_id` is never read
[INFO] [stdout]    --> src/14_modules.rs:131:13
[INFO] [stdout]     |
[INFO] [stdout] 128 |         pub struct Rectangle {
[INFO] [stdout]     |                    --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 131 |             internal_id: u32, // 私有字段
[INFO] [stdout]     |             ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Rectangle` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_id` is never used
[INFO] [stdout]    --> src/14_modules.rs:145:20
[INFO] [stdout]     |
[INFO] [stdout] 134 |         impl Rectangle {
[INFO] [stdout]     |         -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 145 |             pub fn get_id(&self) -> u32 {
[INFO] [stdout]     |                    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Unit` is never constructed
[INFO] [stdout]    --> src/14_modules.rs:154:20
[INFO] [stdout]     |
[INFO] [stdout] 154 |         pub struct Unit;
[INFO] [stdout]     |                    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `use_absolute` is never used
[INFO] [stdout]    --> src/14_modules.rs:249:20
[INFO] [stdout]     |
[INFO] [stdout] 249 |             pub fn use_absolute() {
[INFO] [stdout]     |                    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `add` is never used
[INFO] [stdout]    --> src/14_modules.rs:393:16
[INFO] [stdout]     |
[INFO] [stdout] 393 |         pub fn add(a: i32, b: i32) -> i32 {
[INFO] [stdout]     |                ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_add` is never used
[INFO] [stdout]    --> src/14_modules.rs:403:16
[INFO] [stdout]     |
[INFO] [stdout] 403 |             fn test_add() {
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name` and `age` are never read
[INFO] [stdout]    --> src/15_macros.rs:392:9
[INFO] [stdout]     |
[INFO] [stdout] 391 |     struct User {
[INFO] [stdout]     |            ---- fields in this struct
[INFO] [stdout] 392 |         name: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 393 |         age: u32,
[INFO] [stdout]     |         ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `User` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `no_return` is never used
[INFO] [stdout]    --> src/01_basics.rs:150:4
[INFO] [stdout]     |
[INFO] [stdout] 150 | fn no_return() {
[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 `take_and_give` is never used
[INFO] [stdout]   --> src/02_ownership.rs:77:4
[INFO] [stdout]    |
[INFO] [stdout] 77 | fn take_and_give(s: String) -> String {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `username`, `active`, and `sign_in_count` are never read
[INFO] [stdout]   --> src/04_struct_enum.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 34 | struct User {
[INFO] [stdout]    |        ---- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 37 |     username: String,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 38 |     email: String,
[INFO] [stdout] 39 |     active: bool,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 40 |     sign_in_count: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `User` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `0` and `1` are never read
[INFO] [stdout]   --> src/04_struct_enum.rs:85:18
[INFO] [stdout]    |
[INFO] [stdout] 85 |     struct Point(f64, f64); // 2D坐标
[INFO] [stdout]    |            ----- ^^^  ^^^
[INFO] [stdout]    |            |
[INFO] [stdout]    |            fields in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider removing these fields
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Down`, `Left`, and `Right` are never constructed
[INFO] [stdout]    --> src/04_struct_enum.rs:185:5
[INFO] [stdout]     |
[INFO] [stdout] 183 | enum Direction {
[INFO] [stdout]     |      --------- variants in this enum
[INFO] [stdout] 184 |     Up, // 无数据的变体
[INFO] [stdout] 185 |     Down,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 186 |     Left,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 187 |     Right,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Direction` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `y` is never read
[INFO] [stdout]    --> src/05_pattern_match.rs:210:9
[INFO] [stdout]     |
[INFO] [stdout] 208 |     struct Point {
[INFO] [stdout]     |            ----- field in this struct
[INFO] [stdout] 209 |         x: i32,
[INFO] [stdout] 210 |         y: i32,
[INFO] [stdout]     |         ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Sub` is never constructed
[INFO] [stdout]    --> src/05_pattern_match.rs:331:5
[INFO] [stdout]     |
[INFO] [stdout] 328 | enum Expr {
[INFO] [stdout]     |      ---- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 331 |     Sub(Box<Expr>, Box<Expr>), // 减法
[INFO] [stdout]     |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_file_contents` is never used
[INFO] [stdout]   --> src/06_error_handling.rs:37:4
[INFO] [stdout]    |
[INFO] [stdout] 37 | fn read_file_contents(path: &str) -> Result<String, io::Error> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_config` is never used
[INFO] [stdout]   --> src/06_error_handling.rs:83:4
[INFO] [stdout]    |
[INFO] [stdout] 83 | fn read_config(path: &str) -> Result<String, io::Error> {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unwrap_usage` is never used
[INFO] [stdout]    --> src/06_error_handling.rs:105:4
[INFO] [stdout]     |
[INFO] [stdout] 105 | fn unwrap_usage() {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `with_match` is never used
[INFO] [stdout]    --> src/06_error_handling.rs:135:8
[INFO] [stdout]     |
[INFO] [stdout] 135 |     fn with_match() -> Result<i32, &'static str> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `with_question_mark` is never used
[INFO] [stdout]    --> src/06_error_handling.rs:145:8
[INFO] [stdout]     |
[INFO] [stdout] 145 |     fn with_question_mark() -> Result<i32, &'static str> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_number_from_file` is never used
[INFO] [stdout]    --> src/06_error_handling.rs:154:4
[INFO] [stdout]     |
[INFO] [stdout] 154 | fn read_number_from_file() -> Result<i32, &'static str> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MyError` is never used
[INFO] [stdout]    --> src/06_error_handling.rs:162:6
[INFO] [stdout]     |
[INFO] [stdout] 162 | enum MyError {
[INFO] [stdout]     |      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `custom_error_demo` is never used
[INFO] [stdout]    --> src/06_error_handling.rs:183:4
[INFO] [stdout]     |
[INFO] [stdout] 183 | fn custom_error_demo() -> Result<i32, MyError> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `summarize_author` and `summarize_with_author` are never used
[INFO] [stdout]   --> src/07_trait_generics.rs:39:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | trait Summary {
[INFO] [stdout]    |       ------- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 39 |     fn summarize_author(&self) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     fn summarize_with_author(&self) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Display` is never used
[INFO] [stdout]   --> src/07_trait_generics.rs:50:7
[INFO] [stdout]    |
[INFO] [stdout] 50 | trait Display {
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `content` is never read
[INFO] [stdout]   --> src/07_trait_generics.rs:61:5
[INFO] [stdout]    |
[INFO] [stdout] 57 | struct NewsArticle {
[INFO] [stdout]    |        ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 61 |     content: String,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `reply` and `retweet` are never read
[INFO] [stdout]   --> src/07_trait_generics.rs:87:5
[INFO] [stdout]    |
[INFO] [stdout] 84 | struct Tweet {
[INFO] [stdout]    |        ----- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 87 |     reply: bool,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 88 |     retweet: bool,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `notify2` is never used
[INFO] [stdout]    --> src/07_trait_generics.rs:113:4
[INFO] [stdout]     |
[INFO] [stdout] 113 | fn notify2<T: Summary>(item: &T) {
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `notify_same` is never used
[INFO] [stdout]    --> src/07_trait_generics.rs:120:4
[INFO] [stdout]     |
[INFO] [stdout] 120 | fn notify_same<T: Summary>(item1: &T, item2: &T) {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `notify3` is never used
[INFO] [stdout]    --> src/07_trait_generics.rs:128:4
[INFO] [stdout]     |
[INFO] [stdout] 128 | fn notify3(item: &(impl Summary + Display)) {
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `notify4` is never used
[INFO] [stdout]    --> src/07_trait_generics.rs:135:4
[INFO] [stdout]     |
[INFO] [stdout] 135 | fn notify4<T: Summary + Display>(item: &T) {
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `returns_summarizable` is never used
[INFO] [stdout]    --> src/07_trait_generics.rs:142:4
[INFO] [stdout]     |
[INFO] [stdout] 142 | fn returns_summarizable() -> impl Summary {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `x` and `y` are never used
[INFO] [stdout]    --> src/07_trait_generics.rs:244:8
[INFO] [stdout]     |
[INFO] [stdout] 242 | impl<T> Point<T, f64> {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] 243 |     // 只为 y 是 f64 的 Point 实现
[INFO] [stdout] 244 |     fn x(&self) -> &T {
[INFO] [stdout]     |        ^
[INFO] [stdout] ...
[INFO] [stdout] 248 |     fn y(&self) -> &f64 {
[INFO] [stdout]     |        ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `some_function` is never used
[INFO] [stdout]    --> src/07_trait_generics.rs:256:4
[INFO] [stdout]     |
[INFO] [stdout] 256 | fn some_function<T, U>(t: &T, u: &U) -> String
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Iterator2` is never used
[INFO] [stdout]    --> src/07_trait_generics.rs:343:7
[INFO] [stdout]     |
[INFO] [stdout] 343 | trait Iterator2 {
[INFO] [stdout]     |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Counter` is never constructed
[INFO] [stdout]    --> src/07_trait_generics.rs:364:8
[INFO] [stdout]     |
[INFO] [stdout] 364 | struct Counter {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/07_trait_generics.rs:370:8
[INFO] [stdout]     |
[INFO] [stdout] 369 | impl Counter {
[INFO] [stdout]     | ------------ associated function in this implementation
[INFO] [stdout] 370 |     fn new(max: usize) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Wrapper` is never constructed
[INFO] [stdout]    --> src/07_trait_generics.rs:391:8
[INFO] [stdout]     |
[INFO] [stdout] 391 | struct Wrapper<T = Vec<String>> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `announce_and_return` is never used
[INFO] [stdout]    --> src/08_lifetime.rs:126:8
[INFO] [stdout]     |
[INFO] [stdout] 125 | impl<'a> ImportantExcerpt<'a> {
[INFO] [stdout]     | ----------------------------- method in this implementation
[INFO] [stdout] 126 |     fn announce_and_return(&self, announcement: &str) -> &str {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `level` and `announce_and_return2` are never used
[INFO] [stdout]    --> src/08_lifetime.rs:153:8
[INFO] [stdout]     |
[INFO] [stdout] 152 | impl<'a> ImportantExcerpt<'a> {
[INFO] [stdout]     | ----------------------------- methods in this implementation
[INFO] [stdout] 153 |     fn level(&self) -> i32 {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 158 |     fn announce_and_return2<'b>(&self, announcement: &'b str) -> &'a str {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `first_word` is never used
[INFO] [stdout]    --> src/08_lifetime.rs:197:4
[INFO] [stdout]     |
[INFO] [stdout] 197 | fn first_word(s: &str) -> &str {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `longest_with_announcement` is never used
[INFO] [stdout]    --> src/08_lifetime.rs:228:4
[INFO] [stdout]     |
[INFO] [stdout] 228 | fn longest_with_announcement<'a, T>(x: &'a str, y: &'a str, ann: T) -> &'a str
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `call_with_fn` is never used
[INFO] [stdout]    --> src/10_closures.rs:183:4
[INFO] [stdout]     |
[INFO] [stdout] 183 | fn call_with_fn(f: &impl Fn() -> i32) {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `call_with_fn_mut` is never used
[INFO] [stdout]    --> src/10_closures.rs:188:4
[INFO] [stdout]     |
[INFO] [stdout] 188 | fn call_with_fn_mut(f: &mut impl FnMut() -> i32) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `call_with_fn_once` is never used
[INFO] [stdout]    --> src/10_closures.rs:193:4
[INFO] [stdout]     |
[INFO] [stdout] 193 | fn call_with_fn_once(f: impl FnOnce()) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `0` and `1` are never read
[INFO] [stdout]   --> src/12_smart_pointers.rs:51:14
[INFO] [stdout]    |
[INFO] [stdout] 51 |         Cons(i32, Box<List>), // Box<List> 有固定大小（指针大小）
[INFO] [stdout]    |         ---- ^^^  ^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         fields in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `List` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields
[INFO] [stdout]    |
[INFO] [stdout] 51 -         Cons(i32, Box<List>), // Box<List> 有固定大小（指针大小）
[INFO] [stdout] 51 +         Cons((), ()), // Box<List> 有固定大小（指针大小）
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `data` is never read
[INFO] [stdout]   --> src/12_smart_pointers.rs:61:9
[INFO] [stdout]    |
[INFO] [stdout] 60 |     struct LargeData {
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] 61 |         data: [u8; 1000],
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `value` is never read
[INFO] [stdout]    --> src/12_smart_pointers.rs:130:9
[INFO] [stdout]     |
[INFO] [stdout] 129 |     struct Node {
[INFO] [stdout]     |            ---- field in this struct
[INFO] [stdout] 130 |         value: i32,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name` and `tools` are never read
[INFO] [stdout]    --> src/12_smart_pointers.rs:159:9
[INFO] [stdout]     |
[INFO] [stdout] 158 |     struct Owner {
[INFO] [stdout]     |            ----- fields in this struct
[INFO] [stdout] 159 |         name: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 160 |         tools: Vec<Weak<Tool>>, // Weak引用，不增加strong_count
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name` and `owner` are never read
[INFO] [stdout]    --> src/12_smart_pointers.rs:164:9
[INFO] [stdout]     |
[INFO] [stdout] 163 |     struct Tool {
[INFO] [stdout]     |            ---- fields in this struct
[INFO] [stdout] 164 |         name: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 165 |         owner: Rc<Owner>,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hello_async` is never used
[INFO] [stdout]   --> src/13_async_await.rs:44:14
[INFO] [stdout]    |
[INFO] [stdout] 44 |     async fn hello_async() {
[INFO] [stdout]    |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SimpleFuture` is never constructed
[INFO] [stdout]   --> src/13_async_await.rs:74:8
[INFO] [stdout]    |
[INFO] [stdout] 74 | struct SimpleFuture {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Delay` is never constructed
[INFO] [stdout]    --> src/13_async_await.rs:111:12
[INFO] [stdout]     |
[INFO] [stdout] 111 |     struct Delay {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sequential` is never used
[INFO] [stdout]    --> src/13_async_await.rs:168:14
[INFO] [stdout]     |
[INFO] [stdout] 168 |     async fn sequential() {
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Service` is never constructed
[INFO] [stdout]    --> src/13_async_await.rs:219:12
[INFO] [stdout]     |
[INFO] [stdout] 219 |     struct Service {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `fetch` and `process` are never used
[INFO] [stdout]    --> src/13_async_await.rs:224:18
[INFO] [stdout]     |
[INFO] [stdout] 223 |     impl Service {
[INFO] [stdout]     |     ------------ methods in this implementation
[INFO] [stdout] 224 |         async fn fetch(&self) -> String {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 228 |         async fn process(&self, data: &str) -> String {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `crate_fn` is never used
[INFO] [stdout]   --> src/14_modules.rs:86:23
[INFO] [stdout]    |
[INFO] [stdout] 86 |         pub(crate) fn crate_fn() {
[INFO] [stdout]    |                       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `super_fn` is never used
[INFO] [stdout]   --> src/14_modules.rs:91:23
[INFO] [stdout]    |
[INFO] [stdout] 91 |         pub(super) fn super_fn() {
[INFO] [stdout]    |                       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `path_fn` is never used
[INFO] [stdout]   --> src/14_modules.rs:96:16
[INFO] [stdout]    |
[INFO] [stdout] 96 |         pub fn path_fn() {
[INFO] [stdout]    |                ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `internal_id` is never read
[INFO] [stdout]    --> src/14_modules.rs:131:13
[INFO] [stdout]     |
[INFO] [stdout] 128 |         pub struct Rectangle {
[INFO] [stdout]     |                    --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 131 |             internal_id: u32, // 私有字段
[INFO] [stdout]     |             ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Rectangle` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_id` is never used
[INFO] [stdout]    --> src/14_modules.rs:145:20
[INFO] [stdout]     |
[INFO] [stdout] 134 |         impl Rectangle {
[INFO] [stdout]     |         -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 145 |             pub fn get_id(&self) -> u32 {
[INFO] [stdout]     |                    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Unit` is never constructed
[INFO] [stdout]    --> src/14_modules.rs:154:20
[INFO] [stdout]     |
[INFO] [stdout] 154 |         pub struct Unit;
[INFO] [stdout]     |                    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `use_absolute` is never used
[INFO] [stdout]    --> src/14_modules.rs:249:20
[INFO] [stdout]     |
[INFO] [stdout] 249 |             pub fn use_absolute() {
[INFO] [stdout]     |                    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `add` is never used
[INFO] [stdout]    --> src/14_modules.rs:393:16
[INFO] [stdout]     |
[INFO] [stdout] 393 |         pub fn add(a: i32, b: i32) -> i32 {
[INFO] [stdout]     |                ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name` and `age` are never read
[INFO] [stdout]    --> src/15_macros.rs:392:9
[INFO] [stdout]     |
[INFO] [stdout] 391 |     struct User {
[INFO] [stdout]     |            ---- fields in this struct
[INFO] [stdout] 392 |         name: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 393 |         age: u32,
[INFO] [stdout]     |         ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `User` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.36s
[INFO] running `Command { std: "docker" "inspect" "c4f9e3ae10053235aeebe8eca3dbf7f5a6b4bac98da9bde1395c982e7caac3aa", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c4f9e3ae10053235aeebe8eca3dbf7f5a6b4bac98da9bde1395c982e7caac3aa", kill_on_drop: false }`
[INFO] [stdout] c4f9e3ae10053235aeebe8eca3dbf7f5a6b4bac98da9bde1395c982e7caac3aa
