[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] 66b579bd210001a421f7609c30459cc920fd55ae [INFO] testing DreamLarva/learn-rust against beta-2022-04-10 for beta-1.61-1 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FDreamLarva%2Flearn-rust" "/workspace/builds/worker-53/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-53/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/DreamLarva/learn-rust on toolchain beta-2022-04-10 [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+beta-2022-04-10" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [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-53/source/Cargo.toml [INFO] crate git repo https://github.com/DreamLarva/learn-rust already has a lockfile, it will not be regenerated [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+beta-2022-04-10" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-53/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-53/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:b0c94ce3c1162fcb8e57cac5b65ec2f72eabb1eebea4fcc35e269e823f681646" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2022-04-10" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] d7e1539bdcb8bd9f68e13aeb22c37c6f42c22585050bbf2d30e5dcedb6864d56 [INFO] running `Command { std: "docker" "start" "-a" "d7e1539bdcb8bd9f68e13aeb22c37c6f42c22585050bbf2d30e5dcedb6864d56", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "d7e1539bdcb8bd9f68e13aeb22c37c6f42c22585050bbf2d30e5dcedb6864d56", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "d7e1539bdcb8bd9f68e13aeb22c37c6f42c22585050bbf2d30e5dcedb6864d56", kill_on_drop: false }` [INFO] [stdout] d7e1539bdcb8bd9f68e13aeb22c37c6f42c22585050bbf2d30e5dcedb6864d56 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-53/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-53/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:b0c94ce3c1162fcb8e57cac5b65ec2f72eabb1eebea4fcc35e269e823f681646" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2022-04-10" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] a7e3f0687a9cc51b5a4f905e6fc9ecaaaa3713bcd7e655ea1181237dc3c23caf [INFO] running `Command { std: "docker" "start" "-a" "a7e3f0687a9cc51b5a4f905e6fc9ecaaaa3713bcd7e655ea1181237dc3c23caf", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.29 [INFO] [stderr] Compiling libc v0.2.88 [INFO] [stderr] Compiling syn v1.0.76 [INFO] [stderr] Compiling getrandom v0.2.2 [INFO] [stderr] Compiling ppv-lite86 v0.2.10 [INFO] [stderr] Compiling threadPool v0.1.0 (/opt/rustwide/workdir/threadPool) [INFO] [stderr] Compiling adder v0.1.0 [INFO] [stdout] warning: crate `threadPool` should have a snake case name [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` on by default [INFO] [stdout] = help: convert the identifier to snake case: `thread_pool` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 1 warning emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling rand_core v0.6.2 [INFO] [stderr] Compiling quote v1.0.9 [INFO] [stderr] Compiling rand_chacha v0.3.0 [INFO] [stderr] Compiling rand v0.8.3 [INFO] [stderr] Compiling hello_macro_derive v0.1.0 (/opt/rustwide/workdir/derive_macro/hello_macro_derive) [INFO] [stderr] Compiling proc_marco v0.1.0 (/opt/rustwide/workdir/proc_marco) [INFO] [stderr] Compiling hello_macro v0.1.0 (/opt/rustwide/workdir/derive_macro) [INFO] [stderr] Compiling the_rust_programming_language v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: the item `hosting` is imported redundantly [INFO] [stdout] --> src/lib.rs:93:9 [INFO] [stdout] | [INFO] [stdout] 93 | use crate::front_of_house::hosting; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 122 | pub use crate::front_of_house::hosting; [INFO] [stdout] | ------------------------------ the item `hosting` is already imported here [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt` [INFO] [stdout] --> src/lib.rs:104:5 [INFO] [stdout] | [INFO] [stdout] 104 | use std::fmt; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::Result as IoResult` [INFO] [stdout] --> src/lib.rs:114:5 [INFO] [stdout] | [INFO] [stdout] 114 | use std::io::Result as IoResult; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `borrow`, `cmp::Ordering` [INFO] [stdout] --> src/lib.rs:128:11 [INFO] [stdout] | [INFO] [stdout] 128 | use std::{borrow, cmp::Ordering}; [INFO] [stdout] | ^^^^^^ ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Write`, `self` [INFO] [stdout] --> src/lib.rs:132:15 [INFO] [stdout] | [INFO] [stdout] 132 | 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:135:5 [INFO] [stdout] | [INFO] [stdout] 135 | use std::collections::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::process` [INFO] [stdout] --> src/lib.rs:141:5 [INFO] [stdout] | [INFO] [stdout] 141 | use std::process; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `order1` [INFO] [stdout] --> src/lib.rs:96:13 [INFO] [stdout] | [INFO] [stdout] 96 | let order1 = back_of_house::Appetizer::Soup; [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_order1` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `order2` [INFO] [stdout] --> src/lib.rs:97:13 [INFO] [stdout] | [INFO] [stdout] 97 | 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:311:16 [INFO] [stdout] | [INFO] [stdout] 311 | 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:311:34 [INFO] [stdout] | [INFO] [stdout] 311 | 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 is never used: `serve_order` [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)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function is never used: `main` [INFO] [stdout] --> src/lib.rs:23:4 [INFO] [stdout] | [INFO] [stdout] 23 | fn main() {} [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function is never used: `eat_at_restaurant` [INFO] [stdout] --> src/lib.rs:95:12 [INFO] [stdout] | [INFO] [stdout] 95 | pub fn eat_at_restaurant() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function is never used: `fix_incorrect_order` [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 is never used: `cook_order` [INFO] [stdout] --> src/lib.rs:33:8 [INFO] [stdout] | [INFO] [stdout] 33 | fn cook_order() {} [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field is never read: `seasonal_fruit` [INFO] [stdout] --> src/lib.rs:42:9 [INFO] [stdout] | [INFO] [stdout] 42 | seasonal_fruit: String, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum is never used: `Appetizer` [INFO] [stdout] --> src/lib.rs:55:14 [INFO] [stdout] | [INFO] [stdout] 55 | pub enum Appetizer { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 18 warnings emitted [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)]` 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] = note: `#[warn(unused_doc_comments)]` on by default [INFO] [stdout] = help: use `/* */` for a plain comment [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused doc comment [INFO] [stdout] --> src/ch03.rs:80:5 [INFO] [stdout] | [INFO] [stdout] 80 | /** 复合类型 */ [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 83 | let _tup1: (i32, f64, u8) = (500, 6.4, 1); // 可以设置多种类型 [INFO] [stdout] | ------------------------------------------ rustdoc does not generate documentation for statements [INFO] [stdout] | [INFO] [stdout] = help: use `/* */` for a plain comment [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused doc comment [INFO] [stdout] --> src/ch03.rs:154:5 [INFO] [stdout] | [INFO] [stdout] 154 | /// 方法只要在作用域中声明 就能够调用(不用先声明在前) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 155 | fun_1(); [INFO] [stdout] | ------- rustdoc does not generate documentation for expressions [INFO] [stdout] | [INFO] [stdout] = help: use `//` for a plain comment [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::any::Any` [INFO] [stdout] --> src/ch07/mod.rs:3:9 [INFO] [stdout] | [INFO] [stdout] 3 | use std::any::Any; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/ch07/mod.rs:118:9 [INFO] [stdout] | [INFO] [stdout] 118 | 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:139:13 [INFO] [stdout] | [INFO] [stdout] 139 | use std::fmt::Result; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::Result as IoResult` [INFO] [stdout] --> src/ch07/mod.rs:140:13 [INFO] [stdout] | [INFO] [stdout] 140 | use std::io::Result as IoResult; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around method argument [INFO] [stdout] --> src/ch07/mod.rs:174:58 [INFO] [stdout] | [INFO] [stdout] 174 | let secret_number = rand::thread_rng().gen_range((1..100)); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 174 - let secret_number = rand::thread_rng().gen_range((1..100)); [INFO] [stdout] 174 + 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:175:58 [INFO] [stdout] | [INFO] [stdout] 175 | let secret_number = rand::thread_rng().gen_range((1..=100)); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 175 - let secret_number = rand::thread_rng().gen_range((1..=100)); [INFO] [stdout] 175 + 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:182:13 [INFO] [stdout] | [INFO] [stdout] 182 | use std::cmp::Ordering; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io` [INFO] [stdout] --> src/ch07/mod.rs:183:13 [INFO] [stdout] | [INFO] [stdout] 183 | use std::io; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `cmp::Ordering`, `io` [INFO] [stdout] --> src/ch07/mod.rs:187:19 [INFO] [stdout] | [INFO] [stdout] 187 | use std::{cmp::Ordering, io}; [INFO] [stdout] | ^^^^^^^^^^^^^ ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io` [INFO] [stdout] --> src/ch07/mod.rs:192:13 [INFO] [stdout] | [INFO] [stdout] 192 | use std::io; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::Write` [INFO] [stdout] --> src/ch07/mod.rs:193:13 [INFO] [stdout] | [INFO] [stdout] 193 | use std::io::Write; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Write`, `self` [INFO] [stdout] --> src/ch07/mod.rs:197:23 [INFO] [stdout] | [INFO] [stdout] 197 | use std::io::{self, Write}; [INFO] [stdout] | ^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::*` [INFO] [stdout] --> src/ch07/mod.rs:203:13 [INFO] [stdout] | [INFO] [stdout] 203 | use std::collections::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `File`, `self` [INFO] [stdout] --> src/ch08_hashmap.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_hashmap.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_hashmap.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_hashmap.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_hashmap.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use std::ops::Add; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the item `HashMap` is imported redundantly [INFO] [stdout] --> src/ch08_hashmap.rs:17:13 [INFO] [stdout] | [INFO] [stdout] 3 | use std::collections::*; [INFO] [stdout] | ------------------- the item `HashMap` is already imported here [INFO] [stdout] ... [INFO] [stdout] 17 | use std::collections::HashMap; [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`, `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`, `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: the item `io` is imported redundantly [INFO] [stdout] --> src/ch08_vec.rs:276:23 [INFO] [stdout] | [INFO] [stdout] 5 | use std::io; [INFO] [stdout] | ------- the item `io` is already imported here [INFO] [stdout] ... [INFO] [stdout] 276 | use std::io::{self, Write}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused doc comment [INFO] [stdout] --> src/ch08_vec.rs:329:5 [INFO] [stdout] | [INFO] [stdout] 329 | / /// ``` [INFO] [stdout] 330 | | /// pub fn dedup_by_key(&mut self, key: F) [INFO] [stdout] 331 | | /// where [INFO] [stdout] 332 | | /// F: FnMut(&mut T) -> K, [INFO] [stdout] 333 | | /// K: PartialEq, [INFO] [stdout] 334 | | /// ``` [INFO] [stdout] 335 | | /// 移除vec中 调用F方法后 相同返回值中的多余一个的其他元素 [INFO] [stdout] | |______________________________________________________________^ [INFO] [stdout] 336 | / { [INFO] [stdout] 337 | | let mut vec = vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]; [INFO] [stdout] 338 | | [INFO] [stdout] 339 | | vec.dedup_by_key(|i| *i / 10); [INFO] [stdout] ... | [INFO] [stdout] 344 | | assert_eq!(vec, [1, 10]); [INFO] [stdout] 345 | | } [INFO] [stdout] | |_____- rustdoc does not generate documentation for expressions [INFO] [stdout] | [INFO] [stdout] = help: use `//` for a plain comment [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused 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: `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::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: the item `mpsc` is imported redundantly [INFO] [stdout] --> src/ch16.rs:79:13 [INFO] [stdout] | [INFO] [stdout] 49 | use std::sync::{mpsc, Arc}; [INFO] [stdout] | ---- the item `mpsc` is already imported here [INFO] [stdout] ... [INFO] [stdout] 79 | use std::sync::mpsc; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the item `thread` is imported redundantly [INFO] [stdout] --> src/ch16.rs:80:13 [INFO] [stdout] | [INFO] [stdout] 1 | use std::thread; [INFO] [stdout] | ----------- the item `thread` is already imported here [INFO] [stdout] ... [INFO] [stdout] 80 | use std::thread; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the item `Duration` is imported redundantly [INFO] [stdout] --> src/ch16.rs:81:13 [INFO] [stdout] | [INFO] [stdout] 2 | use std::time::Duration; [INFO] [stdout] | ------------------- the item `Duration` is already imported here [INFO] [stdout] ... [INFO] [stdout] 81 | use std::time::Duration; [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: the item `slice` is imported redundantly [INFO] [stdout] --> src/ch19.rs:117:17 [INFO] [stdout] | [INFO] [stdout] 92 | use std::slice; [INFO] [stdout] | ---------- the item `slice` is already imported here [INFO] [stdout] ... [INFO] [stdout] 117 | use std::slice; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the item `Add` is imported redundantly [INFO] [stdout] --> src/ch19.rs:310:17 [INFO] [stdout] | [INFO] [stdout] 277 | use std::ops::Add; [INFO] [stdout] | ------------- the item `Add` is already imported here [INFO] [stdout] ... [INFO] [stdout] 310 | use std::ops::Add; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt` [INFO] [stdout] --> src/ch19.rs:507:13 [INFO] [stdout] | [INFO] [stdout] 507 | use std::fmt; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::Error` [INFO] [stdout] --> src/ch19.rs:508:13 [INFO] [stdout] | [INFO] [stdout] 508 | 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: `hex::hex` [INFO] [stdout] --> src/main.rs:58:5 [INFO] [stdout] | [INFO] [stdout] 58 | use hex::hex; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `RefCell`, `Ref` [INFO] [stdout] --> src/main.rs:61:17 [INFO] [stdout] | [INFO] [stdout] 61 | use std::cell::{Ref, RefCell}; [INFO] [stdout] | ^^^ ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::Write` [INFO] [stdout] --> src/main.rs:62:5 [INFO] [stdout] | [INFO] [stdout] 62 | use std::io::Write; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::rc::Rc` [INFO] [stdout] --> src/main.rs:63:5 [INFO] [stdout] | [INFO] [stdout] 63 | use std::rc::Rc; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `the_rust_programming_language::Config` [INFO] [stdout] --> src/main.rs:64:5 [INFO] [stdout] | [INFO] [stdout] 64 | use the_rust_programming_language::Config; [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: unreachable pattern [INFO] [stdout] --> src/ch08_vec.rs:127:13 [INFO] [stdout] | [INFO] [stdout] 126 | Float => (), [INFO] [stdout] | ----- matches any value [INFO] [stdout] 127 | Text => (), [INFO] [stdout] | ^^^^ unreachable pattern [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/ch08_vec.rs:128:13 [INFO] [stdout] | [INFO] [stdout] 126 | Float => (), [INFO] [stdout] | ----- matches any value [INFO] [stdout] 127 | Text => (), [INFO] [stdout] 128 | Int => (), [INFO] [stdout] | ^^^ unreachable pattern [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] = note: `#[warn(unused_assignments)]` on by default [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:276:18 [INFO] [stdout] | [INFO] [stdout] 276 | _ => 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:286:13 [INFO] [stdout] | [INFO] [stdout] 286 | 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 `result` is never read [INFO] [stdout] --> src/ch10.rs:688:13 [INFO] [stdout] | [INFO] [stdout] 688 | 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/ch04.rs:211:13 [INFO] [stdout] | [INFO] [stdout] 211 | let mut s = String::from("hello"); [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/ch04.rs:298:13 [INFO] [stdout] | [INFO] [stdout] 298 | let mut s = String::from("hello world"); [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: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:59:13 [INFO] [stdout] | [INFO] [stdout] 59 | 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:60:13 [INFO] [stdout] | [INFO] [stdout] 60 | let mut t3 = String::from("") + &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/ch10.rs:842:13 [INFO] [stdout] | [INFO] [stdout] 842 | 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] [stderr] error: could not compile `the_rust_programming_language` due to 2 previous errors; 71 warnings emitted [INFO] [stdout] error[E0597]: `counter` does not live long enough [INFO] [stdout] --> src/ch16.rs:185:32 [INFO] [stdout] | [INFO] [stdout] 185 | println!("Result {}", *counter.lock().unwrap()) [INFO] [stdout] | ^^^^^^^^^^^^^^--------- [INFO] [stdout] | | [INFO] [stdout] | borrowed value does not live long enough [INFO] [stdout] | a temporary with access to the borrow is created here ... [INFO] [stdout] 186 | } [INFO] [stdout] | - `counter` dropped here while still borrowed [INFO] [stdout] ... [INFO] [stdout] 194 | } [INFO] [stdout] | - ... and the borrow might be used here, when that temporary is dropped and runs the `Drop` code for type `MutexGuard` [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function cannot return without recursing [INFO] [stdout] --> src/ch18.rs:85:9 [INFO] [stdout] | [INFO] [stdout] 85 | fn print_coordinates(&(x, y): &(i32, i32)) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot return without recursing [INFO] [stdout] ... [INFO] [stdout] 89 | print_coordinates(&point); [INFO] [stdout] | ------------------------- recursive call site [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unconditional_recursion)]` on by default [INFO] [stdout] = help: a `loop` may express intention better if this is on purpose [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: aborting due to previous error; 71 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] For more information about this error, try `rustc --explain E0597`. [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "a7e3f0687a9cc51b5a4f905e6fc9ecaaaa3713bcd7e655ea1181237dc3c23caf", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "a7e3f0687a9cc51b5a4f905e6fc9ecaaaa3713bcd7e655ea1181237dc3c23caf", kill_on_drop: false }` [INFO] [stdout] a7e3f0687a9cc51b5a4f905e6fc9ecaaaa3713bcd7e655ea1181237dc3c23caf