[INFO] cloning repository https://github.com/HarryTMa/rust-learning-basics
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/HarryTMa/rust-learning-basics" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FHarryTMa%2Frust-learning-basics", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FHarryTMa%2Frust-learning-basics'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] c1a57dae8867a12eaf58788a18175a3d1dc7e9f6
[INFO] checking HarryTMa/rust-learning-basics against 895980e0290783bb09b1ccf1b11f14eb09b10430 for pr-160186
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FHarryTMa%2Frust-learning-basics" "/workspace/builds/worker-2-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/HarryTMa/rust-learning-basics
[INFO] finished tweaking git repo https://github.com/HarryTMa/rust-learning-basics
[INFO] tweaked toml for git repo https://github.com/HarryTMa/rust-learning-basics written to /workspace/builds/worker-2-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/HarryTMa/rust-learning-basics on toolchain 895980e0290783bb09b1ccf1b11f14eb09b10430
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+895980e0290783bb09b1ccf1b11f14eb09b10430" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/HarryTMa/rust-learning-basics 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" "+895980e0290783bb09b1ccf1b11f14eb09b10430" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] da08c99e29487ea1de9880cb97544882b0d11935cad4c241e5853371760405b8
[INFO] running `Command { std: "docker" "start" "da08c99e29487ea1de9880cb97544882b0d11935cad4c241e5853371760405b8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "da08c99e29487ea1de9880cb97544882b0d11935cad4c241e5853371760405b8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "da08c99e29487ea1de9880cb97544882b0d11935cad4c241e5853371760405b8" "/opt/rustwide/cargo-home/bin/cargo" "+895980e0290783bb09b1ccf1b11f14eb09b10430" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "da08c99e29487ea1de9880cb97544882b0d11935cad4c241e5853371760405b8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "da08c99e29487ea1de9880cb97544882b0d11935cad4c241e5853371760405b8" "/opt/rustwide/cargo-home/bin/cargo" "+895980e0290783bb09b1ccf1b11f14eb09b10430" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]     Checking basic v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]   --> src/part4.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 18 |     use super::*;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/exercism/parallel_letter_frequency.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 |                 if (c as u8 >= b'A' && c as u8 <= b'Z') {
[INFO] [stdout]    |                    ^                                  ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 23 -                 if (c as u8 >= b'A' && c as u8 <= b'Z') {
[INFO] [stdout] 23 +                 if c as u8 >= b'A' && c as u8 <= b'Z' {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/exercism/parallel_letter_frequency.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 26 |                 if (c.is_alphabetic())
[INFO] [stdout]    |                    ^                 ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 26 -                 if (c.is_alphabetic())
[INFO] [stdout] 26 +                 if c.is_alphabetic()
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/exercism/luhn.rs:35:7
[INFO] [stdout]    |
[INFO] [stdout] 35 |             if (u > 9) {
[INFO] [stdout]    |                ^     ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 35 -             if (u > 9) {
[INFO] [stdout] 35 +             if u > 9 {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/part2.rs:8:15
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::io::{self, Write};
[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 macro definition: `my_macro`
[INFO] [stdout]  --> src/part4.rs:9:14
[INFO] [stdout]   |
[INFO] [stdout] 9 | macro_rules! my_macro {
[INFO] [stdout]   |              ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_macros)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/exercism/parallel_letter_frequency.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 |                 if (c as u8 >= b'A' && c as u8 <= b'Z') {
[INFO] [stdout]    |                    ^                                  ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 23 -                 if (c as u8 >= b'A' && c as u8 <= b'Z') {
[INFO] [stdout] 23 +                 if c as u8 >= b'A' && c as u8 <= b'Z' {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/exercism/parallel_letter_frequency.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 26 |                 if (c.is_alphabetic())
[INFO] [stdout]    |                    ^                 ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 26 -                 if (c.is_alphabetic())
[INFO] [stdout] 26 +                 if c.is_alphabetic()
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/exercism/luhn.rs:35:7
[INFO] [stdout]    |
[INFO] [stdout] 35 |             if (u > 9) {
[INFO] [stdout]    |                ^     ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 35 -             if (u > 9) {
[INFO] [stdout] 35 +             if u > 9 {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `n` is never read
[INFO] [stdout]   --> src/exercism/mine_sweeper.rs:17:14
[INFO] [stdout]    |
[INFO] [stdout] 17 |     let mut n = 0;
[INFO] [stdout]    |                 ^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 27 |         n = bytes.len() / m;
[INFO] [stdout]    |         ------------------- `n` 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: function `frequency` is never used
[INFO] [stdout]   --> src/exercism/parallel_letter_frequency.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub fn frequency(input: &[&str], worker_count: usize) -> HashMap<char, usize> {
[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 `winning_hands` is never used
[INFO] [stdout]    --> src/exercism/poker.rs:185:8
[INFO] [stdout]     |
[INFO] [stdout] 185 | pub fn winning_hands<'a>(hands: &[&'a str]) -> Vec<&'a str> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Clock` is never constructed
[INFO] [stdout]   --> src/exercism/clock.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct Clock {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `add_minutes` are never used
[INFO] [stdout]   --> src/exercism/clock.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl Clock {
[INFO] [stdout]    | ---------- associated items in this implementation
[INFO] [stdout] 29 |     pub fn new(hours: i32, minutes: i32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn add_minutes(&self, minutes: i32) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `School` is never constructed
[INFO] [stdout]   --> src/exercism/grade_school.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct School {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add`, `grades`, and `grade` are never used
[INFO] [stdout]   --> src/exercism/grade_school.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl School {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout] 21 |     pub fn new() -> School {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn add(&mut self, grade: u32, student: &str) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn grades(&self) -> Vec<u32> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn grade(&self, grade: u32) -> Vec<String> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_valid` is never used
[INFO] [stdout]   --> src/exercism/luhn.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub fn is_valid(code: &str) -> bool {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/part2.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 |     write!(&mut writer, "{}\n", arg);
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 11 |     let _ = write!(&mut writer, "{}\n", arg);
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/part2.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     write!(&mut writer, "{}\n", arg);
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 15 |     let _ = write!(&mut writer, "{}\n", arg);
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `A` should have a snake case name
[INFO] [stdout]  --> src/exercism/sublist.rs:9:33
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub fn is_sublist<T: PartialEq>(A: &Vec<T>, B: &Vec<T>) -> bool {
[INFO] [stdout]   |                                 ^ help: convert the identifier to snake case: `a`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `B` should have a snake case name
[INFO] [stdout]  --> src/exercism/sublist.rs:9:45
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub fn is_sublist<T: PartialEq>(A: &Vec<T>, B: &Vec<T>) -> bool {
[INFO] [stdout]   |                                             ^ help: convert the identifier to snake case: `b`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `A` should have a snake case name
[INFO] [stdout]   --> src/exercism/sublist.rs:27:36
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub fn compare_lists<T: PartialEq>(A: &Vec<T>, B: &Vec<T>) -> &'static str {
[INFO] [stdout]    |                                    ^ help: convert the identifier to snake case: `a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `B` should have a snake case name
[INFO] [stdout]   --> src/exercism/sublist.rs:27:48
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub fn compare_lists<T: PartialEq>(A: &Vec<T>, B: &Vec<T>) -> &'static str {
[INFO] [stdout]    |                                                ^ help: convert the identifier to snake case: `b`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `n` is never read
[INFO] [stdout]   --> src/exercism/mine_sweeper.rs:17:14
[INFO] [stdout]    |
[INFO] [stdout] 17 |     let mut n = 0;
[INFO] [stdout]    |                 ^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 27 |         n = bytes.len() / m;
[INFO] [stdout]    |         ------------------- `n` 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: function `calculate_apple_price` is never used
[INFO] [stdout]  --> src/part1.rs:9:4
[INFO] [stdout]   |
[INFO] [stdout] 9 | fn calculate_apple_price(amount: i32) -> i32{
[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 `string_slice` is never used
[INFO] [stdout]   --> src/part2.rs:10:4
[INFO] [stdout]    |
[INFO] [stdout] 10 | fn string_slice<W: Write>(arg: &str, mut writer: &mut W) {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `string` is never used
[INFO] [stdout]   --> src/part2.rs:14:4
[INFO] [stdout]    |
[INFO] [stdout] 14 | fn string<W: Write>(arg: String, mut writer: &mut W) {
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_string` is never used
[INFO] [stdout]   --> src/part2.rs:18:4
[INFO] [stdout]    |
[INFO] [stdout] 18 | fn test_string(writer: &mut impl Write) {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `times_two` is never used
[INFO] [stdout]  --> src/part3.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn times_two(num: i32) -> i32 {
[INFO] [stdout]   |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_sublist` is never used
[INFO] [stdout]  --> src/exercism/sublist.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub fn is_sublist<T: PartialEq>(A: &Vec<T>, B: &Vec<T>) -> bool {
[INFO] [stdout]   |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compare_lists` is never used
[INFO] [stdout]   --> src/exercism/sublist.rs:27:8
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub fn compare_lists<T: PartialEq>(A: &Vec<T>, B: &Vec<T>) -> &'static str {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `count_mines` is never used
[INFO] [stdout]   --> src/exercism/mine_sweeper.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub fn count_mines(s: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `frequency` is never used
[INFO] [stdout]   --> src/exercism/parallel_letter_frequency.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub fn frequency(input: &[&str], worker_count: usize) -> HashMap<char, usize> {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `poker_parse` is never used
[INFO] [stdout]   --> src/exercism/poker.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn poker_parse(x: &[u8]) -> Vec<(u32, u8)> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `poker_categorize` is never used
[INFO] [stdout]   --> src/exercism/poker.rs:46:8
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub fn poker_categorize(x: &Vec<(u32, u8)>)-> (u8, u32) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `poker_cmp` is never used
[INFO] [stdout]    --> src/exercism/poker.rs:164:8
[INFO] [stdout]     |
[INFO] [stdout] 164 | pub fn poker_cmp(a: &&str, b: &&str) -> Ordering {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `winning_hands` is never used
[INFO] [stdout]    --> src/exercism/poker.rs:185:8
[INFO] [stdout]     |
[INFO] [stdout] 185 | pub fn winning_hands<'a>(hands: &[&'a str]) -> Vec<&'a str> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Clock` is never constructed
[INFO] [stdout]   --> src/exercism/clock.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct Clock {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `add_minutes` are never used
[INFO] [stdout]   --> src/exercism/clock.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl Clock {
[INFO] [stdout]    | ---------- associated items in this implementation
[INFO] [stdout] 29 |     pub fn new(hours: i32, minutes: i32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn add_minutes(&self, minutes: i32) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `School` is never constructed
[INFO] [stdout]   --> src/exercism/grade_school.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct School {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add`, `grades`, and `grade` are never used
[INFO] [stdout]   --> src/exercism/grade_school.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl School {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout] 21 |     pub fn new() -> School {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn add(&mut self, grade: u32, student: &str) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn grades(&self) -> Vec<u32> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn grade(&self, grade: u32) -> Vec<String> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_valid` is never used
[INFO] [stdout]   --> src/exercism/luhn.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub fn is_valid(code: &str) -> bool {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/part2.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 |     write!(&mut writer, "{}\n", arg);
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 11 |     let _ = write!(&mut writer, "{}\n", arg);
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/part2.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     write!(&mut writer, "{}\n", arg);
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 15 |     let _ = write!(&mut writer, "{}\n", arg);
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `A` should have a snake case name
[INFO] [stdout]  --> src/exercism/sublist.rs:9:33
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub fn is_sublist<T: PartialEq>(A: &Vec<T>, B: &Vec<T>) -> bool {
[INFO] [stdout]   |                                 ^ help: convert the identifier to snake case: `a`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `B` should have a snake case name
[INFO] [stdout]  --> src/exercism/sublist.rs:9:45
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub fn is_sublist<T: PartialEq>(A: &Vec<T>, B: &Vec<T>) -> bool {
[INFO] [stdout]   |                                             ^ help: convert the identifier to snake case: `b`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `A` should have a snake case name
[INFO] [stdout]   --> src/exercism/sublist.rs:27:36
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub fn compare_lists<T: PartialEq>(A: &Vec<T>, B: &Vec<T>) -> &'static str {
[INFO] [stdout]    |                                    ^ help: convert the identifier to snake case: `a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `B` should have a snake case name
[INFO] [stdout]   --> src/exercism/sublist.rs:27:48
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub fn compare_lists<T: PartialEq>(A: &Vec<T>, B: &Vec<T>) -> &'static str {
[INFO] [stdout]    |                                                ^ help: convert the identifier to snake case: `b`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.31s
[INFO] running `Command { std: "docker" "inspect" "da08c99e29487ea1de9880cb97544882b0d11935cad4c241e5853371760405b8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "da08c99e29487ea1de9880cb97544882b0d11935cad4c241e5853371760405b8", kill_on_drop: false }`
[INFO] [stdout] da08c99e29487ea1de9880cb97544882b0d11935cad4c241e5853371760405b8
