[INFO] cloning repository https://github.com/landrzejewski/rust-training
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/landrzejewski/rust-training" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Flandrzejewski%2Frust-training", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Flandrzejewski%2Frust-training'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 42e9d1485b85935ca105f2496e58da15df1e1624
[INFO] checking landrzejewski/rust-training against try#2cbf9c3ff35600794d69a7dc7ab399810a067910 for pr-129249-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Flandrzejewski%2Frust-training" "/workspace/builds/worker-6-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/landrzejewski/rust-training
[INFO] finished tweaking git repo https://github.com/landrzejewski/rust-training
[INFO] tweaked toml for git repo https://github.com/landrzejewski/rust-training written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/landrzejewski/rust-training on toolchain 2cbf9c3ff35600794d69a7dc7ab399810a067910
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+2cbf9c3ff35600794d69a7dc7ab399810a067910" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/landrzejewski/rust-training already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+2cbf9c3ff35600794d69a7dc7ab399810a067910" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [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-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] add4622ed029afbb1c981e91337264dede3ff3500bf5269f2bd56d665b1966d2
[INFO] running `Command { std: "docker" "start" "add4622ed029afbb1c981e91337264dede3ff3500bf5269f2bd56d665b1966d2", 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" "add4622ed029afbb1c981e91337264dede3ff3500bf5269f2bd56d665b1966d2" "/opt/rustwide/cargo-home/bin/cargo" "+2cbf9c3ff35600794d69a7dc7ab399810a067910" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "add4622ed029afbb1c981e91337264dede3ff3500bf5269f2bd56d665b1966d2", 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" "add4622ed029afbb1c981e91337264dede3ff3500bf5269f2bd56d665b1966d2" "/opt/rustwide/cargo-home/bin/cargo" "+2cbf9c3ff35600794d69a7dc7ab399810a067910" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]     Checking unicode-ident v1.0.24
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling quote v1.0.45
[INFO] [stderr]    Compiling auto_enums_derive v0.7.12
[INFO] [stderr]    Compiling indexmap v1.9.3
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]    Compiling hashbrown v0.12.3
[INFO] [stderr]    Compiling zerocopy v0.8.52
[INFO] [stderr]     Checking simd-adler32 v0.3.9
[INFO] [stderr]     Checking errno v0.3.14
[INFO] [stderr]     Checking regex-syntax v0.8.11
[INFO] [stderr]     Checking nom v7.1.3
[INFO] [stderr]     Checking clap_builder v4.6.0
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]     Checking signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling cc v1.2.63
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking socket2 v0.6.4
[INFO] [stderr]     Checking mio v1.2.1
[INFO] [stderr]     Checking same-file v1.0.6
[INFO] [stderr]     Checking num_threads v0.1.7
[INFO] [stderr]     Checking num-conv v0.2.2
[INFO] [stderr]     Checking indexmap v2.14.0
[INFO] [stderr]     Checking flate2 v1.1.9
[INFO] [stderr]     Checking time v0.3.47
[INFO] [stderr]     Checking walkdir v2.5.0
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]     Checking castaway v0.2.4
[INFO] [stderr]     Checking hostname v0.4.2
[INFO] [stderr]     Checking csv-core v0.1.13
[INFO] [stderr]    Compiling rust-training v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Checking atomic v0.5.3
[INFO] [stderr]     Checking hashbrown v0.15.5
[INFO] [stderr]     Checking ciborium-io v0.2.2
[INFO] [stderr]     Checking plotters-backend v0.3.7
[INFO] [stderr]     Checking futures-io v0.3.32
[INFO] [stderr]     Checking chrono v0.4.45
[INFO] [stderr]     Checking compact_str v0.9.1
[INFO] [stderr]     Checking plotters-svg v0.3.7
[INFO] [stderr]     Checking itertools v0.13.0
[INFO] [stderr]     Checking libloading v0.9.0
[INFO] [stderr]     Checking cast v0.3.0
[INFO] [stderr]     Checking smol_str v0.3.6
[INFO] [stderr]     Checking example_dylib v0.1.0 (/opt/rustwide/workdir/example_dylib)
[INFO] [stderr]     Checking plotters v0.3.7
[INFO] [stderr]     Checking page_size v0.6.0
[INFO] [stderr]     Checking oorandom v11.1.5
[INFO] [stderr]     Checking anes v0.1.6
[INFO] [stderr]     Checking syslog v7.0.0
[INFO] [stderr]    Compiling alloca v0.4.0
[INFO] [stderr]     Checking hdrhistogram v7.5.4
[INFO] [stderr]     Checking regex-automata v0.4.14
[INFO] [stderr]     Checking csv v1.4.0
[INFO] [stderr]     Checking serde_json v1.0.150
[INFO] [stderr]     Checking criterion-plot v0.8.2
[INFO] [stderr]    Compiling derive_utils v0.11.2
[INFO] [stderr]    Compiling auto_enums_core v0.7.12
[INFO] [stderr]    Compiling auto_enums v0.7.12
[INFO] [stderr]     Checking synattra v0.2.1
[INFO] [stderr]    Compiling aspect-weave v0.2.1
[INFO] [stderr]     Checking regex v1.12.4
[INFO] [stderr]    Compiling metered-macro v0.9.0
[INFO] [stderr]     Checking aspect v0.3.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling zerocopy-derive v0.8.52
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling zeroize_derive v1.4.3
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling proc_macros v0.1.0 (/opt/rustwide/workdir/proc_macros)
[INFO] [stdout] warning: unused variable: `attr`
[INFO] [stdout]  --> proc_macros/src/attribute_example.rs:4:16
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn execute(attr: TokenStream, input: TokenStream) -> TokenStream {
[INFO] [stdout]   |                ^^^^ help: if this is intentional, prefix it with an underscore: `_attr`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input`
[INFO] [stdout]  --> proc_macros/src/attribute_example.rs:4:35
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn execute(attr: TokenStream, input: TokenStream) -> TokenStream {
[INFO] [stdout]   |                                   ^^^^^ help: if this is intentional, prefix it with an underscore: `_input`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input`
[INFO] [stdout]  --> proc_macros/src/function_example.rs:4:16
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn execute(input: TokenStream) -> TokenStream {
[INFO] [stdout]   |                ^^^^^ help: if this is intentional, prefix it with an underscore: `_input`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `impl_` is never used
[INFO] [stdout]  --> proc_macros/src/greet.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn impl_(input: TokenStream) -> TokenStream {
[INFO] [stdout]   |        ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `attr`
[INFO] [stdout]  --> proc_macros/src/attribute_example.rs:4:16
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn execute(attr: TokenStream, input: TokenStream) -> TokenStream {
[INFO] [stdout]   |                ^^^^ help: if this is intentional, prefix it with an underscore: `_attr`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input`
[INFO] [stdout]  --> proc_macros/src/attribute_example.rs:4:35
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn execute(attr: TokenStream, input: TokenStream) -> TokenStream {
[INFO] [stdout]   |                                   ^^^^^ help: if this is intentional, prefix it with an underscore: `_input`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input`
[INFO] [stdout]  --> proc_macros/src/function_example.rs:4:16
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn execute(input: TokenStream) -> TokenStream {
[INFO] [stdout]   |                ^^^^^ help: if this is intentional, prefix it with an underscore: `_input`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `impl_` is never used
[INFO] [stdout]  --> proc_macros/src/greet.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn impl_(input: TokenStream) -> TokenStream {
[INFO] [stdout]   |        ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking tokio v1.52.3
[INFO] [stderr]     Checking futures-util v0.3.32
[INFO] [stdout] warning: unused variable: `attr`
[INFO] [stdout]  --> proc_macros/src/attribute_example.rs:4:16
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn execute(attr: TokenStream, input: TokenStream) -> TokenStream {
[INFO] [stdout]   |                ^^^^ help: if this is intentional, prefix it with an underscore: `_attr`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input`
[INFO] [stdout]  --> proc_macros/src/attribute_example.rs:4:35
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn execute(attr: TokenStream, input: TokenStream) -> TokenStream {
[INFO] [stdout]   |                                   ^^^^^ help: if this is intentional, prefix it with an underscore: `_input`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input`
[INFO] [stdout]  --> proc_macros/src/function_example.rs:4:16
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn execute(input: TokenStream) -> TokenStream {
[INFO] [stdout]   |                ^^^^^ help: if this is intentional, prefix it with an underscore: `_input`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `impl_` is never used
[INFO] [stdout]  --> proc_macros/src/greet.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn impl_(input: TokenStream) -> TokenStream {
[INFO] [stdout]   |        ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking zeroize v1.8.2
[INFO] [stderr]     Checking secrecy v0.10.3
[INFO] [stderr]     Checking thiserror v2.0.18
[INFO] [stderr]     Checking clap v4.6.1
[INFO] [stderr]     Checking metered v0.9.0
[INFO] [stderr]     Checking serde_yaml v0.9.34+deprecated
[INFO] [stderr]     Checking tinytemplate v1.2.1
[INFO] [stderr]     Checking tokio-util v0.7.18
[INFO] [stderr]     Checking half v2.7.1
[INFO] [stderr]     Checking ciborium-ll v0.2.2
[INFO] [stderr]     Checking ciborium v0.2.2
[INFO] [stdout] warning: unused import: `clap::builder::Resettable::Value`
[INFO] [stdout]  --> src/basic/mod_007_structs_enums_and_collections.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use clap::builder::Resettable::Value;
[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: `mpsc`
[INFO] [stdout]  --> src/advanced/mod_003_threads_and_concurrency.rs:4:55
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::sync::{Arc, Barrier, Condvar, Mutex, RwLock, mpsc};
[INFO] [stdout]   |                                                       ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `drop`
[INFO] [stdout]  --> src/exercises/grep_classic.rs:4:60
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::exercises::util::{assert, get_args, min_length, drop};
[INFO] [stdout]   |                                                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::pin::pin`
[INFO] [stdout]  --> src/exercises/util.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::pin::pin;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::hint::black_box`
[INFO] [stdout]  --> src/extras/mod_005_optimization_and_inlining.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::hint::black_box;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking criterion v0.8.2
[INFO] [stdout] warning: unused variable: `a`
[INFO] [stdout]    --> src/basic/mod_002_data_types.rs:529:9
[INFO] [stdout]     |
[INFO] [stdout] 529 |     let a = info;
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_a`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x2`
[INFO] [stdout]    --> src/basic/mod_006_ownership_and_lifetimes.rs:427:9
[INFO] [stdout]     |
[INFO] [stdout] 427 |     let x2 = x1; // copy
[INFO] [stdout]     |         ^^ help: if this is intentional, prefix it with an underscore: `_x2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t2`
[INFO] [stdout]    --> src/basic/mod_006_ownership_and_lifetimes.rs:430:9
[INFO] [stdout]     |
[INFO] [stdout] 430 |     let t2 = t1; // move
[INFO] [stdout]     |         ^^ help: if this is intentional, prefix it with an underscore: `_t2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `result`
[INFO] [stdout]    --> src/basic/mod_007_structs_enums_and_collections.rs:854:9
[INFO] [stdout]     |
[INFO] [stdout] 854 |     let result = parse_and_double("21")?;
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `parsed`
[INFO] [stdout]    --> src/basic/mod_007_structs_enums_and_collections.rs:964:9
[INFO] [stdout]     |
[INFO] [stdout] 964 |     let parsed: Result<i32, _> = "42".parse();
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_parsed`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `err`
[INFO] [stdout]    --> src/exercises/budget.rs:181:17
[INFO] [stdout]     |
[INFO] [stdout] 181 |             Err(err) => {
[INFO] [stdout]     |                 ^^^ help: if this is intentional, prefix it with an underscore: `_err`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `x` is never read
[INFO] [stdout]    --> src/basic/mod_006_ownership_and_lifetimes.rs:433:9
[INFO] [stdout]     |
[INFO] [stdout] 432 |     struct Point {
[INFO] [stdout]     |            ----- field in this struct
[INFO] [stdout] 433 |         x: 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: field `x` is never read
[INFO] [stdout]    --> src/basic/mod_006_ownership_and_lifetimes.rs:445:9
[INFO] [stdout]     |
[INFO] [stdout] 444 |     struct Point1 {
[INFO] [stdout]     |            ------ field in this struct
[INFO] [stdout] 445 |         x: i32,
[INFO] [stdout]     |         ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Point1` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Point3` is never constructed
[INFO] [stdout]    --> src/basic/mod_006_ownership_and_lifetimes.rs:456:12
[INFO] [stdout]     |
[INFO] [stdout] 456 |     struct Point3 {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `B` is never constructed
[INFO] [stdout]    --> src/basic/mod_006_ownership_and_lifetimes.rs:590:8
[INFO] [stdout]     |
[INFO] [stdout] 590 | struct B<'b> {
[INFO] [stdout]     |        ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Invertible` is never used
[INFO] [stdout]    --> src/advanced/mod_001_idioms_and_patterns.rs:362:7
[INFO] [stdout]     |
[INFO] [stdout] 362 | trait Invertible {
[INFO] [stdout]     |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `launching_and_coordinating_threads` is never used
[INFO] [stdout]   --> src/advanced/mod_003_threads_and_concurrency.rs:96:4
[INFO] [stdout]    |
[INFO] [stdout] 96 | fn launching_and_coordinating_threads() {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_and_sync` is never used
[INFO] [stdout]    --> src/advanced/mod_003_threads_and_concurrency.rs:251:4
[INFO] [stdout]     |
[INFO] [stdout] 251 | fn send_and_sync() {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `safe_state_sharing` is never used
[INFO] [stdout]    --> src/advanced/mod_003_threads_and_concurrency.rs:504:4
[INFO] [stdout]     |
[INFO] [stdout] 504 | fn safe_state_sharing() {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `scoped_threads_and_synchronization` is never used
[INFO] [stdout]    --> src/advanced/mod_003_threads_and_concurrency.rs:827:4
[INFO] [stdout]     |
[INFO] [stdout] 827 | fn scoped_threads_and_synchronization() {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `magnitude` is never used
[INFO] [stdout]    --> src/advanced/mod_005a_ffi_c.rs:379:8
[INFO] [stdout]     |
[INFO] [stdout] 378 | impl RustVec2 {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] 379 |     fn magnitude(&self) -> c_double {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `subtract` is never used
[INFO] [stdout]   --> src/exercises/money.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl<'a> MonetaryAmount<'a> {
[INFO] [stdout]    | --------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 17 |     fn subtract(&mut self, other: &MonetaryAmount) -> Result<(), String> {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `subtract_value` is never used
[INFO] [stdout]   --> src/exercises/money_with_enums.rs:24:8
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl MonetaryAmount {
[INFO] [stdout]    | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 24 |     fn subtract_value(&self, other: &MonetaryAmount) -> Result<MonetaryAmount, String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `drop` is never used
[INFO] [stdout]   --> src/exercises/util.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub fn drop<T>(data: Vec<T>, count: usize) -> Vec<T> {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WorkEntry` is never constructed
[INFO] [stdout]   --> src/exercises/employees.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | struct WorkEntry {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_csv` is never used
[INFO] [stdout]   --> src/exercises/employees.rs:17:4
[INFO] [stdout]    |
[INFO] [stdout] 17 | fn read_csv(path: &str) -> Result<Vec<WorkEntry>, Box<dyn Error>> {
[INFO] [stdout]    |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `analyze` is never used
[INFO] [stdout]   --> src/exercises/employees.rs:35:4
[INFO] [stdout]    |
[INFO] [stdout] 35 | fn analyze(entries: Vec<WorkEntry>) -> HashMap<String, (Duration, usize, Vec<String>)> {
[INFO] [stdout]    |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_report` is never used
[INFO] [stdout]   --> src/exercises/employees.rs:56:4
[INFO] [stdout]    |
[INFO] [stdout] 56 | fn write_report(
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `main` is never used
[INFO] [stdout]   --> src/exercises/employees.rs:81:4
[INFO] [stdout]    |
[INFO] [stdout] 81 | fn main() -> Result<(), Box<dyn Error>> {
[INFO] [stdout]    |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `scoped_threads_and_synchronization` is never used
[INFO] [stdout]  --> src/exercises/example.rs:5:4
[INFO] [stdout]   |
[INFO] [stdout] 5 | fn scoped_threads_and_synchronization(chunks: Vec<String>) {
[INFO] [stdout]   |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `OTHER_WRITE`, `empty`, `insert`, `remove`, and `toggle` are never used
[INFO] [stdout]    --> src/exercises/bitflags_macro.rs:17:22
[INFO] [stdout]     |
[INFO] [stdout]  14 |           impl $name {
[INFO] [stdout]     |           ---------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  17 |               const fn empty() -> Self {
[INFO] [stdout]     |                        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  29 |               fn insert(&mut self, other: Self) {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  33 |               fn remove(&mut self, other: Self) {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  37 |               fn toggle(&mut self, other: Self) {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 | / bitflags!(FileMode: u16 {
[INFO] [stdout] 116 | |     OWNER_READ    = 0o400,
[INFO] [stdout] 117 | |     OWNER_WRITE   = 0o200,
[INFO] [stdout] 118 | |     OWNER_EXEC    = 0o100,
[INFO] [stdout] ...   |
[INFO] [stdout] 123 | |     OTHER_WRITE   = 0o002,
[INFO] [stdout]     | |     ^^^^^^^^^^^
[INFO] [stdout] 124 | |     OTHER_EXEC    = 0o001,
[INFO] [stdout] 125 | | });
[INFO] [stdout]     | |__- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/basic/mod_007_structs_enums_and_collections.rs:2288:5
[INFO] [stdout]      |
[INFO] [stdout] 2288 |     result_type();
[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] 2288 |     let _ = result_type();
[INFO] [stdout]      |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/exercises/budget.rs:179:17
[INFO] [stdout]     |
[INFO] [stdout] 179 |                 save(&entries); //todo
[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] 179 |                 let _ = save(&entries); //todo
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Hello`, `attribute_macro`, and `function_macro`
[INFO] [stdout]   --> src/main.rs:22:19
[INFO] [stdout]    |
[INFO] [stdout] 22 | use proc_macros::{attribute_macro, function_macro, Hello};
[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: `drop`
[INFO] [stdout]  --> src/exercises/grep_classic.rs:4:60
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::exercises::util::{assert, get_args, min_length, drop};
[INFO] [stdout]   |                                                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::pin::pin`
[INFO] [stdout]  --> src/exercises/util.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::pin::pin;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tic_tac_toe_v2::run`
[INFO] [stdout]   --> src/exercises.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub use tic_tac_toe_v2::run;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Hello`, `attribute_macro`, and `function_macro`
[INFO] [stdout]   --> src/main.rs:22:19
[INFO] [stdout]    |
[INFO] [stdout] 22 | use proc_macros::{attribute_macro, function_macro, Hello};
[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: `drop`
[INFO] [stdout]  --> src/exercises/grep_classic.rs:4:60
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::exercises::util::{assert, get_args, min_length, drop};
[INFO] [stdout]   |                                                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::pin::pin`
[INFO] [stdout]  --> src/exercises/util.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::pin::pin;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tic_tac_toe_v2::run`
[INFO] [stdout]   --> src/exercises.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub use tic_tac_toe_v2::run;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `clap::builder::Resettable::Value`
[INFO] [stdout]  --> src/basic/mod_007_structs_enums_and_collections.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use clap::builder::Resettable::Value;
[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: `mpsc`
[INFO] [stdout]  --> src/advanced/mod_003_threads_and_concurrency.rs:4:55
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::sync::{Arc, Barrier, Condvar, Mutex, RwLock, mpsc};
[INFO] [stdout]   |                                                       ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `drop`
[INFO] [stdout]  --> src/exercises/grep_classic.rs:4:60
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::exercises::util::{assert, get_args, min_length, drop};
[INFO] [stdout]   |                                                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::pin::pin`
[INFO] [stdout]  --> src/exercises/util.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::pin::pin;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::hint::black_box`
[INFO] [stdout]  --> src/extras/mod_005_optimization_and_inlining.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::hint::black_box;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `err`
[INFO] [stdout]    --> src/exercises/budget.rs:181:17
[INFO] [stdout]     |
[INFO] [stdout] 181 |             Err(err) => {
[INFO] [stdout]     |                 ^^^ help: if this is intentional, prefix it with an underscore: `_err`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `err`
[INFO] [stdout]    --> src/exercises/budget.rs:181:17
[INFO] [stdout]     |
[INFO] [stdout] 181 |             Err(err) => {
[INFO] [stdout]     |                 ^^^ help: if this is intentional, prefix it with an underscore: `_err`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fibonacci_recursive` is never used
[INFO] [stdout]  --> src/exercises/fibonacci.rs:1:4
[INFO] [stdout]   |
[INFO] [stdout] 1 | fn fibonacci_recursive(n: usize) -> u128 {
[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 `fibonacci` is never used
[INFO] [stdout]  --> src/exercises/fibonacci.rs:9:4
[INFO] [stdout]   |
[INFO] [stdout] 9 | fn fibonacci(n: usize) -> u128 {
[INFO] [stdout]   |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> src/exercises/fibonacci.rs:27:8
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub fn run() {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BOARD_SIZE` is never used
[INFO] [stdout]  --> src/exercises/tic_tac_toe.rs:3:7
[INFO] [stdout]   |
[INFO] [stdout] 3 | const BOARD_SIZE: usize = 3;
[INFO] [stdout]   |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EMPTY` is never used
[INFO] [stdout]  --> src/exercises/tic_tac_toe.rs:4:7
[INFO] [stdout]   |
[INFO] [stdout] 4 | const EMPTY: char = '-';
[INFO] [stdout]   |       ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `toggle_player` is never used
[INFO] [stdout]  --> src/exercises/tic_tac_toe.rs:6:4
[INFO] [stdout]   |
[INFO] [stdout] 6 | fn toggle_player(player: char) -> char {
[INFO] [stdout]   |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `display` is never used
[INFO] [stdout]   --> src/exercises/tic_tac_toe.rs:14:4
[INFO] [stdout]    |
[INFO] [stdout] 14 | fn display(board: [[char; BOARD_SIZE]; BOARD_SIZE]) {
[INFO] [stdout]    |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_valid_move` is never used
[INFO] [stdout]   --> src/exercises/tic_tac_toe.rs:27:4
[INFO] [stdout]    |
[INFO] [stdout] 27 | fn is_valid_move(board: [[char; BOARD_SIZE]; BOARD_SIZE], field: usize) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_move` is never used
[INFO] [stdout]   --> src/exercises/tic_tac_toe.rs:36:4
[INFO] [stdout]    |
[INFO] [stdout] 36 | fn make_move(board: &mut [[char; BOARD_SIZE]; BOARD_SIZE], field: usize, player: char) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_board_full` is never used
[INFO] [stdout]   --> src/exercises/tic_tac_toe.rs:47:4
[INFO] [stdout]    |
[INFO] [stdout] 47 | fn is_board_full(board: [[char; BOARD_SIZE]; BOARD_SIZE]) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_winner` is never used
[INFO] [stdout]   --> src/exercises/tic_tac_toe.rs:62:4
[INFO] [stdout]    |
[INFO] [stdout] 62 | fn is_winner(board: [[char; BOARD_SIZE]; BOARD_SIZE], player: char) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_field` is never used
[INFO] [stdout]    --> src/exercises/tic_tac_toe.rs:122:4
[INFO] [stdout]     |
[INFO] [stdout] 122 | fn read_field() -> usize {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]    --> src/exercises/tic_tac_toe.rs:129:8
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub fn run() {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EUR` is never used
[INFO] [stdout]  --> src/exercises/money.rs:1:7
[INFO] [stdout]   |
[INFO] [stdout] 1 | const EUR: &str = "EUR";
[INFO] [stdout]   |       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLN` is never used
[INFO] [stdout]  --> src/exercises/money.rs:2:7
[INFO] [stdout]   |
[INFO] [stdout] 2 | const PLN: &str = "PLN";
[INFO] [stdout]   |       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MonetaryAmount` is never constructed
[INFO] [stdout]  --> src/exercises/money.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | struct MonetaryAmount<'a> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `add`, `subtract`, `check_currency`, `convert`, and `new` are never used
[INFO] [stdout]   --> src/exercises/money.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl<'a> MonetaryAmount<'a> {
[INFO] [stdout]    | --------------------------- associated items in this implementation
[INFO] [stdout] 11 |     fn add(&mut self, other: &MonetaryAmount) -> Result<(), String> {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 17 |     fn subtract(&mut self, other: &MonetaryAmount) -> Result<(), String> {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     fn check_currency(&self, other: &MonetaryAmount) -> Result<(), String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     fn convert(&mut self, exchange_rate: f64, currency: &'a str) {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     fn new(value: f64, currency: &'a str) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> src/exercises/money.rs:43:8
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub fn run() {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Currency` is never used
[INFO] [stdout]  --> src/exercises/money_with_enums.rs:4:6
[INFO] [stdout]   |
[INFO] [stdout] 4 | enum Currency {
[INFO] [stdout]   |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MonetaryAmount` is never constructed
[INFO] [stdout]   --> src/exercises/money_with_enums.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | struct MonetaryAmount {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `add_value`, `subtract_value`, `check_currency`, `convert`, and `new` are never used
[INFO] [stdout]   --> src/exercises/money_with_enums.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl MonetaryAmount {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 16 |     fn add_value(&self, other: &MonetaryAmount) -> Result<MonetaryAmount, String> {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     fn subtract_value(&self, other: &MonetaryAmount) -> Result<MonetaryAmount, String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     fn check_currency(&self, other: &MonetaryAmount) -> Result<&MonetaryAmount, String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     fn convert(amount: &MonetaryAmount, exchange_rate: f64, currency: Currency) -> Self {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     fn new(value: f64, currency: Currency) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> src/exercises/money_with_enums.rs:64:8
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub fn run() {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SEPARATOR` is never used
[INFO] [stdout]  --> src/exercises/echo.rs:3:7
[INFO] [stdout]   |
[INFO] [stdout] 3 | const SEPARATOR: &str = " ";
[INFO] [stdout]   |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]  --> src/exercises/echo.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn run() {
[INFO] [stdout]   |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ARG_PREFIX` is never used
[INFO] [stdout]  --> src/exercises/cat.rs:6:7
[INFO] [stdout]   |
[INFO] [stdout] 6 | const ARG_PREFIX: &str = "-";
[INFO] [stdout]   |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NUMBERING_ARG` is never used
[INFO] [stdout]  --> src/exercises/cat.rs:7:7
[INFO] [stdout]   |
[INFO] [stdout] 7 | const NUMBERING_ARG: &str = "-n";
[INFO] [stdout]   |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NUMBERING_IGNORE_EMPTY_ARG` is never used
[INFO] [stdout]  --> src/exercises/cat.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const NUMBERING_IGNORE_EMPTY_ARG: &str = "-nb";
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Mode` is never used
[INFO] [stdout]   --> src/exercises/cat.rs:10:6
[INFO] [stdout]    |
[INFO] [stdout] 10 | enum Mode {
[INFO] [stdout]    |      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_config` is never used
[INFO] [stdout]   --> src/exercises/cat.rs:27:4
[INFO] [stdout]    |
[INFO] [stdout] 27 | fn get_config() -> (Vec<String>, Vec<String>) {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_help` is never used
[INFO] [stdout]   --> src/exercises/cat.rs:33:4
[INFO] [stdout]    |
[INFO] [stdout] 33 | fn show_help() {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Printer` is never used
[INFO] [stdout]   --> src/exercises/cat.rs:41:6
[INFO] [stdout]    |
[INFO] [stdout] 41 | type Printer = fn(usize, line: &str);
[INFO] [stdout]    |      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print` is never used
[INFO] [stdout]   --> src/exercises/cat.rs:43:4
[INFO] [stdout]    |
[INFO] [stdout] 43 | fn print(_line_number: usize, line: &str) {
[INFO] [stdout]    |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_with_numbering` is never used
[INFO] [stdout]   --> src/exercises/cat.rs:47:4
[INFO] [stdout]    |
[INFO] [stdout] 47 | fn print_with_numbering(line_number: usize, line: &str) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_with_numbering_ignoring_empty` is never used
[INFO] [stdout]   --> src/exercises/cat.rs:51:4
[INFO] [stdout]    |
[INFO] [stdout] 51 | fn print_with_numbering_ignoring_empty(line_number: usize, line: &str) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cat` is never used
[INFO] [stdout]   --> src/exercises/cat.rs:59:4
[INFO] [stdout]    |
[INFO] [stdout] 59 | fn cat(filenames: &Vec<String>, mode: &Mode) {
[INFO] [stdout]    |    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> src/exercises/cat.rs:80:8
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub fn run() {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FileStats` is never constructed
[INFO] [stdout]  --> src/exercises/wc.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | struct FileStats {
[INFO] [stdout]   |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_help` is never used
[INFO] [stdout]   --> src/exercises/wc.rs:25:4
[INFO] [stdout]    |
[INFO] [stdout] 25 | fn show_help() {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `wc` is never used
[INFO] [stdout]   --> src/exercises/wc.rs:30:4
[INFO] [stdout]    |
[INFO] [stdout] 30 | fn wc(paths: &Vec<String>) {
[INFO] [stdout]    |    ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_file_stats` is never used
[INFO] [stdout]   --> src/exercises/wc.rs:42:4
[INFO] [stdout]    |
[INFO] [stdout] 42 | fn get_file_stats(file: &File) -> Result<FileStats, Box<dyn Error>> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> src/exercises/wc.rs:60:8
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub fn run() {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SEPARATOR` is never used
[INFO] [stdout]  --> src/exercises/find.rs:5:7
[INFO] [stdout]   |
[INFO] [stdout] 5 | const SEPARATOR: char = ',';
[INFO] [stdout]   |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ElementType` is never used
[INFO] [stdout]  --> src/exercises/find.rs:7:6
[INFO] [stdout]   |
[INFO] [stdout] 7 | enum ElementType {
[INFO] [stdout]   |      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_help` is never used
[INFO] [stdout]   --> src/exercises/find.rs:23:4
[INFO] [stdout]    |
[INFO] [stdout] 23 | fn show_help() {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_type_of` is never used
[INFO] [stdout]   --> src/exercises/find.rs:31:4
[INFO] [stdout]    |
[INFO] [stdout] 31 | fn is_type_of(entry: &DirEntry, element_type: &ElementType) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find` is never used
[INFO] [stdout]   --> src/exercises/find.rs:40:4
[INFO] [stdout]    |
[INFO] [stdout] 40 | fn find(regex: &Regex, types: &[ElementType], paths: &[String]) -> Vec<String> {
[INFO] [stdout]    |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> src/exercises/find.rs:59:8
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub fn run() {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_help` is never used
[INFO] [stdout]  --> src/exercises/grep_classic.rs:6:4
[INFO] [stdout]   |
[INFO] [stdout] 6 | fn show_help() {
[INFO] [stdout]   |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_file_paths` is never used
[INFO] [stdout]   --> src/exercises/grep_classic.rs:13:4
[INFO] [stdout]    |
[INFO] [stdout] 13 | fn find_file_paths(path: &str) -> Vec<String> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_matching_lines` is never used
[INFO] [stdout]   --> src/exercises/grep_classic.rs:24:4
[INFO] [stdout]    |
[INFO] [stdout] 24 | fn get_matching_lines(text: &str, file_path: &str) -> Vec<(usize, String)> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_matching_lines` is never used
[INFO] [stdout]   --> src/exercises/grep_classic.rs:40:4
[INFO] [stdout]    |
[INFO] [stdout] 40 | fn print_matching_lines(matching_lines: &[(usize, String)]) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `grep` is never used
[INFO] [stdout]   --> src/exercises/grep_classic.rs:46:4
[INFO] [stdout]    |
[INFO] [stdout] 46 | fn grep(text: &String, paths: &[String]) {
[INFO] [stdout]    |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> src/exercises/grep_classic.rs:59:8
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub fn run() {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_help` is never used
[INFO] [stdout]   --> src/exercises/grep.rs:10:4
[INFO] [stdout]    |
[INFO] [stdout] 10 | fn show_help() {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_lines_with_text` is never used
[INFO] [stdout]   --> src/exercises/grep.rs:17:4
[INFO] [stdout]    |
[INFO] [stdout] 17 | fn get_lines_with_text(text: &str, file_path: &str) -> Vec<String> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `grep` is never used
[INFO] [stdout]   --> src/exercises/grep.rs:33:4
[INFO] [stdout]    |
[INFO] [stdout] 33 | fn grep(text: &str, paths: &[String]) -> HashMap<String, Vec<String>> {
[INFO] [stdout]    |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> src/exercises/grep.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn run() {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FILE_NAME` is never used
[INFO] [stdout]   --> src/exercises/budget.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const FILE_NAME: &str = "budget.csv";
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SEPARATOR` is never used
[INFO] [stdout]   --> src/exercises/budget.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | const SEPARATOR: &str = ";";
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FIELD_COUNT` is never used
[INFO] [stdout]   --> src/exercises/budget.rs:12:7
[INFO] [stdout]    |
[INFO] [stdout] 12 | const FIELD_COUNT: usize = 3;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WITHDRAW` is never used
[INFO] [stdout]   --> src/exercises/budget.rs:13:7
[INFO] [stdout]    |
[INFO] [stdout] 13 | const WITHDRAW: &str = "Withdraw";
[INFO] [stdout]    |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEPOSIT` is never used
[INFO] [stdout]   --> src/exercises/budget.rs:14:7
[INFO] [stdout]    |
[INFO] [stdout] 14 | const DEPOSIT: &str = "Deposit";
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Entry` is never constructed
[INFO] [stdout]   --> src/exercises/budget.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | struct Entry {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Operation` is never used
[INFO] [stdout]   --> src/exercises/budget.rs:50:6
[INFO] [stdout]    |
[INFO] [stdout] 50 | enum Operation {
[INFO] [stdout]    |      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AppError` is never used
[INFO] [stdout]   --> src/exercises/budget.rs:77:6
[INFO] [stdout]    |
[INFO] [stdout] 77 | enum AppError {
[INFO] [stdout]    |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load` is never used
[INFO] [stdout]    --> src/exercises/budget.rs:113:4
[INFO] [stdout]     |
[INFO] [stdout] 113 | fn load() -> Result<Vec<Entry>, AppError> {
[INFO] [stdout]     |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `save` is never used
[INFO] [stdout]    --> src/exercises/budget.rs:123:4
[INFO] [stdout]     |
[INFO] [stdout] 123 | fn save(entries: &[Entry]) -> Result<(), AppError> {
[INFO] [stdout]     |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_summary` is never used
[INFO] [stdout]    --> src/exercises/budget.rs:133:4
[INFO] [stdout]     |
[INFO] [stdout] 133 | fn show_summary(entries: &[Entry]) {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]    --> src/exercises/budget.rs:163:8
[INFO] [stdout]     |
[INFO] [stdout] 163 | pub fn run()  {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BOARD_SIZE` is never used
[INFO] [stdout]  --> src/exercises/tic_tac_toe_v2.rs:4:7
[INFO] [stdout]   |
[INFO] [stdout] 4 | const BOARD_SIZE: usize = 3;
[INFO] [stdout]   |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FIELD_COUNT` is never used
[INFO] [stdout]  --> src/exercises/tic_tac_toe_v2.rs:5:7
[INFO] [stdout]   |
[INFO] [stdout] 5 | const FIELD_COUNT: usize = BOARD_SIZE * BOARD_SIZE;
[INFO] [stdout]   |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Player` is never used
[INFO] [stdout]  --> src/exercises/tic_tac_toe_v2.rs:8:6
[INFO] [stdout]   |
[INFO] [stdout] 8 | enum Player {
[INFO] [stdout]   |      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `toggle` is never used
[INFO] [stdout]   --> src/exercises/tic_tac_toe_v2.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl Player {
[INFO] [stdout]    | ----------- method in this implementation
[INFO] [stdout] 14 |     fn toggle(self) -> Player {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Cell` is never used
[INFO] [stdout]   --> src/exercises/tic_tac_toe_v2.rs:33:6
[INFO] [stdout]    |
[INFO] [stdout] 33 | enum Cell {
[INFO] [stdout]    |      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MoveError` is never used
[INFO] [stdout]   --> src/exercises/tic_tac_toe_v2.rs:48:6
[INFO] [stdout]    |
[INFO] [stdout] 48 | enum MoveError {
[INFO] [stdout]    |      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Board` is never constructed
[INFO] [stdout]   --> src/exercises/tic_tac_toe_v2.rs:64:8
[INFO] [stdout]    |
[INFO] [stdout] 64 | struct Board {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `make_move`, `is_full`, and `is_winner` are never used
[INFO] [stdout]   --> src/exercises/tic_tac_toe_v2.rs:69:8
[INFO] [stdout]    |
[INFO] [stdout] 68 | impl Board {
[INFO] [stdout]    | ---------- associated items in this implementation
[INFO] [stdout] 69 |     fn new() -> Board {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     fn make_move(&mut self, field: usize, player: Player) -> Result<(), MoveError> {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 87 |     fn is_full(&self) -> bool {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 94 |     fn is_winner(&self, player: Player) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `InputError` is never used
[INFO] [stdout]    --> src/exercises/tic_tac_toe_v2.rs:122:6
[INFO] [stdout]     |
[INFO] [stdout] 122 | enum InputError {
[INFO] [stdout]     |      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_field` is never used
[INFO] [stdout]    --> src/exercises/tic_tac_toe_v2.rs:146:4
[INFO] [stdout]     |
[INFO] [stdout] 146 | fn read_field() -> Result<usize, InputError> {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]    --> src/exercises/tic_tac_toe_v2.rs:159:8
[INFO] [stdout]     |
[INFO] [stdout] 159 | pub fn run() {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_args` is never used
[INFO] [stdout]  --> src/exercises/util.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn get_args() -> Vec<String> {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert` is never used
[INFO] [stdout]  --> src/exercises/util.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn assert<T>(value: T, predicate: impl Fn(T) -> bool, on_failure: impl Fn()) {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_not_empty` is never used
[INFO] [stdout]   --> src/exercises/util.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub fn is_not_empty<T>(vec: &[T]) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `min_length` is never used
[INFO] [stdout]   --> src/exercises/util.rs:19:8
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub fn min_length<T>(length: usize) -> impl Fn(&Vec<T>) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `drop` is never used
[INFO] [stdout]   --> src/exercises/util.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub fn drop<T>(data: Vec<T>, count: usize) -> Vec<T> {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WorkEntry` is never constructed
[INFO] [stdout]   --> src/exercises/employees.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | struct WorkEntry {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_csv` is never used
[INFO] [stdout]   --> src/exercises/employees.rs:17:4
[INFO] [stdout]    |
[INFO] [stdout] 17 | fn read_csv(path: &str) -> Result<Vec<WorkEntry>, Box<dyn Error>> {
[INFO] [stdout]    |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `analyze` is never used
[INFO] [stdout]   --> src/exercises/employees.rs:35:4
[INFO] [stdout]    |
[INFO] [stdout] 35 | fn analyze(entries: Vec<WorkEntry>) -> HashMap<String, (Duration, usize, Vec<String>)> {
[INFO] [stdout]    |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_report` is never used
[INFO] [stdout]   --> src/exercises/employees.rs:56:4
[INFO] [stdout]    |
[INFO] [stdout] 56 | fn write_report(
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `main` is never used
[INFO] [stdout]   --> src/exercises/employees.rs:81:4
[INFO] [stdout]    |
[INFO] [stdout] 81 | fn main() -> Result<(), Box<dyn Error>> {
[INFO] [stdout]    |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_prime` is never used
[INFO] [stdout]  --> src/exercises/pipeline.rs:4:4
[INFO] [stdout]   |
[INFO] [stdout] 4 | fn is_prime(n: u64) -> bool {
[INFO] [stdout]   |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> src/exercises/pipeline.rs:24:8
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub fn run() {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `count_words` is never used
[INFO] [stdout]  --> src/exercises/word_counter.rs:5:4
[INFO] [stdout]   |
[INFO] [stdout] 5 | fn count_words(text: &str) -> HashMap<String, usize> {
[INFO] [stdout]   |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `merge_into` is never used
[INFO] [stdout]   --> src/exercises/word_counter.rs:19:4
[INFO] [stdout]    |
[INFO] [stdout] 19 | fn merge_into(target: &mut HashMap<String, usize>, source: HashMap<String, usize>) {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> src/exercises/word_counter.rs:25:8
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub fn run() {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `scoped_threads_and_synchronization` is never used
[INFO] [stdout]  --> src/exercises/example.rs:5:4
[INFO] [stdout]   |
[INFO] [stdout] 5 | fn scoped_threads_and_synchronization(chunks: Vec<String>) {
[INFO] [stdout]   |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Link` is never used
[INFO] [stdout]  --> src/exercises/linked_lists.rs:5:6
[INFO] [stdout]   |
[INFO] [stdout] 5 | type Link<T> = Option<Box<Node<T>>>;
[INFO] [stdout]   |      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Node` is never constructed
[INFO] [stdout]  --> src/exercises/linked_lists.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | struct Node<T> {
[INFO] [stdout]   |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `List` is never constructed
[INFO] [stdout]   --> src/exercises/linked_lists.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | struct List<T> {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `push`, `pop`, and `print` are never used
[INFO] [stdout]   --> src/exercises/linked_lists.rs:19:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl <T: Display> List<T> {
[INFO] [stdout]    | ------------------------- associated items in this implementation
[INFO] [stdout] 19 |     fn new() -> List<T> {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     fn push(&mut self, element: T) {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     fn pop(&mut self) -> Option<T> {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     fn print(&self) {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `linked_list` is never used
[INFO] [stdout]   --> src/exercises/linked_lists.rs:45:4
[INFO] [stdout]    |
[INFO] [stdout] 45 | fn linked_list() {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `DoublyLink` is never used
[INFO] [stdout]   --> src/exercises/linked_lists.rs:56:6
[INFO] [stdout]    |
[INFO] [stdout] 56 | type DoublyLink = Option<Rc<RefCell<DoublyNode>>>;
[INFO] [stdout]    |      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DoublyNode` is never constructed
[INFO] [stdout]   --> src/exercises/linked_lists.rs:59:8
[INFO] [stdout]    |
[INFO] [stdout] 59 | struct DoublyNode {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/exercises/linked_lists.rs:66:8
[INFO] [stdout]    |
[INFO] [stdout] 65 | impl DoublyNode {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] 66 |     fn new(element: i32) -> Rc<RefCell<Self>> {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DoublyLinkedList` is never constructed
[INFO] [stdout]   --> src/exercises/linked_lists.rs:77:8
[INFO] [stdout]    |
[INFO] [stdout] 77 | struct DoublyLinkedList {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `push`, `pop`, and `print` are never used
[INFO] [stdout]    --> src/exercises/linked_lists.rs:83:8
[INFO] [stdout]     |
[INFO] [stdout]  82 | impl DoublyLinkedList {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout]  83 |     fn new() -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  90 |     fn push(&mut self, element: i32) {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     fn pop(&mut self) -> Option<i32> {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     fn print(&self) {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `doubly_linked_list` is never used
[INFO] [stdout]    --> src/exercises/linked_lists.rs:137:4
[INFO] [stdout]     |
[INFO] [stdout] 137 | fn doubly_linked_list() {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CycleNode` is never constructed
[INFO] [stdout]    --> src/exercises/linked_lists.rs:163:8
[INFO] [stdout]     |
[INFO] [stdout] 163 | struct CycleNode {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `reference_cycles` is never used
[INFO] [stdout]    --> src/exercises/linked_lists.rs:181:4
[INFO] [stdout]     |
[INFO] [stdout] 181 | fn reference_cycles() {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]    --> src/exercises/linked_lists.rs:259:8
[INFO] [stdout]     |
[INFO] [stdout] 259 | pub fn run() {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Permissions` is never constructed
[INFO] [stdout]    --> src/exercises/bitflags_macro.rs:108:11
[INFO] [stdout]     |
[INFO] [stdout] 108 | bitflags!(Permissions: u8 {
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/exercises/bitflags_macro.rs:17:22
[INFO] [stdout]     |
[INFO] [stdout]  14 |           impl $name {
[INFO] [stdout]     |           ---------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  17 |               const fn empty() -> Self {
[INFO] [stdout]     |                        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  21 |               fn all() -> Self {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout]  25 |               fn contains(self, other: Self) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  29 |               fn insert(&mut self, other: Self) {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  33 |               fn remove(&mut self, other: Self) {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  37 |               fn toggle(&mut self, other: Self) {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  41 |               fn is_empty(self) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  45 |               fn bits(self) -> $repr {
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 | / bitflags!(Permissions: u8 {
[INFO] [stdout] 109 | |     READ    = 0b0001,
[INFO] [stdout]     | |     ^^^^
[INFO] [stdout] 110 | |     WRITE   = 0b0010,
[INFO] [stdout]     | |     ^^^^^
[INFO] [stdout] 111 | |     EXECUTE = 0b0100,
[INFO] [stdout]     | |     ^^^^^^^
[INFO] [stdout] 112 | |     DELETE  = 0b1000,
[INFO] [stdout]     | |     ^^^^^^
[INFO] [stdout] 113 | | });
[INFO] [stdout]     | |__- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FileMode` is never constructed
[INFO] [stdout]    --> src/exercises/bitflags_macro.rs:115:11
[INFO] [stdout]     |
[INFO] [stdout] 115 | bitflags!(FileMode: u16 {
[INFO] [stdout]     |           ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/exercises/bitflags_macro.rs:17:22
[INFO] [stdout]     |
[INFO] [stdout]  14 |           impl $name {
[INFO] [stdout]     |           ---------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  17 |               const fn empty() -> Self {
[INFO] [stdout]     |                        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  21 |               fn all() -> Self {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout]  25 |               fn contains(self, other: Self) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  29 |               fn insert(&mut self, other: Self) {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  33 |               fn remove(&mut self, other: Self) {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  37 |               fn toggle(&mut self, other: Self) {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  41 |               fn is_empty(self) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  45 |               fn bits(self) -> $repr {
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 | / bitflags!(FileMode: u16 {
[INFO] [stdout] 116 | |     OWNER_READ    = 0o400,
[INFO] [stdout]     | |     ^^^^^^^^^^
[INFO] [stdout] 117 | |     OWNER_WRITE   = 0o200,
[INFO] [stdout]     | |     ^^^^^^^^^^^
[INFO] [stdout] 118 | |     OWNER_EXEC    = 0o100,
[INFO] [stdout]     | |     ^^^^^^^^^^
[INFO] [stdout] 119 | |     GROUP_READ    = 0o040,
[INFO] [stdout]     | |     ^^^^^^^^^^
[INFO] [stdout] 120 | |     GROUP_WRITE   = 0o020,
[INFO] [stdout]     | |     ^^^^^^^^^^^
[INFO] [stdout] 121 | |     GROUP_EXEC    = 0o010,
[INFO] [stdout]     | |     ^^^^^^^^^^
[INFO] [stdout] 122 | |     OTHER_READ    = 0o004,
[INFO] [stdout]     | |     ^^^^^^^^^^
[INFO] [stdout] 123 | |     OTHER_WRITE   = 0o002,
[INFO] [stdout]     | |     ^^^^^^^^^^^
[INFO] [stdout] 124 | |     OTHER_EXEC    = 0o001,
[INFO] [stdout]     | |     ^^^^^^^^^^
[INFO] [stdout] 125 | | });
[INFO] [stdout]     | |__- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]    --> src/exercises/bitflags_macro.rs:131:8
[INFO] [stdout]     |
[INFO] [stdout] 131 | pub fn run() {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ColorError` is never used
[INFO] [stdout]  --> src/exercises/color_space.rs:9:6
[INFO] [stdout]   |
[INFO] [stdout] 9 | enum ColorError {
[INFO] [stdout]   |      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Rgb` is never constructed
[INFO] [stdout]   --> src/exercises/color_space.rs:40:8
[INFO] [stdout]    |
[INFO] [stdout] 40 | struct Rgb(u8, u8, u8);
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `brightness`, and `to_grayscale` are never used
[INFO] [stdout]   --> src/exercises/color_space.rs:43:8
[INFO] [stdout]    |
[INFO] [stdout] 42 | impl Rgb {
[INFO] [stdout]    | -------- associated items in this implementation
[INFO] [stdout] 43 |     fn new(r: u8, g: u8, b: u8) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     fn brightness(&self) -> f64 {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     fn to_grayscale(&self) -> Rgb {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HexColor` is never constructed
[INFO] [stdout]   --> src/exercises/color_space.rs:69:8
[INFO] [stdout]    |
[INFO] [stdout] 69 | struct HexColor(String);
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Hsl` is never constructed
[INFO] [stdout]    --> src/exercises/color_space.rs:105:8
[INFO] [stdout]     |
[INFO] [stdout] 105 | struct Hsl(f64, f64, f64); // h, s, l
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ColorSpace` is never used
[INFO] [stdout]    --> src/exercises/color_space.rs:198:7
[INFO] [stdout]     |
[INFO] [stdout] 198 | trait ColorSpace: sealed::Sealed + fmt::Display {
[INFO] [stdout]     |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ColorPaletteExt` is never used
[INFO] [stdout]    --> src/exercises/color_space.rs:277:7
[INFO] [stdout]     |
[INFO] [stdout] 277 | trait ColorPaletteExt {
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `describe_color` is never used
[INFO] [stdout]    --> src/exercises/color_space.rs:309:4
[INFO] [stdout]     |
[INFO] [stdout] 309 | fn describe_color(color: &dyn ColorSpace) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]    --> src/exercises/color_space.rs:318:8
[INFO] [stdout]     |
[INFO] [stdout] 318 | pub fn run() {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Sealed` is never used
[INFO] [stdout]    --> src/exercises/color_space.rs:195:15
[INFO] [stdout]     |
[INFO] [stdout] 195 |     pub trait Sealed {}
[INFO] [stdout]     |               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HELLO_HTML` is never used
[INFO] [stdout]  --> src/exercises/http_server.rs:7:7
[INFO] [stdout]   |
[INFO] [stdout] 7 | const HELLO_HTML: &str = "<!DOCTYPE html>\
[INFO] [stdout]   |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NOT_FOUND_HTML` is never used
[INFO] [stdout]   --> src/exercises/http_server.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | const NOT_FOUND_HTML: &str = "<!DOCTYPE html>\
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Job` is never used
[INFO] [stdout]   --> src/exercises/http_server.rs:15:6
[INFO] [stdout]    |
[INFO] [stdout] 15 | type Job = Box<dyn FnOnce() + Send + 'static>;
[INFO] [stdout]    |      ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ThreadPool` is never constructed
[INFO] [stdout]   --> src/exercises/http_server.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | struct ThreadPool {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `execute` are never used
[INFO] [stdout]   --> src/exercises/http_server.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl ThreadPool {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 23 |     fn new(size: usize) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     fn execute<F>(&self, f: F)
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Worker` is never constructed
[INFO] [stdout]   --> src/exercises/http_server.rs:58:8
[INFO] [stdout]    |
[INFO] [stdout] 58 | struct Worker {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/exercises/http_server.rs:64:8
[INFO] [stdout]    |
[INFO] [stdout] 63 | impl Worker {
[INFO] [stdout]    | ----------- associated function in this implementation
[INFO] [stdout] 64 |     fn new(id: usize, receiver: Arc<Mutex<mpsc::Receiver<Job>>>) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_connection` is never used
[INFO] [stdout]   --> src/exercises/http_server.rs:87:4
[INFO] [stdout]    |
[INFO] [stdout] 87 | fn handle_connection(mut stream: TcpStream) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_request` is never used
[INFO] [stdout]    --> src/exercises/http_server.rs:112:4
[INFO] [stdout]     |
[INFO] [stdout] 112 | fn send_request(addr: SocketAddr, path: &str) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]    --> src/exercises/http_server.rs:128:8
[INFO] [stdout]     |
[INFO] [stdout] 128 | pub fn run() {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Permission` is never constructed
[INFO] [stdout]  --> src/exercises/permission_system.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | struct Permission<const R: bool, const W: bool, const X: bool>;
[INFO] [stdout]   |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `ReadOnly` is never used
[INFO] [stdout]   --> src/exercises/permission_system.rs:12:6
[INFO] [stdout]    |
[INFO] [stdout] 12 | type ReadOnly = Permission<true, false, false>;
[INFO] [stdout]    |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `ReadWrite` is never used
[INFO] [stdout]   --> src/exercises/permission_system.rs:13:6
[INFO] [stdout]    |
[INFO] [stdout] 13 | type ReadWrite = Permission<true, true, false>;
[INFO] [stdout]    |      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `ReadExecute` is never used
[INFO] [stdout]   --> src/exercises/permission_system.rs:14:6
[INFO] [stdout]    |
[INFO] [stdout] 14 | type ReadExecute = Permission<true, false, true>;
[INFO] [stdout]    |      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `FullAccess` is never used
[INFO] [stdout]   --> src/exercises/permission_system.rs:15:6
[INFO] [stdout]    |
[INFO] [stdout] 15 | type FullAccess = Permission<true, true, true>;
[INFO] [stdout]    |      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `NoAccess` is never used
[INFO] [stdout]   --> src/exercises/permission_system.rs:16:6
[INFO] [stdout]    |
[INFO] [stdout] 16 | type NoAccess = Permission<false, false, false>;
[INFO] [stdout]    |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FileHandle` is never constructed
[INFO] [stdout]   --> src/exercises/permission_system.rs:34:8
[INFO] [stdout]    |
[INFO] [stdout] 34 | struct FileHandle<P> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `path` is never used
[INFO] [stdout]   --> src/exercises/permission_system.rs:41:8
[INFO] [stdout]    |
[INFO] [stdout] 40 | impl<P> FileHandle<P> {
[INFO] [stdout]    | --------------------- method in this implementation
[INFO] [stdout] 41 |     fn path(&self) -> &str {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `read` is never used
[INFO] [stdout]   --> src/exercises/permission_system.rs:48:8
[INFO] [stdout]    |
[INFO] [stdout] 47 | impl<const W: bool, const X: bool> FileHandle<Permission<true, W, X>> {
[INFO] [stdout]    | --------------------------------------------------------------------- method in this implementation
[INFO] [stdout] 48 |     fn read(&self) -> &str {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `write` is never used
[INFO] [stdout]   --> src/exercises/permission_system.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | impl<const R: bool, const X: bool> FileHandle<Permission<R, true, X>> {
[INFO] [stdout]    | --------------------------------------------------------------------- method in this implementation
[INFO] [stdout] 55 |     fn write(&mut self, data: &str) {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `execute` is never used
[INFO] [stdout]   --> src/exercises/permission_system.rs:62:8
[INFO] [stdout]    |
[INFO] [stdout] 61 | impl<const R: bool, const W: bool> FileHandle<Permission<R, W, true>> {
[INFO] [stdout]    | --------------------------------------------------------------------- method in this implementation
[INFO] [stdout] 62 |     fn execute(&self) -> i32 {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `open_file` is never used
[INFO] [stdout]   --> src/exercises/permission_system.rs:69:4
[INFO] [stdout]    |
[INFO] [stdout] 69 | fn open_file<P>(path: &str, content: &str) -> FileHandle<P> {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UserId` is never constructed
[INFO] [stdout]   --> src/exercises/permission_system.rs:82:8
[INFO] [stdout]    |
[INFO] [stdout] 82 | struct UserId(u32);
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GroupId` is never constructed
[INFO] [stdout]   --> src/exercises/permission_system.rs:85:8
[INFO] [stdout]    |
[INFO] [stdout] 85 | struct GroupId(u32);
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `file_info` is never used
[INFO] [stdout]   --> src/exercises/permission_system.rs:99:4
[INFO] [stdout]    |
[INFO] [stdout] 99 | fn file_info(path: &str, owner: UserId, group: GroupId) -> String {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `PermissionDescExt` is never used
[INFO] [stdout]    --> src/exercises/permission_system.rs:107:7
[INFO] [stdout]     |
[INFO] [stdout] 107 | trait PermissionDescExt {
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Auditable` is never used
[INFO] [stdout]    --> src/exercises/permission_system.rs:140:7
[INFO] [stdout]     |
[INFO] [stdout] 140 | trait Auditable {
[INFO] [stdout]     |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `demo_auditable` is never used
[INFO] [stdout]    --> src/exercises/permission_system.rs:155:4
[INFO] [stdout]     |
[INFO] [stdout] 155 | fn demo_auditable(handle: &dyn Auditable) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]    --> src/exercises/permission_system.rs:159:8
[INFO] [stdout]     |
[INFO] [stdout] 159 | pub fn run() {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Red` is never constructed
[INFO] [stdout]  --> src/exercises/traffic_light.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | struct Red;
[INFO] [stdout]   |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Green` is never constructed
[INFO] [stdout]  --> src/exercises/traffic_light.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | struct Green;
[INFO] [stdout]   |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Yellow` is never constructed
[INFO] [stdout]  --> src/exercises/traffic_light.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | struct Yellow;
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FlashingRed` is never constructed
[INFO] [stdout]   --> src/exercises/traffic_light.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | struct FlashingRed {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TrafficLight` is never constructed
[INFO] [stdout]   --> src/exercises/traffic_light.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | struct TrafficLight<S> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `turn_green` are never used
[INFO] [stdout]   --> src/exercises/traffic_light.rs:29:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl TrafficLight<Red> {
[INFO] [stdout]    | ---------------------- associated items in this implementation
[INFO] [stdout] 29 |     fn new(name: &str) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     fn turn_green(self) -> TrafficLight<Green> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `turn_yellow` is never used
[INFO] [stdout]   --> src/exercises/traffic_light.rs:47:8
[INFO] [stdout]    |
[INFO] [stdout] 46 | impl TrafficLight<Green> {
[INFO] [stdout]    | ------------------------ method in this implementation
[INFO] [stdout] 47 |     fn turn_yellow(self) -> TrafficLight<Yellow> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `turn_red` is never used
[INFO] [stdout]   --> src/exercises/traffic_light.rs:57:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl TrafficLight<Yellow> {
[INFO] [stdout]    | ------------------------- method in this implementation
[INFO] [stdout] 57 |     fn turn_red(self) -> TrafficLight<Red> {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `recover` is never used
[INFO] [stdout]   --> src/exercises/traffic_light.rs:67:8
[INFO] [stdout]    |
[INFO] [stdout] 66 | impl TrafficLight<FlashingRed> {
[INFO] [stdout]    | ------------------------------ method in this implementation
[INFO] [stdout] 67 |     fn recover(self) -> TrafficLight<Red> {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Emergency` is never used
[INFO] [stdout]   --> src/exercises/traffic_light.rs:80:7
[INFO] [stdout]    |
[INFO] [stdout] 80 | trait Emergency {
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `LightStatus` is never used
[INFO] [stdout]    --> src/exercises/traffic_light.rs:100:7
[INFO] [stdout]     |
[INFO] [stdout] 100 | trait LightStatus: fmt::Display {
[INFO] [stdout]     |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Intersection` is never constructed
[INFO] [stdout]    --> src/exercises/traffic_light.rs:155:8
[INFO] [stdout]     |
[INFO] [stdout] 155 | struct Intersection {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add`, `all_stopped`, and `report` are never used
[INFO] [stdout]    --> src/exercises/traffic_light.rs:160:8
[INFO] [stdout]     |
[INFO] [stdout] 159 | impl Intersection {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 160 |     fn new() -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     fn add(&mut self, light: Box<dyn LightStatus>) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |     fn all_stopped(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     fn report(&self) {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]    --> src/exercises/traffic_light.rs:183:8
[INFO] [stdout]     |
[INFO] [stdout] 183 | pub fn run() {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/exercises/budget.rs:179:17
[INFO] [stdout]     |
[INFO] [stdout] 179 |                 save(&entries); //todo
[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] 179 |                 let _ = save(&entries); //todo
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fibonacci_recursive` is never used
[INFO] [stdout]  --> src/exercises/fibonacci.rs:1:4
[INFO] [stdout]   |
[INFO] [stdout] 1 | fn fibonacci_recursive(n: usize) -> u128 {
[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 `fibonacci` is never used
[INFO] [stdout]  --> src/exercises/fibonacci.rs:9:4
[INFO] [stdout]   |
[INFO] [stdout] 9 | fn fibonacci(n: usize) -> u128 {
[INFO] [stdout]   |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> src/exercises/fibonacci.rs:27:8
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub fn run() {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BOARD_SIZE` is never used
[INFO] [stdout]  --> src/exercises/tic_tac_toe.rs:3:7
[INFO] [stdout]   |
[INFO] [stdout] 3 | const BOARD_SIZE: usize = 3;
[INFO] [stdout]   |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EMPTY` is never used
[INFO] [stdout]  --> src/exercises/tic_tac_toe.rs:4:7
[INFO] [stdout]   |
[INFO] [stdout] 4 | const EMPTY: char = '-';
[INFO] [stdout]   |       ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `toggle_player` is never used
[INFO] [stdout]  --> src/exercises/tic_tac_toe.rs:6:4
[INFO] [stdout]   |
[INFO] [stdout] 6 | fn toggle_player(player: char) -> char {
[INFO] [stdout]   |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `display` is never used
[INFO] [stdout]   --> src/exercises/tic_tac_toe.rs:14:4
[INFO] [stdout]    |
[INFO] [stdout] 14 | fn display(board: [[char; BOARD_SIZE]; BOARD_SIZE]) {
[INFO] [stdout]    |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_valid_move` is never used
[INFO] [stdout]   --> src/exercises/tic_tac_toe.rs:27:4
[INFO] [stdout]    |
[INFO] [stdout] 27 | fn is_valid_move(board: [[char; BOARD_SIZE]; BOARD_SIZE], field: usize) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_move` is never used
[INFO] [stdout]   --> src/exercises/tic_tac_toe.rs:36:4
[INFO] [stdout]    |
[INFO] [stdout] 36 | fn make_move(board: &mut [[char; BOARD_SIZE]; BOARD_SIZE], field: usize, player: char) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_board_full` is never used
[INFO] [stdout]   --> src/exercises/tic_tac_toe.rs:47:4
[INFO] [stdout]    |
[INFO] [stdout] 47 | fn is_board_full(board: [[char; BOARD_SIZE]; BOARD_SIZE]) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_winner` is never used
[INFO] [stdout]   --> src/exercises/tic_tac_toe.rs:62:4
[INFO] [stdout]    |
[INFO] [stdout] 62 | fn is_winner(board: [[char; BOARD_SIZE]; BOARD_SIZE], player: char) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_field` is never used
[INFO] [stdout]    --> src/exercises/tic_tac_toe.rs:122:4
[INFO] [stdout]     |
[INFO] [stdout] 122 | fn read_field() -> usize {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]    --> src/exercises/tic_tac_toe.rs:129:8
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub fn run() {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EUR` is never used
[INFO] [stdout]  --> src/exercises/money.rs:1:7
[INFO] [stdout]   |
[INFO] [stdout] 1 | const EUR: &str = "EUR";
[INFO] [stdout]   |       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLN` is never used
[INFO] [stdout]  --> src/exercises/money.rs:2:7
[INFO] [stdout]   |
[INFO] [stdout] 2 | const PLN: &str = "PLN";
[INFO] [stdout]   |       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MonetaryAmount` is never constructed
[INFO] [stdout]  --> src/exercises/money.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | struct MonetaryAmount<'a> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `add`, `subtract`, `check_currency`, `convert`, and `new` are never used
[INFO] [stdout]   --> src/exercises/money.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl<'a> MonetaryAmount<'a> {
[INFO] [stdout]    | --------------------------- associated items in this implementation
[INFO] [stdout] 11 |     fn add(&mut self, other: &MonetaryAmount) -> Result<(), String> {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 17 |     fn subtract(&mut self, other: &MonetaryAmount) -> Result<(), String> {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     fn check_currency(&self, other: &MonetaryAmount) -> Result<(), String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     fn convert(&mut self, exchange_rate: f64, currency: &'a str) {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     fn new(value: f64, currency: &'a str) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> src/exercises/money.rs:43:8
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub fn run() {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Currency` is never used
[INFO] [stdout]  --> src/exercises/money_with_enums.rs:4:6
[INFO] [stdout]   |
[INFO] [stdout] 4 | enum Currency {
[INFO] [stdout]   |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MonetaryAmount` is never constructed
[INFO] [stdout]   --> src/exercises/money_with_enums.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | struct MonetaryAmount {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `add_value`, `subtract_value`, `check_currency`, `convert`, and `new` are never used
[INFO] [stdout]   --> src/exercises/money_with_enums.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl MonetaryAmount {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 16 |     fn add_value(&self, other: &MonetaryAmount) -> Result<MonetaryAmount, String> {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     fn subtract_value(&self, other: &MonetaryAmount) -> Result<MonetaryAmount, String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     fn check_currency(&self, other: &MonetaryAmount) -> Result<&MonetaryAmount, String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     fn convert(amount: &MonetaryAmount, exchange_rate: f64, currency: Currency) -> Self {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     fn new(value: f64, currency: Currency) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> src/exercises/money_with_enums.rs:64:8
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub fn run() {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SEPARATOR` is never used
[INFO] [stdout]  --> src/exercises/echo.rs:3:7
[INFO] [stdout]   |
[INFO] [stdout] 3 | const SEPARATOR: &str = " ";
[INFO] [stdout]   |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]  --> src/exercises/echo.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn run() {
[INFO] [stdout]   |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ARG_PREFIX` is never used
[INFO] [stdout]  --> src/exercises/cat.rs:6:7
[INFO] [stdout]   |
[INFO] [stdout] 6 | const ARG_PREFIX: &str = "-";
[INFO] [stdout]   |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NUMBERING_ARG` is never used
[INFO] [stdout]  --> src/exercises/cat.rs:7:7
[INFO] [stdout]   |
[INFO] [stdout] 7 | const NUMBERING_ARG: &str = "-n";
[INFO] [stdout]   |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NUMBERING_IGNORE_EMPTY_ARG` is never used
[INFO] [stdout]  --> src/exercises/cat.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const NUMBERING_IGNORE_EMPTY_ARG: &str = "-nb";
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Mode` is never used
[INFO] [stdout]   --> src/exercises/cat.rs:10:6
[INFO] [stdout]    |
[INFO] [stdout] 10 | enum Mode {
[INFO] [stdout]    |      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_config` is never used
[INFO] [stdout]   --> src/exercises/cat.rs:27:4
[INFO] [stdout]    |
[INFO] [stdout] 27 | fn get_config() -> (Vec<String>, Vec<String>) {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_help` is never used
[INFO] [stdout]   --> src/exercises/cat.rs:33:4
[INFO] [stdout]    |
[INFO] [stdout] 33 | fn show_help() {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Printer` is never used
[INFO] [stdout]   --> src/exercises/cat.rs:41:6
[INFO] [stdout]    |
[INFO] [stdout] 41 | type Printer = fn(usize, line: &str);
[INFO] [stdout]    |      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print` is never used
[INFO] [stdout]   --> src/exercises/cat.rs:43:4
[INFO] [stdout]    |
[INFO] [stdout] 43 | fn print(_line_number: usize, line: &str) {
[INFO] [stdout]    |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_with_numbering` is never used
[INFO] [stdout]   --> src/exercises/cat.rs:47:4
[INFO] [stdout]    |
[INFO] [stdout] 47 | fn print_with_numbering(line_number: usize, line: &str) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_with_numbering_ignoring_empty` is never used
[INFO] [stdout]   --> src/exercises/cat.rs:51:4
[INFO] [stdout]    |
[INFO] [stdout] 51 | fn print_with_numbering_ignoring_empty(line_number: usize, line: &str) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cat` is never used
[INFO] [stdout]   --> src/exercises/cat.rs:59:4
[INFO] [stdout]    |
[INFO] [stdout] 59 | fn cat(filenames: &Vec<String>, mode: &Mode) {
[INFO] [stdout]    |    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> src/exercises/cat.rs:80:8
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub fn run() {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FileStats` is never constructed
[INFO] [stdout]  --> src/exercises/wc.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | struct FileStats {
[INFO] [stdout]   |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_help` is never used
[INFO] [stdout]   --> src/exercises/wc.rs:25:4
[INFO] [stdout]    |
[INFO] [stdout] 25 | fn show_help() {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `wc` is never used
[INFO] [stdout]   --> src/exercises/wc.rs:30:4
[INFO] [stdout]    |
[INFO] [stdout] 30 | fn wc(paths: &Vec<String>) {
[INFO] [stdout]    |    ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_file_stats` is never used
[INFO] [stdout]   --> src/exercises/wc.rs:42:4
[INFO] [stdout]    |
[INFO] [stdout] 42 | fn get_file_stats(file: &File) -> Result<FileStats, Box<dyn Error>> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> src/exercises/wc.rs:60:8
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub fn run() {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SEPARATOR` is never used
[INFO] [stdout]  --> src/exercises/find.rs:5:7
[INFO] [stdout]   |
[INFO] [stdout] 5 | const SEPARATOR: char = ',';
[INFO] [stdout]   |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ElementType` is never used
[INFO] [stdout]  --> src/exercises/find.rs:7:6
[INFO] [stdout]   |
[INFO] [stdout] 7 | enum ElementType {
[INFO] [stdout]   |      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_help` is never used
[INFO] [stdout]   --> src/exercises/find.rs:23:4
[INFO] [stdout]    |
[INFO] [stdout] 23 | fn show_help() {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_type_of` is never used
[INFO] [stdout]   --> src/exercises/find.rs:31:4
[INFO] [stdout]    |
[INFO] [stdout] 31 | fn is_type_of(entry: &DirEntry, element_type: &ElementType) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find` is never used
[INFO] [stdout]   --> src/exercises/find.rs:40:4
[INFO] [stdout]    |
[INFO] [stdout] 40 | fn find(regex: &Regex, types: &[ElementType], paths: &[String]) -> Vec<String> {
[INFO] [stdout]    |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> src/exercises/find.rs:59:8
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub fn run() {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_help` is never used
[INFO] [stdout]  --> src/exercises/grep_classic.rs:6:4
[INFO] [stdout]   |
[INFO] [stdout] 6 | fn show_help() {
[INFO] [stdout]   |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_file_paths` is never used
[INFO] [stdout]   --> src/exercises/grep_classic.rs:13:4
[INFO] [stdout]    |
[INFO] [stdout] 13 | fn find_file_paths(path: &str) -> Vec<String> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_matching_lines` is never used
[INFO] [stdout]   --> src/exercises/grep_classic.rs:24:4
[INFO] [stdout]    |
[INFO] [stdout] 24 | fn get_matching_lines(text: &str, file_path: &str) -> Vec<(usize, String)> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_matching_lines` is never used
[INFO] [stdout]   --> src/exercises/grep_classic.rs:40:4
[INFO] [stdout]    |
[INFO] [stdout] 40 | fn print_matching_lines(matching_lines: &[(usize, String)]) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `grep` is never used
[INFO] [stdout]   --> src/exercises/grep_classic.rs:46:4
[INFO] [stdout]    |
[INFO] [stdout] 46 | fn grep(text: &String, paths: &[String]) {
[INFO] [stdout]    |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> src/exercises/grep_classic.rs:59:8
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub fn run() {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_help` is never used
[INFO] [stdout]   --> src/exercises/grep.rs:10:4
[INFO] [stdout]    |
[INFO] [stdout] 10 | fn show_help() {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_lines_with_text` is never used
[INFO] [stdout]   --> src/exercises/grep.rs:17:4
[INFO] [stdout]    |
[INFO] [stdout] 17 | fn get_lines_with_text(text: &str, file_path: &str) -> Vec<String> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `grep` is never used
[INFO] [stdout]   --> src/exercises/grep.rs:33:4
[INFO] [stdout]    |
[INFO] [stdout] 33 | fn grep(text: &str, paths: &[String]) -> HashMap<String, Vec<String>> {
[INFO] [stdout]    |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> src/exercises/grep.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn run() {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FILE_NAME` is never used
[INFO] [stdout]   --> src/exercises/budget.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const FILE_NAME: &str = "budget.csv";
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SEPARATOR` is never used
[INFO] [stdout]   --> src/exercises/budget.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | const SEPARATOR: &str = ";";
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FIELD_COUNT` is never used
[INFO] [stdout]   --> src/exercises/budget.rs:12:7
[INFO] [stdout]    |
[INFO] [stdout] 12 | const FIELD_COUNT: usize = 3;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WITHDRAW` is never used
[INFO] [stdout]   --> src/exercises/budget.rs:13:7
[INFO] [stdout]    |
[INFO] [stdout] 13 | const WITHDRAW: &str = "Withdraw";
[INFO] [stdout]    |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEPOSIT` is never used
[INFO] [stdout]   --> src/exercises/budget.rs:14:7
[INFO] [stdout]    |
[INFO] [stdout] 14 | const DEPOSIT: &str = "Deposit";
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Entry` is never constructed
[INFO] [stdout]   --> src/exercises/budget.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | struct Entry {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Operation` is never used
[INFO] [stdout]   --> src/exercises/budget.rs:50:6
[INFO] [stdout]    |
[INFO] [stdout] 50 | enum Operation {
[INFO] [stdout]    |      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AppError` is never used
[INFO] [stdout]   --> src/exercises/budget.rs:77:6
[INFO] [stdout]    |
[INFO] [stdout] 77 | enum AppError {
[INFO] [stdout]    |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load` is never used
[INFO] [stdout]    --> src/exercises/budget.rs:113:4
[INFO] [stdout]     |
[INFO] [stdout] 113 | fn load() -> Result<Vec<Entry>, AppError> {
[INFO] [stdout]     |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `save` is never used
[INFO] [stdout]    --> src/exercises/budget.rs:123:4
[INFO] [stdout]     |
[INFO] [stdout] 123 | fn save(entries: &[Entry]) -> Result<(), AppError> {
[INFO] [stdout]     |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_summary` is never used
[INFO] [stdout]    --> src/exercises/budget.rs:133:4
[INFO] [stdout]     |
[INFO] [stdout] 133 | fn show_summary(entries: &[Entry]) {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]    --> src/exercises/budget.rs:163:8
[INFO] [stdout]     |
[INFO] [stdout] 163 | pub fn run()  {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BOARD_SIZE` is never used
[INFO] [stdout]  --> src/exercises/tic_tac_toe_v2.rs:4:7
[INFO] [stdout]   |
[INFO] [stdout] 4 | const BOARD_SIZE: usize = 3;
[INFO] [stdout]   |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FIELD_COUNT` is never used
[INFO] [stdout]  --> src/exercises/tic_tac_toe_v2.rs:5:7
[INFO] [stdout]   |
[INFO] [stdout] 5 | const FIELD_COUNT: usize = BOARD_SIZE * BOARD_SIZE;
[INFO] [stdout]   |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Player` is never used
[INFO] [stdout]  --> src/exercises/tic_tac_toe_v2.rs:8:6
[INFO] [stdout]   |
[INFO] [stdout] 8 | enum Player {
[INFO] [stdout]   |      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `toggle` is never used
[INFO] [stdout]   --> src/exercises/tic_tac_toe_v2.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl Player {
[INFO] [stdout]    | ----------- method in this implementation
[INFO] [stdout] 14 |     fn toggle(self) -> Player {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Cell` is never used
[INFO] [stdout]   --> src/exercises/tic_tac_toe_v2.rs:33:6
[INFO] [stdout]    |
[INFO] [stdout] 33 | enum Cell {
[INFO] [stdout]    |      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MoveError` is never used
[INFO] [stdout]   --> src/exercises/tic_tac_toe_v2.rs:48:6
[INFO] [stdout]    |
[INFO] [stdout] 48 | enum MoveError {
[INFO] [stdout]    |      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Board` is never constructed
[INFO] [stdout]   --> src/exercises/tic_tac_toe_v2.rs:64:8
[INFO] [stdout]    |
[INFO] [stdout] 64 | struct Board {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `make_move`, `is_full`, and `is_winner` are never used
[INFO] [stdout]   --> src/exercises/tic_tac_toe_v2.rs:69:8
[INFO] [stdout]    |
[INFO] [stdout] 68 | impl Board {
[INFO] [stdout]    | ---------- associated items in this implementation
[INFO] [stdout] 69 |     fn new() -> Board {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     fn make_move(&mut self, field: usize, player: Player) -> Result<(), MoveError> {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 87 |     fn is_full(&self) -> bool {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 94 |     fn is_winner(&self, player: Player) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `InputError` is never used
[INFO] [stdout]    --> src/exercises/tic_tac_toe_v2.rs:122:6
[INFO] [stdout]     |
[INFO] [stdout] 122 | enum InputError {
[INFO] [stdout]     |      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_field` is never used
[INFO] [stdout]    --> src/exercises/tic_tac_toe_v2.rs:146:4
[INFO] [stdout]     |
[INFO] [stdout] 146 | fn read_field() -> Result<usize, InputError> {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]    --> src/exercises/tic_tac_toe_v2.rs:159:8
[INFO] [stdout]     |
[INFO] [stdout] 159 | pub fn run() {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_args` is never used
[INFO] [stdout]  --> src/exercises/util.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn get_args() -> Vec<String> {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert` is never used
[INFO] [stdout]  --> src/exercises/util.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn assert<T>(value: T, predicate: impl Fn(T) -> bool, on_failure: impl Fn()) {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_not_empty` is never used
[INFO] [stdout]   --> src/exercises/util.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub fn is_not_empty<T>(vec: &[T]) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `min_length` is never used
[INFO] [stdout]   --> src/exercises/util.rs:19:8
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub fn min_length<T>(length: usize) -> impl Fn(&Vec<T>) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `drop` is never used
[INFO] [stdout]   --> src/exercises/util.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub fn drop<T>(data: Vec<T>, count: usize) -> Vec<T> {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WorkEntry` is never constructed
[INFO] [stdout]   --> src/exercises/employees.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | struct WorkEntry {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_csv` is never used
[INFO] [stdout]   --> src/exercises/employees.rs:17:4
[INFO] [stdout]    |
[INFO] [stdout] 17 | fn read_csv(path: &str) -> Result<Vec<WorkEntry>, Box<dyn Error>> {
[INFO] [stdout]    |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `analyze` is never used
[INFO] [stdout]   --> src/exercises/employees.rs:35:4
[INFO] [stdout]    |
[INFO] [stdout] 35 | fn analyze(entries: Vec<WorkEntry>) -> HashMap<String, (Duration, usize, Vec<String>)> {
[INFO] [stdout]    |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_report` is never used
[INFO] [stdout]   --> src/exercises/employees.rs:56:4
[INFO] [stdout]    |
[INFO] [stdout] 56 | fn write_report(
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `main` is never used
[INFO] [stdout]   --> src/exercises/employees.rs:81:4
[INFO] [stdout]    |
[INFO] [stdout] 81 | fn main() -> Result<(), Box<dyn Error>> {
[INFO] [stdout]    |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_prime` is never used
[INFO] [stdout]  --> src/exercises/pipeline.rs:4:4
[INFO] [stdout]   |
[INFO] [stdout] 4 | fn is_prime(n: u64) -> bool {
[INFO] [stdout]   |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> src/exercises/pipeline.rs:24:8
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub fn run() {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `count_words` is never used
[INFO] [stdout]  --> src/exercises/word_counter.rs:5:4
[INFO] [stdout]   |
[INFO] [stdout] 5 | fn count_words(text: &str) -> HashMap<String, usize> {
[INFO] [stdout]   |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `merge_into` is never used
[INFO] [stdout]   --> src/exercises/word_counter.rs:19:4
[INFO] [stdout]    |
[INFO] [stdout] 19 | fn merge_into(target: &mut HashMap<String, usize>, source: HashMap<String, usize>) {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> src/exercises/word_counter.rs:25:8
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub fn run() {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `scoped_threads_and_synchronization` is never used
[INFO] [stdout]  --> src/exercises/example.rs:5:4
[INFO] [stdout]   |
[INFO] [stdout] 5 | fn scoped_threads_and_synchronization(chunks: Vec<String>) {
[INFO] [stdout]   |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Link` is never used
[INFO] [stdout]  --> src/exercises/linked_lists.rs:5:6
[INFO] [stdout]   |
[INFO] [stdout] 5 | type Link<T> = Option<Box<Node<T>>>;
[INFO] [stdout]   |      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Node` is never constructed
[INFO] [stdout]  --> src/exercises/linked_lists.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | struct Node<T> {
[INFO] [stdout]   |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `List` is never constructed
[INFO] [stdout]   --> src/exercises/linked_lists.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | struct List<T> {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `push`, `pop`, and `print` are never used
[INFO] [stdout]   --> src/exercises/linked_lists.rs:19:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl <T: Display> List<T> {
[INFO] [stdout]    | ------------------------- associated items in this implementation
[INFO] [stdout] 19 |     fn new() -> List<T> {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     fn push(&mut self, element: T) {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     fn pop(&mut self) -> Option<T> {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     fn print(&self) {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `linked_list` is never used
[INFO] [stdout]   --> src/exercises/linked_lists.rs:45:4
[INFO] [stdout]    |
[INFO] [stdout] 45 | fn linked_list() {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `DoublyLink` is never used
[INFO] [stdout]   --> src/exercises/linked_lists.rs:56:6
[INFO] [stdout]    |
[INFO] [stdout] 56 | type DoublyLink = Option<Rc<RefCell<DoublyNode>>>;
[INFO] [stdout]    |      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DoublyNode` is never constructed
[INFO] [stdout]   --> src/exercises/linked_lists.rs:59:8
[INFO] [stdout]    |
[INFO] [stdout] 59 | struct DoublyNode {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/exercises/linked_lists.rs:66:8
[INFO] [stdout]    |
[INFO] [stdout] 65 | impl DoublyNode {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] 66 |     fn new(element: i32) -> Rc<RefCell<Self>> {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DoublyLinkedList` is never constructed
[INFO] [stdout]   --> src/exercises/linked_lists.rs:77:8
[INFO] [stdout]    |
[INFO] [stdout] 77 | struct DoublyLinkedList {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `push`, `pop`, and `print` are never used
[INFO] [stdout]    --> src/exercises/linked_lists.rs:83:8
[INFO] [stdout]     |
[INFO] [stdout]  82 | impl DoublyLinkedList {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout]  83 |     fn new() -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  90 |     fn push(&mut self, element: i32) {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     fn pop(&mut self) -> Option<i32> {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     fn print(&self) {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `doubly_linked_list` is never used
[INFO] [stdout]    --> src/exercises/linked_lists.rs:137:4
[INFO] [stdout]     |
[INFO] [stdout] 137 | fn doubly_linked_list() {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CycleNode` is never constructed
[INFO] [stdout]    --> src/exercises/linked_lists.rs:163:8
[INFO] [stdout]     |
[INFO] [stdout] 163 | struct CycleNode {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `reference_cycles` is never used
[INFO] [stdout]    --> src/exercises/linked_lists.rs:181:4
[INFO] [stdout]     |
[INFO] [stdout] 181 | fn reference_cycles() {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]    --> src/exercises/linked_lists.rs:259:8
[INFO] [stdout]     |
[INFO] [stdout] 259 | pub fn run() {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Permissions` is never constructed
[INFO] [stdout]    --> src/exercises/bitflags_macro.rs:108:11
[INFO] [stdout]     |
[INFO] [stdout] 108 | bitflags!(Permissions: u8 {
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/exercises/bitflags_macro.rs:17:22
[INFO] [stdout]     |
[INFO] [stdout]  14 |           impl $name {
[INFO] [stdout]     |           ---------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  17 |               const fn empty() -> Self {
[INFO] [stdout]     |                        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  21 |               fn all() -> Self {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout]  25 |               fn contains(self, other: Self) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  29 |               fn insert(&mut self, other: Self) {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  33 |               fn remove(&mut self, other: Self) {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  37 |               fn toggle(&mut self, other: Self) {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  41 |               fn is_empty(self) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  45 |               fn bits(self) -> $repr {
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 | / bitflags!(Permissions: u8 {
[INFO] [stdout] 109 | |     READ    = 0b0001,
[INFO] [stdout]     | |     ^^^^
[INFO] [stdout] 110 | |     WRITE   = 0b0010,
[INFO] [stdout]     | |     ^^^^^
[INFO] [stdout] 111 | |     EXECUTE = 0b0100,
[INFO] [stdout]     | |     ^^^^^^^
[INFO] [stdout] 112 | |     DELETE  = 0b1000,
[INFO] [stdout]     | |     ^^^^^^
[INFO] [stdout] 113 | | });
[INFO] [stdout]     | |__- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FileMode` is never constructed
[INFO] [stdout]    --> src/exercises/bitflags_macro.rs:115:11
[INFO] [stdout]     |
[INFO] [stdout] 115 | bitflags!(FileMode: u16 {
[INFO] [stdout]     |           ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/exercises/bitflags_macro.rs:17:22
[INFO] [stdout]     |
[INFO] [stdout]  14 |           impl $name {
[INFO] [stdout]     |           ---------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  17 |               const fn empty() -> Self {
[INFO] [stdout]     |                        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  21 |               fn all() -> Self {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout]  25 |               fn contains(self, other: Self) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  29 |               fn insert(&mut self, other: Self) {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  33 |               fn remove(&mut self, other: Self) {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  37 |               fn toggle(&mut self, other: Self) {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  41 |               fn is_empty(self) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  45 |               fn bits(self) -> $repr {
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 | / bitflags!(FileMode: u16 {
[INFO] [stdout] 116 | |     OWNER_READ    = 0o400,
[INFO] [stdout]     | |     ^^^^^^^^^^
[INFO] [stdout] 117 | |     OWNER_WRITE   = 0o200,
[INFO] [stdout]     | |     ^^^^^^^^^^^
[INFO] [stdout] 118 | |     OWNER_EXEC    = 0o100,
[INFO] [stdout]     | |     ^^^^^^^^^^
[INFO] [stdout] 119 | |     GROUP_READ    = 0o040,
[INFO] [stdout]     | |     ^^^^^^^^^^
[INFO] [stdout] 120 | |     GROUP_WRITE   = 0o020,
[INFO] [stdout]     | |     ^^^^^^^^^^^
[INFO] [stdout] 121 | |     GROUP_EXEC    = 0o010,
[INFO] [stdout]     | |     ^^^^^^^^^^
[INFO] [stdout] 122 | |     OTHER_READ    = 0o004,
[INFO] [stdout]     | |     ^^^^^^^^^^
[INFO] [stdout] 123 | |     OTHER_WRITE   = 0o002,
[INFO] [stdout]     | |     ^^^^^^^^^^^
[INFO] [stdout] 124 | |     OTHER_EXEC    = 0o001,
[INFO] [stdout]     | |     ^^^^^^^^^^
[INFO] [stdout] 125 | | });
[INFO] [stdout]     | |__- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]    --> src/exercises/bitflags_macro.rs:131:8
[INFO] [stdout]     |
[INFO] [stdout] 131 | pub fn run() {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ColorError` is never used
[INFO] [stdout]  --> src/exercises/color_space.rs:9:6
[INFO] [stdout]   |
[INFO] [stdout] 9 | enum ColorError {
[INFO] [stdout]   |      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Rgb` is never constructed
[INFO] [stdout]   --> src/exercises/color_space.rs:40:8
[INFO] [stdout]    |
[INFO] [stdout] 40 | struct Rgb(u8, u8, u8);
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `brightness`, and `to_grayscale` are never used
[INFO] [stdout]   --> src/exercises/color_space.rs:43:8
[INFO] [stdout]    |
[INFO] [stdout] 42 | impl Rgb {
[INFO] [stdout]    | -------- associated items in this implementation
[INFO] [stdout] 43 |     fn new(r: u8, g: u8, b: u8) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     fn brightness(&self) -> f64 {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     fn to_grayscale(&self) -> Rgb {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HexColor` is never constructed
[INFO] [stdout]   --> src/exercises/color_space.rs:69:8
[INFO] [stdout]    |
[INFO] [stdout] 69 | struct HexColor(String);
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Hsl` is never constructed
[INFO] [stdout]    --> src/exercises/color_space.rs:105:8
[INFO] [stdout]     |
[INFO] [stdout] 105 | struct Hsl(f64, f64, f64); // h, s, l
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ColorSpace` is never used
[INFO] [stdout]    --> src/exercises/color_space.rs:198:7
[INFO] [stdout]     |
[INFO] [stdout] 198 | trait ColorSpace: sealed::Sealed + fmt::Display {
[INFO] [stdout]     |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ColorPaletteExt` is never used
[INFO] [stdout]    --> src/exercises/color_space.rs:277:7
[INFO] [stdout]     |
[INFO] [stdout] 277 | trait ColorPaletteExt {
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `describe_color` is never used
[INFO] [stdout]    --> src/exercises/color_space.rs:309:4
[INFO] [stdout]     |
[INFO] [stdout] 309 | fn describe_color(color: &dyn ColorSpace) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]    --> src/exercises/color_space.rs:318:8
[INFO] [stdout]     |
[INFO] [stdout] 318 | pub fn run() {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Sealed` is never used
[INFO] [stdout]    --> src/exercises/color_space.rs:195:15
[INFO] [stdout]     |
[INFO] [stdout] 195 |     pub trait Sealed {}
[INFO] [stdout]     |               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HELLO_HTML` is never used
[INFO] [stdout]  --> src/exercises/http_server.rs:7:7
[INFO] [stdout]   |
[INFO] [stdout] 7 | const HELLO_HTML: &str = "<!DOCTYPE html>\
[INFO] [stdout]   |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NOT_FOUND_HTML` is never used
[INFO] [stdout]   --> src/exercises/http_server.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | const NOT_FOUND_HTML: &str = "<!DOCTYPE html>\
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Job` is never used
[INFO] [stdout]   --> src/exercises/http_server.rs:15:6
[INFO] [stdout]    |
[INFO] [stdout] 15 | type Job = Box<dyn FnOnce() + Send + 'static>;
[INFO] [stdout]    |      ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ThreadPool` is never constructed
[INFO] [stdout]   --> src/exercises/http_server.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | struct ThreadPool {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `execute` are never used
[INFO] [stdout]   --> src/exercises/http_server.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl ThreadPool {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 23 |     fn new(size: usize) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     fn execute<F>(&self, f: F)
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Worker` is never constructed
[INFO] [stdout]   --> src/exercises/http_server.rs:58:8
[INFO] [stdout]    |
[INFO] [stdout] 58 | struct Worker {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/exercises/http_server.rs:64:8
[INFO] [stdout]    |
[INFO] [stdout] 63 | impl Worker {
[INFO] [stdout]    | ----------- associated function in this implementation
[INFO] [stdout] 64 |     fn new(id: usize, receiver: Arc<Mutex<mpsc::Receiver<Job>>>) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_connection` is never used
[INFO] [stdout]   --> src/exercises/http_server.rs:87:4
[INFO] [stdout]    |
[INFO] [stdout] 87 | fn handle_connection(mut stream: TcpStream) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_request` is never used
[INFO] [stdout]    --> src/exercises/http_server.rs:112:4
[INFO] [stdout]     |
[INFO] [stdout] 112 | fn send_request(addr: SocketAddr, path: &str) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]    --> src/exercises/http_server.rs:128:8
[INFO] [stdout]     |
[INFO] [stdout] 128 | pub fn run() {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Permission` is never constructed
[INFO] [stdout]  --> src/exercises/permission_system.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | struct Permission<const R: bool, const W: bool, const X: bool>;
[INFO] [stdout]   |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `ReadOnly` is never used
[INFO] [stdout]   --> src/exercises/permission_system.rs:12:6
[INFO] [stdout]    |
[INFO] [stdout] 12 | type ReadOnly = Permission<true, false, false>;
[INFO] [stdout]    |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `ReadWrite` is never used
[INFO] [stdout]   --> src/exercises/permission_system.rs:13:6
[INFO] [stdout]    |
[INFO] [stdout] 13 | type ReadWrite = Permission<true, true, false>;
[INFO] [stdout]    |      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `ReadExecute` is never used
[INFO] [stdout]   --> src/exercises/permission_system.rs:14:6
[INFO] [stdout]    |
[INFO] [stdout] 14 | type ReadExecute = Permission<true, false, true>;
[INFO] [stdout]    |      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `FullAccess` is never used
[INFO] [stdout]   --> src/exercises/permission_system.rs:15:6
[INFO] [stdout]    |
[INFO] [stdout] 15 | type FullAccess = Permission<true, true, true>;
[INFO] [stdout]    |      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `NoAccess` is never used
[INFO] [stdout]   --> src/exercises/permission_system.rs:16:6
[INFO] [stdout]    |
[INFO] [stdout] 16 | type NoAccess = Permission<false, false, false>;
[INFO] [stdout]    |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FileHandle` is never constructed
[INFO] [stdout]   --> src/exercises/permission_system.rs:34:8
[INFO] [stdout]    |
[INFO] [stdout] 34 | struct FileHandle<P> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `path` is never used
[INFO] [stdout]   --> src/exercises/permission_system.rs:41:8
[INFO] [stdout]    |
[INFO] [stdout] 40 | impl<P> FileHandle<P> {
[INFO] [stdout]    | --------------------- method in this implementation
[INFO] [stdout] 41 |     fn path(&self) -> &str {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `read` is never used
[INFO] [stdout]   --> src/exercises/permission_system.rs:48:8
[INFO] [stdout]    |
[INFO] [stdout] 47 | impl<const W: bool, const X: bool> FileHandle<Permission<true, W, X>> {
[INFO] [stdout]    | --------------------------------------------------------------------- method in this implementation
[INFO] [stdout] 48 |     fn read(&self) -> &str {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `write` is never used
[INFO] [stdout]   --> src/exercises/permission_system.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | impl<const R: bool, const X: bool> FileHandle<Permission<R, true, X>> {
[INFO] [stdout]    | --------------------------------------------------------------------- method in this implementation
[INFO] [stdout] 55 |     fn write(&mut self, data: &str) {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `execute` is never used
[INFO] [stdout]   --> src/exercises/permission_system.rs:62:8
[INFO] [stdout]    |
[INFO] [stdout] 61 | impl<const R: bool, const W: bool> FileHandle<Permission<R, W, true>> {
[INFO] [stdout]    | --------------------------------------------------------------------- method in this implementation
[INFO] [stdout] 62 |     fn execute(&self) -> i32 {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `open_file` is never used
[INFO] [stdout]   --> src/exercises/permission_system.rs:69:4
[INFO] [stdout]    |
[INFO] [stdout] 69 | fn open_file<P>(path: &str, content: &str) -> FileHandle<P> {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UserId` is never constructed
[INFO] [stdout]   --> src/exercises/permission_system.rs:82:8
[INFO] [stdout]    |
[INFO] [stdout] 82 | struct UserId(u32);
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GroupId` is never constructed
[INFO] [stdout]   --> src/exercises/permission_system.rs:85:8
[INFO] [stdout]    |
[INFO] [stdout] 85 | struct GroupId(u32);
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `file_info` is never used
[INFO] [stdout]   --> src/exercises/permission_system.rs:99:4
[INFO] [stdout]    |
[INFO] [stdout] 99 | fn file_info(path: &str, owner: UserId, group: GroupId) -> String {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `PermissionDescExt` is never used
[INFO] [stdout]    --> src/exercises/permission_system.rs:107:7
[INFO] [stdout]     |
[INFO] [stdout] 107 | trait PermissionDescExt {
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Auditable` is never used
[INFO] [stdout]    --> src/exercises/permission_system.rs:140:7
[INFO] [stdout]     |
[INFO] [stdout] 140 | trait Auditable {
[INFO] [stdout]     |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `demo_auditable` is never used
[INFO] [stdout]    --> src/exercises/permission_system.rs:155:4
[INFO] [stdout]     |
[INFO] [stdout] 155 | fn demo_auditable(handle: &dyn Auditable) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]    --> src/exercises/permission_system.rs:159:8
[INFO] [stdout]     |
[INFO] [stdout] 159 | pub fn run() {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Red` is never constructed
[INFO] [stdout]  --> src/exercises/traffic_light.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | struct Red;
[INFO] [stdout]   |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Green` is never constructed
[INFO] [stdout]  --> src/exercises/traffic_light.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | struct Green;
[INFO] [stdout]   |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Yellow` is never constructed
[INFO] [stdout]  --> src/exercises/traffic_light.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | struct Yellow;
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FlashingRed` is never constructed
[INFO] [stdout]   --> src/exercises/traffic_light.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | struct FlashingRed {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TrafficLight` is never constructed
[INFO] [stdout]   --> src/exercises/traffic_light.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | struct TrafficLight<S> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `turn_green` are never used
[INFO] [stdout]   --> src/exercises/traffic_light.rs:29:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl TrafficLight<Red> {
[INFO] [stdout]    | ---------------------- associated items in this implementation
[INFO] [stdout] 29 |     fn new(name: &str) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     fn turn_green(self) -> TrafficLight<Green> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `turn_yellow` is never used
[INFO] [stdout]   --> src/exercises/traffic_light.rs:47:8
[INFO] [stdout]    |
[INFO] [stdout] 46 | impl TrafficLight<Green> {
[INFO] [stdout]    | ------------------------ method in this implementation
[INFO] [stdout] 47 |     fn turn_yellow(self) -> TrafficLight<Yellow> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `turn_red` is never used
[INFO] [stdout]   --> src/exercises/traffic_light.rs:57:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl TrafficLight<Yellow> {
[INFO] [stdout]    | ------------------------- method in this implementation
[INFO] [stdout] 57 |     fn turn_red(self) -> TrafficLight<Red> {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `recover` is never used
[INFO] [stdout]   --> src/exercises/traffic_light.rs:67:8
[INFO] [stdout]    |
[INFO] [stdout] 66 | impl TrafficLight<FlashingRed> {
[INFO] [stdout]    | ------------------------------ method in this implementation
[INFO] [stdout] 67 |     fn recover(self) -> TrafficLight<Red> {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Emergency` is never used
[INFO] [stdout]   --> src/exercises/traffic_light.rs:80:7
[INFO] [stdout]    |
[INFO] [stdout] 80 | trait Emergency {
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `LightStatus` is never used
[INFO] [stdout]    --> src/exercises/traffic_light.rs:100:7
[INFO] [stdout]     |
[INFO] [stdout] 100 | trait LightStatus: fmt::Display {
[INFO] [stdout]     |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Intersection` is never constructed
[INFO] [stdout]    --> src/exercises/traffic_light.rs:155:8
[INFO] [stdout]     |
[INFO] [stdout] 155 | struct Intersection {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add`, `all_stopped`, and `report` are never used
[INFO] [stdout]    --> src/exercises/traffic_light.rs:160:8
[INFO] [stdout]     |
[INFO] [stdout] 159 | impl Intersection {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 160 |     fn new() -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     fn add(&mut self, light: Box<dyn LightStatus>) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |     fn all_stopped(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     fn report(&self) {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]    --> src/exercises/traffic_light.rs:183:8
[INFO] [stdout]     |
[INFO] [stdout] 183 | pub fn run() {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/exercises/budget.rs:179:17
[INFO] [stdout]     |
[INFO] [stdout] 179 |                 save(&entries); //todo
[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] 179 |                 let _ = save(&entries); //todo
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `a`
[INFO] [stdout]    --> src/basic/mod_002_data_types.rs:529:9
[INFO] [stdout]     |
[INFO] [stdout] 529 |     let a = info;
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_a`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x2`
[INFO] [stdout]    --> src/basic/mod_006_ownership_and_lifetimes.rs:427:9
[INFO] [stdout]     |
[INFO] [stdout] 427 |     let x2 = x1; // copy
[INFO] [stdout]     |         ^^ help: if this is intentional, prefix it with an underscore: `_x2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t2`
[INFO] [stdout]    --> src/basic/mod_006_ownership_and_lifetimes.rs:430:9
[INFO] [stdout]     |
[INFO] [stdout] 430 |     let t2 = t1; // move
[INFO] [stdout]     |         ^^ help: if this is intentional, prefix it with an underscore: `_t2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `result`
[INFO] [stdout]    --> src/basic/mod_007_structs_enums_and_collections.rs:854:9
[INFO] [stdout]     |
[INFO] [stdout] 854 |     let result = parse_and_double("21")?;
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `parsed`
[INFO] [stdout]    --> src/basic/mod_007_structs_enums_and_collections.rs:964:9
[INFO] [stdout]     |
[INFO] [stdout] 964 |     let parsed: Result<i32, _> = "42".parse();
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_parsed`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `err`
[INFO] [stdout]    --> src/exercises/budget.rs:181:17
[INFO] [stdout]     |
[INFO] [stdout] 181 |             Err(err) => {
[INFO] [stdout]     |                 ^^^ help: if this is intentional, prefix it with an underscore: `_err`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `x` is never read
[INFO] [stdout]    --> src/basic/mod_006_ownership_and_lifetimes.rs:433:9
[INFO] [stdout]     |
[INFO] [stdout] 432 |     struct Point {
[INFO] [stdout]     |            ----- field in this struct
[INFO] [stdout] 433 |         x: 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: field `x` is never read
[INFO] [stdout]    --> src/basic/mod_006_ownership_and_lifetimes.rs:445:9
[INFO] [stdout]     |
[INFO] [stdout] 444 |     struct Point1 {
[INFO] [stdout]     |            ------ field in this struct
[INFO] [stdout] 445 |         x: i32,
[INFO] [stdout]     |         ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Point1` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Point3` is never constructed
[INFO] [stdout]    --> src/basic/mod_006_ownership_and_lifetimes.rs:456:12
[INFO] [stdout]     |
[INFO] [stdout] 456 |     struct Point3 {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `B` is never constructed
[INFO] [stdout]    --> src/basic/mod_006_ownership_and_lifetimes.rs:590:8
[INFO] [stdout]     |
[INFO] [stdout] 590 | struct B<'b> {
[INFO] [stdout]     |        ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Invertible` is never used
[INFO] [stdout]    --> src/advanced/mod_001_idioms_and_patterns.rs:362:7
[INFO] [stdout]     |
[INFO] [stdout] 362 | trait Invertible {
[INFO] [stdout]     |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `launching_and_coordinating_threads` is never used
[INFO] [stdout]   --> src/advanced/mod_003_threads_and_concurrency.rs:96:4
[INFO] [stdout]    |
[INFO] [stdout] 96 | fn launching_and_coordinating_threads() {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_and_sync` is never used
[INFO] [stdout]    --> src/advanced/mod_003_threads_and_concurrency.rs:251:4
[INFO] [stdout]     |
[INFO] [stdout] 251 | fn send_and_sync() {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `safe_state_sharing` is never used
[INFO] [stdout]    --> src/advanced/mod_003_threads_and_concurrency.rs:504:4
[INFO] [stdout]     |
[INFO] [stdout] 504 | fn safe_state_sharing() {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `scoped_threads_and_synchronization` is never used
[INFO] [stdout]    --> src/advanced/mod_003_threads_and_concurrency.rs:827:4
[INFO] [stdout]     |
[INFO] [stdout] 827 | fn scoped_threads_and_synchronization() {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `magnitude` is never used
[INFO] [stdout]    --> src/advanced/mod_005a_ffi_c.rs:379:8
[INFO] [stdout]     |
[INFO] [stdout] 378 | impl RustVec2 {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] 379 |     fn magnitude(&self) -> c_double {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `subtract` is never used
[INFO] [stdout]   --> src/exercises/money.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl<'a> MonetaryAmount<'a> {
[INFO] [stdout]    | --------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 17 |     fn subtract(&mut self, other: &MonetaryAmount) -> Result<(), String> {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `subtract_value` is never used
[INFO] [stdout]   --> src/exercises/money_with_enums.rs:24:8
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl MonetaryAmount {
[INFO] [stdout]    | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 24 |     fn subtract_value(&self, other: &MonetaryAmount) -> Result<MonetaryAmount, String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `drop` is never used
[INFO] [stdout]   --> src/exercises/util.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub fn drop<T>(data: Vec<T>, count: usize) -> Vec<T> {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WorkEntry` is never constructed
[INFO] [stdout]   --> src/exercises/employees.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | struct WorkEntry {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_csv` is never used
[INFO] [stdout]   --> src/exercises/employees.rs:17:4
[INFO] [stdout]    |
[INFO] [stdout] 17 | fn read_csv(path: &str) -> Result<Vec<WorkEntry>, Box<dyn Error>> {
[INFO] [stdout]    |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `analyze` is never used
[INFO] [stdout]   --> src/exercises/employees.rs:35:4
[INFO] [stdout]    |
[INFO] [stdout] 35 | fn analyze(entries: Vec<WorkEntry>) -> HashMap<String, (Duration, usize, Vec<String>)> {
[INFO] [stdout]    |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_report` is never used
[INFO] [stdout]   --> src/exercises/employees.rs:56:4
[INFO] [stdout]    |
[INFO] [stdout] 56 | fn write_report(
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `main` is never used
[INFO] [stdout]   --> src/exercises/employees.rs:81:4
[INFO] [stdout]    |
[INFO] [stdout] 81 | fn main() -> Result<(), Box<dyn Error>> {
[INFO] [stdout]    |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `scoped_threads_and_synchronization` is never used
[INFO] [stdout]  --> src/exercises/example.rs:5:4
[INFO] [stdout]   |
[INFO] [stdout] 5 | fn scoped_threads_and_synchronization(chunks: Vec<String>) {
[INFO] [stdout]   |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `OTHER_WRITE`, `empty`, `insert`, `remove`, and `toggle` are never used
[INFO] [stdout]    --> src/exercises/bitflags_macro.rs:17:22
[INFO] [stdout]     |
[INFO] [stdout]  14 |           impl $name {
[INFO] [stdout]     |           ---------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  17 |               const fn empty() -> Self {
[INFO] [stdout]     |                        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  29 |               fn insert(&mut self, other: Self) {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  33 |               fn remove(&mut self, other: Self) {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  37 |               fn toggle(&mut self, other: Self) {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 | / bitflags!(FileMode: u16 {
[INFO] [stdout] 116 | |     OWNER_READ    = 0o400,
[INFO] [stdout] 117 | |     OWNER_WRITE   = 0o200,
[INFO] [stdout] 118 | |     OWNER_EXEC    = 0o100,
[INFO] [stdout] ...   |
[INFO] [stdout] 123 | |     OTHER_WRITE   = 0o002,
[INFO] [stdout]     | |     ^^^^^^^^^^^
[INFO] [stdout] 124 | |     OTHER_EXEC    = 0o001,
[INFO] [stdout] 125 | | });
[INFO] [stdout]     | |__- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]     --> src/basic/mod_007_structs_enums_and_collections.rs:2288:5
[INFO] [stdout]      |
[INFO] [stdout] 2288 |     result_type();
[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] 2288 |     let _ = result_type();
[INFO] [stdout]      |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/exercises/budget.rs:179:17
[INFO] [stdout]     |
[INFO] [stdout] 179 |                 save(&entries); //todo
[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] 179 |                 let _ = save(&entries); //todo
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 40.65s
[INFO] running `Command { std: "docker" "inspect" "add4622ed029afbb1c981e91337264dede3ff3500bf5269f2bd56d665b1966d2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "add4622ed029afbb1c981e91337264dede3ff3500bf5269f2bd56d665b1966d2", kill_on_drop: false }`
[INFO] [stdout] add4622ed029afbb1c981e91337264dede3ff3500bf5269f2bd56d665b1966d2
