[INFO] cloning repository https://github.com/SAdams601/rust-maelstrom
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/SAdams601/rust-maelstrom" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FSAdams601%2Frust-maelstrom", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FSAdams601%2Frust-maelstrom'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 78e961986b990d5ec373677c791f08ce1f8b8295
[INFO] checking SAdams601/rust-maelstrom against try#b1f2594eac607c1f051534800237eeedb5590a49 for pr-139493-3
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FSAdams601%2Frust-maelstrom" "/workspace/builds/worker-5-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/SAdams601/rust-maelstrom
[INFO] finished tweaking git repo https://github.com/SAdams601/rust-maelstrom
[INFO] tweaked toml for git repo https://github.com/SAdams601/rust-maelstrom written to /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/SAdams601/rust-maelstrom on toolchain b1f2594eac607c1f051534800237eeedb5590a49
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+b1f2594eac607c1f051534800237eeedb5590a49" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/SAdams601/rust-maelstrom 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" "+b1f2594eac607c1f051534800237eeedb5590a49" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+b1f2594eac607c1f051534800237eeedb5590a49" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 2d6a957f76d9bfe92b2f2c18f0ae9c1dc667534e3853fcab069f877e67c7bf07
[INFO] running `Command { std: "docker" "start" "-a" "2d6a957f76d9bfe92b2f2c18f0ae9c1dc667534e3853fcab069f877e67c7bf07", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "2d6a957f76d9bfe92b2f2c18f0ae9c1dc667534e3853fcab069f877e67c7bf07", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2d6a957f76d9bfe92b2f2c18f0ae9c1dc667534e3853fcab069f877e67c7bf07", kill_on_drop: false }`
[INFO] [stdout] 2d6a957f76d9bfe92b2f2c18f0ae9c1dc667534e3853fcab069f877e67c7bf07
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+b1f2594eac607c1f051534800237eeedb5590a49" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] e85c9a32132e8ca7a125419bf26c84c2526aad06391a298a44f71370f389c656
[INFO] running `Command { std: "docker" "start" "-a" "e85c9a32132e8ca7a125419bf26c84c2526aad06391a298a44f71370f389c656", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.93
[INFO] [stderr]    Compiling getrandom v0.2.2
[INFO] [stderr]     Checking json v0.12.4
[INFO] [stderr]     Checking ppv-lite86 v0.2.10
[INFO] [stderr]     Checking shared_lib v0.1.0 (/opt/rustwide/workdir/shared_lib)
[INFO] [stdout] warning: unused import: `json::JsonValue`
[INFO] [stdout]  --> shared_lib/src/read_respond.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use json::JsonValue;
[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: `stderr`
[INFO] [stdout]  --> shared_lib/src/read_respond.rs:3:31
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::io::{Write, BufRead, stderr};
[INFO] [stdout]   |                               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `RecvTimeoutError` and `TryRecvError`
[INFO] [stdout]  --> shared_lib/src/rpc.rs:4:37
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::sync::mpsc::{sync_channel, TryRecvError, Receiver, RecvTimeoutError};
[INFO] [stdout]   |                                     ^^^^^^^^^^^^            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::borrow::Borrow`
[INFO] [stdout]  --> shared_lib/src/rpc.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::borrow::Borrow;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread::JoinHandle`
[INFO] [stdout]  --> shared_lib/src/rpc.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::thread::JoinHandle;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `json::JsonValue`
[INFO] [stdout]  --> shared_lib/src/read_respond.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use json::JsonValue;
[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: `stderr`
[INFO] [stdout]  --> shared_lib/src/read_respond.rs:3:31
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::io::{Write, BufRead, stderr};
[INFO] [stdout]   |                               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `RecvTimeoutError` and `TryRecvError`
[INFO] [stdout]  --> shared_lib/src/rpc.rs:4:37
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::sync::mpsc::{sync_channel, TryRecvError, Receiver, RecvTimeoutError};
[INFO] [stdout]   |                                     ^^^^^^^^^^^^            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::borrow::Borrow`
[INFO] [stdout]  --> shared_lib/src/rpc.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::borrow::Borrow;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread::JoinHandle`
[INFO] [stdout]  --> shared_lib/src/rpc.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::thread::JoinHandle;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `err`
[INFO] [stdout]   --> shared_lib/src/rpc.rs:29:13
[INFO] [stdout]    |
[INFO] [stdout] 29 |         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: irrefutable `while let` pattern
[INFO] [stdout]   --> shared_lib/src/rpc.rs:37:11
[INFO] [stdout]    |
[INFO] [stdout] 37 |     while let rpc_response = send_rpc(state, request_body, "lin-kv").unwrap() {
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this pattern will always match, so the loop will never exit
[INFO] [stdout]    = help: consider instead using a `loop { ... }` with a `let` inside it
[INFO] [stdout]    = note: `#[warn(irrefutable_let_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> shared_lib/src/read_respond.rs:17:17
[INFO] [stdout]    |
[INFO] [stdout] 17 |                 io::stderr().write(format!("Received {}\n", line).as_ref());
[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] 17 |                 let _ = io::stderr().write(format!("Received {}\n", line).as_ref());
[INFO] [stdout]    |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> shared_lib/src/read_respond.rs:23:33
[INFO] [stdout]    |
[INFO] [stdout] 23 | ...                   sender.send(parsed);
[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] 23 |                                 let _ = sender.send(parsed);
[INFO] [stdout]    |                                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> shared_lib/src/message_handler.rs:25:13
[INFO] [stdout]    |
[INFO] [stdout] 25 |             curr_state.get_channel().send(stringify(response));
[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] 25 |             let _ = curr_state.get_channel().send(stringify(response));
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> shared_lib/src/message_handler.rs:38:13
[INFO] [stdout]    |
[INFO] [stdout] 38 |             curr_state.get_channel().send(stringify(response));
[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] 38 |             let _ = curr_state.get_channel().send(stringify(response));
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> shared_lib/src/rpc.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     state.get_channel().send(stringify(request));
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 15 |     let _ = state.get_channel().send(stringify(request));
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> shared_lib/src/rpc.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 |     state.get_channel().send(stringify(request.clone()));
[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] 25 |     let _ = state.get_channel().send(stringify(request.clone()));
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> shared_lib/src/rpc.rs:56:9
[INFO] [stdout]    |
[INFO] [stdout] 56 |         state.get_channel().send(stringify(request));
[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] 56 |         let _ = state.get_channel().send(stringify(request));
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> shared_lib/src/stdio.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     stdout.write_all(msg.as_bytes());
[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] 19 |     let _ = stdout.write_all(msg.as_bytes());
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> shared_lib/src/stdio.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     stdout.write_all("\n".as_bytes());
[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] 20 |     let _ = stdout.write_all("\n".as_bytes());
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> shared_lib/src/stdio.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     stdout.flush();
[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] 21 |     let _ = stdout.flush();
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> shared_lib/src/stdio.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 |     stderr().write(msg.as_bytes());
[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] 25 |     let _ = stderr().write(msg.as_bytes());
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> shared_lib/src/stdio.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     stderr().write(b"\n");
[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] 26 |     let _ = stderr().write(b"\n");
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> shared_lib/src/stdio.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 |     stderr().flush();
[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] 27 |     let _ = stderr().flush();
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `err`
[INFO] [stdout]   --> shared_lib/src/rpc.rs:29:13
[INFO] [stdout]    |
[INFO] [stdout] 29 |         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: irrefutable `while let` pattern
[INFO] [stdout]   --> shared_lib/src/rpc.rs:37:11
[INFO] [stdout]    |
[INFO] [stdout] 37 |     while let rpc_response = send_rpc(state, request_body, "lin-kv").unwrap() {
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this pattern will always match, so the loop will never exit
[INFO] [stdout]    = help: consider instead using a `loop { ... }` with a `let` inside it
[INFO] [stdout]    = note: `#[warn(irrefutable_let_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> shared_lib/src/read_respond.rs:17:17
[INFO] [stdout]    |
[INFO] [stdout] 17 |                 io::stderr().write(format!("Received {}\n", line).as_ref());
[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] 17 |                 let _ = io::stderr().write(format!("Received {}\n", line).as_ref());
[INFO] [stdout]    |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> shared_lib/src/read_respond.rs:23:33
[INFO] [stdout]    |
[INFO] [stdout] 23 | ...                   sender.send(parsed);
[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] 23 |                                 let _ = sender.send(parsed);
[INFO] [stdout]    |                                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> shared_lib/src/message_handler.rs:25:13
[INFO] [stdout]    |
[INFO] [stdout] 25 |             curr_state.get_channel().send(stringify(response));
[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] 25 |             let _ = curr_state.get_channel().send(stringify(response));
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> shared_lib/src/message_handler.rs:38:13
[INFO] [stdout]    |
[INFO] [stdout] 38 |             curr_state.get_channel().send(stringify(response));
[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] 38 |             let _ = curr_state.get_channel().send(stringify(response));
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> shared_lib/src/rpc.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     state.get_channel().send(stringify(request));
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 15 |     let _ = state.get_channel().send(stringify(request));
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> shared_lib/src/rpc.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 |     state.get_channel().send(stringify(request.clone()));
[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] 25 |     let _ = state.get_channel().send(stringify(request.clone()));
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> shared_lib/src/rpc.rs:56:9
[INFO] [stdout]    |
[INFO] [stdout] 56 |         state.get_channel().send(stringify(request));
[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] 56 |         let _ = state.get_channel().send(stringify(request));
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> shared_lib/src/stdio.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     stdout.write_all(msg.as_bytes());
[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] 19 |     let _ = stdout.write_all(msg.as_bytes());
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> shared_lib/src/stdio.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     stdout.write_all("\n".as_bytes());
[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] 20 |     let _ = stdout.write_all("\n".as_bytes());
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> shared_lib/src/stdio.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     stdout.flush();
[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] 21 |     let _ = stdout.flush();
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> shared_lib/src/stdio.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 |     stderr().write(msg.as_bytes());
[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] 25 |     let _ = stderr().write(msg.as_bytes());
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> shared_lib/src/stdio.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     stderr().write(b"\n");
[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] 26 |     let _ = stderr().write(b"\n");
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> shared_lib/src/stdio.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 |     stderr().flush();
[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] 27 |     let _ = stderr().flush();
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking rand_core v0.6.2
[INFO] [stderr]     Checking rand_chacha v0.3.0
[INFO] [stderr]     Checking rand v0.8.4
[INFO] [stderr]     Checking maelstrom v0.1.0 (/opt/rustwide/workdir/maelstrom)
[INFO] [stderr]     Checking raft v0.1.0 (/opt/rustwide/workdir/raft)
[INFO] [stdout] warning: unused import: `node_state::NodeState`
[INFO] [stdout]  --> raft/src/message_handlers/init_handler.rs:2:74
[INFO] [stdout]   |
[INFO] [stdout] 2 | use shared_lib::{error::MaelstromError, message_handler::MessageHandler, node_state::NodeState, message_utils::get_body};
[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: `temporarily_unavailable`
[INFO] [stdout]  --> raft/src/message_handlers/read_handler.rs:4:56
[INFO] [stdout]   |
[INFO] [stdout] 4 | use shared_lib::error::{MaelstromError, DefiniteError, temporarily_unavailable};
[INFO] [stdout]   |                                                        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_in_response_to`
[INFO] [stdout]  --> raft/src/message_handlers/read_handler.rs:5:43
[INFO] [stdout]   |
[INFO] [stdout] 5 | use shared_lib::message_utils::{get_body, get_in_response_to};
[INFO] [stdout]   |                                           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `temporarily_unavailable`
[INFO] [stdout]  --> raft/src/message_handlers/cas_handler.rs:4:56
[INFO] [stdout]   |
[INFO] [stdout] 4 | use shared_lib::error::{MaelstromError, DefiniteError, temporarily_unavailable};
[INFO] [stdout]   |                                                        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_in_response_to`
[INFO] [stdout]  --> raft/src/message_handlers/cas_handler.rs:5:43
[INFO] [stdout]   |
[INFO] [stdout] 5 | use shared_lib::message_utils::{get_body, get_in_response_to};
[INFO] [stdout]   |                                           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `object`
[INFO] [stdout]  --> raft/src/message_handlers/write_handler.rs:3:24
[INFO] [stdout]   |
[INFO] [stdout] 3 | use json::{ JsonValue, object };
[INFO] [stdout]   |                        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `temporarily_unavailable`
[INFO] [stdout]  --> raft/src/message_handlers/write_handler.rs:4:41
[INFO] [stdout]   |
[INFO] [stdout] 4 | use shared_lib::error::{MaelstromError, temporarily_unavailable};
[INFO] [stdout]   |                                         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_in_response_to`
[INFO] [stdout]  --> raft/src/message_handlers/write_handler.rs:5:43
[INFO] [stdout]   |
[INFO] [stdout] 5 | use shared_lib::message_utils::{get_body, get_in_response_to};
[INFO] [stdout]   |                                           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SyncSender` and `sync_channel`
[INFO] [stdout]  --> raft/src/message_handlers/request_vote_handler.rs:8:23
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::sync::mpsc::{SyncSender, sync_channel};
[INFO] [stdout]   |                       ^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DefiniteError`
[INFO] [stdout]  --> raft/src/message_handlers/append_entries_handler.rs:4:41
[INFO] [stdout]   |
[INFO] [stdout] 4 | use shared_lib::error::{MaelstromError, DefiniteError, abort};
[INFO] [stdout]   |                                         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `election_loop`
[INFO] [stdout]  --> raft/src/message_handlers/append_entries_handler.rs:5:44
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::election_state::{ElectionState, election_loop};
[INFO] [stdout]   |                                            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_in_response_to`
[INFO] [stdout]  --> raft/src/message_handlers/append_entries_handler.rs:7:43
[INFO] [stdout]   |
[INFO] [stdout] 7 | use shared_lib::message_utils::{get_body, get_in_response_to};
[INFO] [stdout]   |                                           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Entry`
[INFO] [stdout]  --> raft/src/message_handlers/append_entries_handler.rs:8:18
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::log::{Entry, parse_entries};
[INFO] [stdout]   |                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DefiniteError`
[INFO] [stdout]  --> raft/src/message_handlers/proxy_to_leader.rs:1:25
[INFO] [stdout]   |
[INFO] [stdout] 1 | use shared_lib::error::{DefiniteError, temporarily_unavailable, MaelstromError};
[INFO] [stdout]   |                         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::election_state::State::LEADER`
[INFO] [stdout]  --> raft/src/message_handlers/proxy_to_leader.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::election_state::State::LEADER;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RwLockReadGuard`
[INFO] [stdout]  --> raft/src/raft_node_state.rs:3:32
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::sync::{Mutex, RwLock, RwLockReadGuard};
[INFO] [stdout]   |                                ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `stderr`
[INFO] [stdout]  --> raft/src/raft_node_state.rs:7:15
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::io::{stderr, Write};
[INFO] [stdout]   |               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::election_state::ElectionState`
[INFO] [stdout]  --> raft/src/raft_node_state.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::election_state::ElectionState;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread`
[INFO] [stdout]   --> raft/src/raft_node_state.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::thread;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `shared_lib::stdio::write_log`
[INFO] [stdout]   --> raft/src/raft_node_state.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use shared_lib::stdio::write_log;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread::Thread`
[INFO] [stdout]  --> raft/src/election_state.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::thread::Thread;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `LockResult`, `PoisonError`, and `RwLockReadGuard`
[INFO] [stdout]  --> raft/src/election_state.rs:4:30
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::sync::{RwLock, Arc, LockResult, RwLockReadGuard, PoisonError};
[INFO] [stdout]   |                              ^^^^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `random` and `thread_rng`
[INFO] [stdout]  --> raft/src/election_state.rs:5:17
[INFO] [stdout]   |
[INFO] [stdout] 5 | use rand::{Rng, thread_rng, random, RngCore};
[INFO] [stdout]   |                 ^^^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Deref`
[INFO] [stdout]  --> raft/src/election_state.rs:7:16
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::ops::{Deref};
[INFO] [stdout]   |                ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `node_state::NodeState`
[INFO] [stdout]   --> raft/src/election_state.rs:10:18
[INFO] [stdout]    |
[INFO] [stdout] 10 | use shared_lib::{node_state::NodeState, rpc::{broadcast_rpc, send_rpc}};
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::borrow::Borrow`
[INFO] [stdout]   --> raft/src/election_state.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::borrow::Borrow;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `lazy_static::lazy_static`
[INFO] [stdout]   --> raft/src/election_state.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use lazy_static::lazy_static;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SyncSender`, `TryIter`, `channel`, and `sync_channel`
[INFO] [stdout]   --> raft/src/election_state.rs:15:23
[INFO] [stdout]    |
[INFO] [stdout] 15 | use std::sync::mpsc::{sync_channel, SyncSender, TryIter, TryRecvError, Receiver, channel};
[INFO] [stdout]    |                       ^^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^                          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `shared_lib::error::MaelstromError`
[INFO] [stdout]   --> raft/src/election_state.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use shared_lib::error::MaelstromError;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around index expression
[INFO] [stdout]    --> raft/src/election_state.rs:299:17
[INFO] [stdout]     |
[INFO] [stdout] 299 |         *values[(values.len() - majority)]
[INFO] [stdout]     |                 ^                       ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 299 -         *values[(values.len() - majority)]
[INFO] [stdout] 299 +         *values[values.len() - majority ]
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BufRead`, `Write`, `stderr`, and `stdout`
[INFO] [stdout]  --> raft/src/main.rs:9:15
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::io::{stderr, stdout, BufRead, Write};
[INFO] [stdout]   |               ^^^^^^  ^^^^^^  ^^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::mpsc::SyncSender`
[INFO] [stdout]   --> raft/src/main.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::sync::mpsc::SyncSender;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `io`
[INFO] [stdout]   --> raft/src/main.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::{io, thread};
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `io::prelude::*`
[INFO] [stdout]   --> raft/src/main.rs:14:33
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::{collections::HashMap, io::prelude::*, sync::mpsc::sync_channel};
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `shared_lib::message_utils::get_message_type`
[INFO] [stdout]   --> raft/src/main.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use shared_lib::message_utils::get_message_type;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `json::JsonValue`
[INFO] [stdout]   --> raft/src/main.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use json::JsonValue;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary braces around block return value
[INFO] [stdout]   --> raft/src/main.rs:45:62
[INFO] [stdout]    |
[INFO] [stdout] 45 |     static ref ELECTION_STATE: Arc<ElectionState<'static>> = {election_state::start(&*NODE_STATE)};
[INFO] [stdout]    |                                                              ^                                   ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_braces)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these braces
[INFO] [stdout]    |
[INFO] [stdout] 45 -     static ref ELECTION_STATE: Arc<ElectionState<'static>> = {election_state::start(&*NODE_STATE)};
[INFO] [stdout] 45 +     static ref ELECTION_STATE: Arc<ElectionState<'static>> = election_state::start(&*NODE_STATE) ;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `node_state::NodeState`
[INFO] [stdout]  --> raft/src/message_handlers/init_handler.rs:2:74
[INFO] [stdout]   |
[INFO] [stdout] 2 | use shared_lib::{error::MaelstromError, message_handler::MessageHandler, node_state::NodeState, message_utils::get_body};
[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: `temporarily_unavailable`
[INFO] [stdout]  --> raft/src/message_handlers/read_handler.rs:4:56
[INFO] [stdout]   |
[INFO] [stdout] 4 | use shared_lib::error::{MaelstromError, DefiniteError, temporarily_unavailable};
[INFO] [stdout]   |                                                        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_in_response_to`
[INFO] [stdout]  --> raft/src/message_handlers/read_handler.rs:5:43
[INFO] [stdout]   |
[INFO] [stdout] 5 | use shared_lib::message_utils::{get_body, get_in_response_to};
[INFO] [stdout]   |                                           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `temporarily_unavailable`
[INFO] [stdout]  --> raft/src/message_handlers/cas_handler.rs:4:56
[INFO] [stdout]   |
[INFO] [stdout] 4 | use shared_lib::error::{MaelstromError, DefiniteError, temporarily_unavailable};
[INFO] [stdout]   |                                                        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_in_response_to`
[INFO] [stdout]  --> raft/src/message_handlers/cas_handler.rs:5:43
[INFO] [stdout]   |
[INFO] [stdout] 5 | use shared_lib::message_utils::{get_body, get_in_response_to};
[INFO] [stdout]   |                                           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `object`
[INFO] [stdout]  --> raft/src/message_handlers/write_handler.rs:3:24
[INFO] [stdout]   |
[INFO] [stdout] 3 | use json::{ JsonValue, object };
[INFO] [stdout]   |                        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `temporarily_unavailable`
[INFO] [stdout]  --> raft/src/message_handlers/write_handler.rs:4:41
[INFO] [stdout]   |
[INFO] [stdout] 4 | use shared_lib::error::{MaelstromError, temporarily_unavailable};
[INFO] [stdout]   |                                         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_in_response_to`
[INFO] [stdout]  --> raft/src/message_handlers/write_handler.rs:5:43
[INFO] [stdout]   |
[INFO] [stdout] 5 | use shared_lib::message_utils::{get_body, get_in_response_to};
[INFO] [stdout]   |                                           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SyncSender` and `sync_channel`
[INFO] [stdout]  --> raft/src/message_handlers/request_vote_handler.rs:8:23
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::sync::mpsc::{SyncSender, sync_channel};
[INFO] [stdout]   |                       ^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DefiniteError`
[INFO] [stdout]  --> raft/src/message_handlers/append_entries_handler.rs:4:41
[INFO] [stdout]   |
[INFO] [stdout] 4 | use shared_lib::error::{MaelstromError, DefiniteError, abort};
[INFO] [stdout]   |                                         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `election_loop`
[INFO] [stdout]  --> raft/src/message_handlers/append_entries_handler.rs:5:44
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::election_state::{ElectionState, election_loop};
[INFO] [stdout]   |                                            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_in_response_to`
[INFO] [stdout]  --> raft/src/message_handlers/append_entries_handler.rs:7:43
[INFO] [stdout]   |
[INFO] [stdout] 7 | use shared_lib::message_utils::{get_body, get_in_response_to};
[INFO] [stdout]   |                                           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Entry`
[INFO] [stdout]  --> raft/src/message_handlers/append_entries_handler.rs:8:18
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::log::{Entry, parse_entries};
[INFO] [stdout]   |                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DefiniteError`
[INFO] [stdout]  --> raft/src/message_handlers/proxy_to_leader.rs:1:25
[INFO] [stdout]   |
[INFO] [stdout] 1 | use shared_lib::error::{DefiniteError, temporarily_unavailable, MaelstromError};
[INFO] [stdout]   |                         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::election_state::State::LEADER`
[INFO] [stdout]  --> raft/src/message_handlers/proxy_to_leader.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::election_state::State::LEADER;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RwLockReadGuard`
[INFO] [stdout]  --> raft/src/raft_node_state.rs:3:32
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::sync::{Mutex, RwLock, RwLockReadGuard};
[INFO] [stdout]   |                                ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `stderr`
[INFO] [stdout]  --> raft/src/raft_node_state.rs:7:15
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::io::{stderr, Write};
[INFO] [stdout]   |               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::election_state::ElectionState`
[INFO] [stdout]  --> raft/src/raft_node_state.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::election_state::ElectionState;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread`
[INFO] [stdout]   --> raft/src/raft_node_state.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::thread;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `shared_lib::stdio::write_log`
[INFO] [stdout]   --> raft/src/raft_node_state.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use shared_lib::stdio::write_log;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread::Thread`
[INFO] [stdout]  --> raft/src/election_state.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::thread::Thread;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `LockResult`, `PoisonError`, and `RwLockReadGuard`
[INFO] [stdout]  --> raft/src/election_state.rs:4:30
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::sync::{RwLock, Arc, LockResult, RwLockReadGuard, PoisonError};
[INFO] [stdout]   |                              ^^^^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `random` and `thread_rng`
[INFO] [stdout]  --> raft/src/election_state.rs:5:17
[INFO] [stdout]   |
[INFO] [stdout] 5 | use rand::{Rng, thread_rng, random, RngCore};
[INFO] [stdout]   |                 ^^^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Deref`
[INFO] [stdout]  --> raft/src/election_state.rs:7:16
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::ops::{Deref};
[INFO] [stdout]   |                ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `node_state::NodeState`
[INFO] [stdout]   --> raft/src/election_state.rs:10:18
[INFO] [stdout]    |
[INFO] [stdout] 10 | use shared_lib::{node_state::NodeState, rpc::{broadcast_rpc, send_rpc}};
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::borrow::Borrow`
[INFO] [stdout]   --> raft/src/election_state.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::borrow::Borrow;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `lazy_static::lazy_static`
[INFO] [stdout]   --> raft/src/election_state.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use lazy_static::lazy_static;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SyncSender`, `TryIter`, `channel`, and `sync_channel`
[INFO] [stdout]   --> raft/src/election_state.rs:15:23
[INFO] [stdout]    |
[INFO] [stdout] 15 | use std::sync::mpsc::{sync_channel, SyncSender, TryIter, TryRecvError, Receiver, channel};
[INFO] [stdout]    |                       ^^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^                          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `shared_lib::error::MaelstromError`
[INFO] [stdout]   --> raft/src/election_state.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use shared_lib::error::MaelstromError;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around index expression
[INFO] [stdout]    --> raft/src/election_state.rs:299:17
[INFO] [stdout]     |
[INFO] [stdout] 299 |         *values[(values.len() - majority)]
[INFO] [stdout]     |                 ^                       ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 299 -         *values[(values.len() - majority)]
[INFO] [stdout] 299 +         *values[values.len() - majority ]
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BufRead`, `Write`, `stderr`, and `stdout`
[INFO] [stdout]  --> raft/src/main.rs:9:15
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::io::{stderr, stdout, BufRead, Write};
[INFO] [stdout]   |               ^^^^^^  ^^^^^^  ^^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::mpsc::SyncSender`
[INFO] [stdout]   --> raft/src/main.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::sync::mpsc::SyncSender;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `io`
[INFO] [stdout]   --> raft/src/main.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::{io, thread};
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `io::prelude::*`
[INFO] [stdout]   --> raft/src/main.rs:14:33
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::{collections::HashMap, io::prelude::*, sync::mpsc::sync_channel};
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `shared_lib::message_utils::get_message_type`
[INFO] [stdout]   --> raft/src/main.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use shared_lib::message_utils::get_message_type;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `json::JsonValue`
[INFO] [stdout]   --> raft/src/main.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use json::JsonValue;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary braces around block return value
[INFO] [stdout]   --> raft/src/main.rs:45:62
[INFO] [stdout]    |
[INFO] [stdout] 45 |     static ref ELECTION_STATE: Arc<ElectionState<'static>> = {election_state::start(&*NODE_STATE)};
[INFO] [stdout]    |                                                              ^                                   ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_braces)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these braces
[INFO] [stdout]    |
[INFO] [stdout] 45 -     static ref ELECTION_STATE: Arc<ElectionState<'static>> = {election_state::start(&*NODE_STATE)};
[INFO] [stdout] 45 +     static ref ELECTION_STATE: Arc<ElectionState<'static>> = election_state::start(&*NODE_STATE) ;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `JsonValue`
[INFO] [stdout]  --> maelstrom/src/main.rs:1:18
[INFO] [stdout]   |
[INFO] [stdout] 1 | use json::{self, JsonValue};
[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: `io::prelude::*`
[INFO] [stdout]   --> maelstrom/src/main.rs:11:33
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::{collections::HashMap, io::prelude::*, sync::mpsc::sync_channel};
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `self` and `sync::mpsc::Receiver`
[INFO] [stdout]   --> maelstrom/src/main.rs:13:10
[INFO] [stdout]    |
[INFO] [stdout] 13 |     io::{self},
[INFO] [stdout]    |          ^^^^
[INFO] [stdout] 14 |     sync::mpsc::Receiver,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Write` and `stderr`
[INFO] [stdout]   --> maelstrom/src/main.rs:17:10
[INFO] [stdout]    |
[INFO] [stdout] 17 |     io::{stderr, Write},
[INFO] [stdout]    |          ^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `message_utils::get_message_type`
[INFO] [stdout]   --> maelstrom/src/main.rs:20:72
[INFO] [stdout]    |
[INFO] [stdout] 20 | use shared_lib::{ stdio::while_reply, message_handler::MessageHandler, message_utils::get_message_type};
[INFO] [stdout]    |                                                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `mpsc::sync_channel`, `thread`, and `time::Duration`
[INFO] [stdout]  --> maelstrom/src/lin_kv_service.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 |     sync::{mpsc::sync_channel, Mutex},
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 5 |     thread,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout] 6 |     time::Duration,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `stringify`
[INFO] [stdout]  --> maelstrom/src/lin_kv_service.rs:9:31
[INFO] [stdout]   |
[INFO] [stdout] 9 | use json::{JsonValue, object, stringify};
[INFO] [stdout]   |                               ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `shared_lib::node_state::NodeState`
[INFO] [stdout]   --> maelstrom/src/lin_kv_service.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use shared_lib::node_state::NodeState;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Borrow`
[INFO] [stdout]   --> maelstrom/src/lin_kv_service.rs:14:19
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::borrow::{Borrow, BorrowMut};
[INFO] [stdout]    |                   ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `node_state::NodeState`
[INFO] [stdout]  --> maelstrom/src/message_handlers/topology_handler.rs:2:74
[INFO] [stdout]   |
[INFO] [stdout] 2 | use shared_lib::{error::MaelstromError, message_handler::MessageHandler, node_state::NodeState};
[INFO] [stdout]   |                                                                          ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `borrow::BorrowMut`
[INFO] [stdout]  --> maelstrom/src/message_handlers/txn_handler.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     borrow::BorrowMut,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::prelude::ThreadRng`
[INFO] [stdout]  --> maelstrom/src/message_handlers/txn_handler.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use rand::prelude::ThreadRng;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Mutex`, `cell::RefCell`, and `collections::HashMap`
[INFO] [stdout]  --> maelstrom/src/states/maelstrom_node_state.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 |     cell::RefCell,
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 6 |     collections::HashMap,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 7 |     sync::{mpsc::SyncSender, Mutex, RwLock},
[INFO] [stdout]   |                              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::RwLockWriteGuard`
[INFO] [stdout]   --> maelstrom/src/states/maelstrom_node_state.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::sync::RwLockWriteGuard;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Write` and `stderr`
[INFO] [stdout]  --> maelstrom/src/states/serializable_map.rs:3:10
[INFO] [stdout]   |
[INFO] [stdout] 3 |     io::{stderr, Write},
[INFO] [stdout]   |          ^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `stringify`
[INFO] [stdout]  --> maelstrom/src/states/serializable_map.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | use json::{stringify, JsonValue};
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `stderr`
[INFO] [stdout]  --> maelstrom/src/states/thunk.rs:2:10
[INFO] [stdout]   |
[INFO] [stdout] 2 |     io::{stderr, Write},
[INFO] [stdout]   |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `json::JsonValue`
[INFO] [stdout]  --> maelstrom/src/states/thunk.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use json::JsonValue;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `JsonValue`
[INFO] [stdout]  --> maelstrom/src/main.rs:1:18
[INFO] [stdout]   |
[INFO] [stdout] 1 | use json::{self, JsonValue};
[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: `io::prelude::*`
[INFO] [stdout]   --> maelstrom/src/main.rs:11:33
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::{collections::HashMap, io::prelude::*, sync::mpsc::sync_channel};
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `self` and `sync::mpsc::Receiver`
[INFO] [stdout]   --> maelstrom/src/main.rs:13:10
[INFO] [stdout]    |
[INFO] [stdout] 13 |     io::{self},
[INFO] [stdout]    |          ^^^^
[INFO] [stdout] 14 |     sync::mpsc::Receiver,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Write` and `stderr`
[INFO] [stdout]   --> maelstrom/src/main.rs:17:10
[INFO] [stdout]    |
[INFO] [stdout] 17 |     io::{stderr, Write},
[INFO] [stdout]    |          ^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `message_utils::get_message_type`
[INFO] [stdout]   --> maelstrom/src/main.rs:20:72
[INFO] [stdout]    |
[INFO] [stdout] 20 | use shared_lib::{ stdio::while_reply, message_handler::MessageHandler, message_utils::get_message_type};
[INFO] [stdout]    |                                                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `mpsc::sync_channel`, `thread`, and `time::Duration`
[INFO] [stdout]  --> maelstrom/src/lin_kv_service.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 |     sync::{mpsc::sync_channel, Mutex},
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 5 |     thread,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout] 6 |     time::Duration,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `stringify`
[INFO] [stdout]  --> maelstrom/src/lin_kv_service.rs:9:31
[INFO] [stdout]   |
[INFO] [stdout] 9 | use json::{JsonValue, object, stringify};
[INFO] [stdout]   |                               ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `shared_lib::node_state::NodeState`
[INFO] [stdout]   --> maelstrom/src/lin_kv_service.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use shared_lib::node_state::NodeState;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Borrow`
[INFO] [stdout]   --> maelstrom/src/lin_kv_service.rs:14:19
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::borrow::{Borrow, BorrowMut};
[INFO] [stdout]    |                   ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `node_state::NodeState`
[INFO] [stdout]  --> maelstrom/src/message_handlers/topology_handler.rs:2:74
[INFO] [stdout]   |
[INFO] [stdout] 2 | use shared_lib::{error::MaelstromError, message_handler::MessageHandler, node_state::NodeState};
[INFO] [stdout]   |                                                                          ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `borrow::BorrowMut`
[INFO] [stdout]  --> maelstrom/src/message_handlers/txn_handler.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     borrow::BorrowMut,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::prelude::ThreadRng`
[INFO] [stdout]  --> maelstrom/src/message_handlers/txn_handler.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use rand::prelude::ThreadRng;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Mutex`, `cell::RefCell`, and `collections::HashMap`
[INFO] [stdout]  --> maelstrom/src/states/maelstrom_node_state.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 |     cell::RefCell,
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 6 |     collections::HashMap,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 7 |     sync::{mpsc::SyncSender, Mutex, RwLock},
[INFO] [stdout]   |                              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::RwLockWriteGuard`
[INFO] [stdout]   --> maelstrom/src/states/maelstrom_node_state.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::sync::RwLockWriteGuard;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Write` and `stderr`
[INFO] [stdout]  --> maelstrom/src/states/serializable_map.rs:3:10
[INFO] [stdout]   |
[INFO] [stdout] 3 |     io::{stderr, Write},
[INFO] [stdout]   |          ^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `stringify`
[INFO] [stdout]  --> maelstrom/src/states/serializable_map.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | use json::{stringify, JsonValue};
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `stderr`
[INFO] [stdout]  --> maelstrom/src/states/thunk.rs:2:10
[INFO] [stdout]   |
[INFO] [stdout] 2 |     io::{stderr, Write},
[INFO] [stdout]   |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `json::JsonValue`
[INFO] [stdout]  --> maelstrom/src/states/thunk.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use json::JsonValue;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> raft/src/raft_node_state.rs:7:23
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::io::{stderr, Write};
[INFO] [stdout]   |                       ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `message`
[INFO] [stdout]   --> raft/src/message_handlers/read_handler.rs:26:34
[INFO] [stdout]    |
[INFO] [stdout] 26 |     fn make_response_body(&self, message: &JsonValue, curr_state: &RaftState) -> Result<JsonValue, MaelstromError> {
[INFO] [stdout]    |                                  ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `curr_state`
[INFO] [stdout]   --> raft/src/message_handlers/read_handler.rs:26:55
[INFO] [stdout]    |
[INFO] [stdout] 26 |     fn make_response_body(&self, message: &JsonValue, curr_state: &RaftState) -> Result<JsonValue, MaelstromError> {
[INFO] [stdout]    |                                                       ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_curr_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `message`
[INFO] [stdout]   --> raft/src/message_handlers/cas_handler.rs:28:34
[INFO] [stdout]    |
[INFO] [stdout] 28 |     fn make_response_body(&self, message: &JsonValue, curr_state: &RaftState) -> Result<JsonValue, MaelstromError> {
[INFO] [stdout]    |                                  ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `curr_state`
[INFO] [stdout]   --> raft/src/message_handlers/cas_handler.rs:28:55
[INFO] [stdout]    |
[INFO] [stdout] 28 |     fn make_response_body(&self, message: &JsonValue, curr_state: &RaftState) -> Result<JsonValue, MaelstromError> {
[INFO] [stdout]    |                                                       ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_curr_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `message`
[INFO] [stdout]   --> raft/src/message_handlers/write_handler.rs:26:34
[INFO] [stdout]    |
[INFO] [stdout] 26 |     fn make_response_body(&self, message: &JsonValue, curr_state: &RaftState) -> Result<JsonValue, MaelstromError> {
[INFO] [stdout]    |                                  ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `curr_state`
[INFO] [stdout]   --> raft/src/message_handlers/write_handler.rs:26:55
[INFO] [stdout]    |
[INFO] [stdout] 26 |     fn make_response_body(&self, message: &JsonValue, curr_state: &RaftState) -> Result<JsonValue, MaelstromError> {
[INFO] [stdout]    |                                                       ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_curr_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> raft/src/raft_node_state.rs:7:23
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::io::{stderr, Write};
[INFO] [stdout]   |                       ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `message`
[INFO] [stdout]   --> raft/src/message_handlers/read_handler.rs:26:34
[INFO] [stdout]    |
[INFO] [stdout] 26 |     fn make_response_body(&self, message: &JsonValue, curr_state: &RaftState) -> Result<JsonValue, MaelstromError> {
[INFO] [stdout]    |                                  ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `curr_state`
[INFO] [stdout]   --> raft/src/message_handlers/read_handler.rs:26:55
[INFO] [stdout]    |
[INFO] [stdout] 26 |     fn make_response_body(&self, message: &JsonValue, curr_state: &RaftState) -> Result<JsonValue, MaelstromError> {
[INFO] [stdout]    |                                                       ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_curr_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `message`
[INFO] [stdout]   --> raft/src/message_handlers/cas_handler.rs:28:34
[INFO] [stdout]    |
[INFO] [stdout] 28 |     fn make_response_body(&self, message: &JsonValue, curr_state: &RaftState) -> Result<JsonValue, MaelstromError> {
[INFO] [stdout]    |                                  ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `curr_state`
[INFO] [stdout]   --> raft/src/message_handlers/cas_handler.rs:28:55
[INFO] [stdout]    |
[INFO] [stdout] 28 |     fn make_response_body(&self, message: &JsonValue, curr_state: &RaftState) -> Result<JsonValue, MaelstromError> {
[INFO] [stdout]    |                                                       ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_curr_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> maelstrom/src/states/thunk.rs:2:18
[INFO] [stdout]   |
[INFO] [stdout] 2 |     io::{stderr, Write},
[INFO] [stdout]   |                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `message`
[INFO] [stdout]   --> raft/src/message_handlers/write_handler.rs:26:34
[INFO] [stdout]    |
[INFO] [stdout] 26 |     fn make_response_body(&self, message: &JsonValue, curr_state: &RaftState) -> Result<JsonValue, MaelstromError> {
[INFO] [stdout]    |                                  ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `curr_state`
[INFO] [stdout]   --> raft/src/message_handlers/write_handler.rs:26:55
[INFO] [stdout]    |
[INFO] [stdout] 26 |     fn make_response_body(&self, message: &JsonValue, curr_state: &RaftState) -> Result<JsonValue, MaelstromError> {
[INFO] [stdout]    |                                                       ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_curr_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> raft/src/raft_node_state.rs:68:31
[INFO] [stdout]    |
[INFO] [stdout] 68 |         log_loc.as_mut().map(|mut log| {
[INFO] [stdout]    |                               ----^^^
[INFO] [stdout]    |                               |
[INFO] [stdout]    |                               help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> raft/src/raft_node_state.rs:75:49
[INFO] [stdout]    |
[INFO] [stdout] 75 |         self.log.write().unwrap().as_mut().map(|mut log| log.append(entries));
[INFO] [stdout]    |                                                 ----^^^
[INFO] [stdout]    |                                                 |
[INFO] [stdout]    |                                                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> raft/src/raft_node_state.rs:80:49
[INFO] [stdout]    |
[INFO] [stdout] 80 |         self.log.write().unwrap().as_mut().map(|mut log| log.truncate(len));
[INFO] [stdout]    |                                                 ----^^^
[INFO] [stdout]    |                                                 |
[INFO] [stdout]    |                                                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> raft/src/raft_node_state.rs:68:31
[INFO] [stdout]    |
[INFO] [stdout] 68 |         log_loc.as_mut().map(|mut log| {
[INFO] [stdout]    |                               ----^^^
[INFO] [stdout]    |                               |
[INFO] [stdout]    |                               help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> raft/src/raft_node_state.rs:75:49
[INFO] [stdout]    |
[INFO] [stdout] 75 |         self.log.write().unwrap().as_mut().map(|mut log| log.append(entries));
[INFO] [stdout]    |                                                 ----^^^
[INFO] [stdout]    |                                                 |
[INFO] [stdout]    |                                                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> raft/src/raft_node_state.rs:80:49
[INFO] [stdout]    |
[INFO] [stdout] 80 |         self.log.write().unwrap().as_mut().map(|mut log| log.truncate(len));
[INFO] [stdout]    |                                                 ----^^^
[INFO] [stdout]    |                                                 |
[INFO] [stdout]    |                                                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_json` is never used
[INFO] [stdout]   --> maelstrom/src/counters/g_counter.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl GCounter {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub fn to_json(&self) -> JsonValue {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_json` is never used
[INFO] [stdout]   --> maelstrom/src/counters/pn_counter.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl PnCounter {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub fn to_json(&self) -> JsonValue {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `init` is never used
[INFO] [stdout]  --> maelstrom/src/states/id_gen.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | impl IdGenerator {
[INFO] [stdout]   | ---------------- associated function in this implementation
[INFO] [stdout] 9 |     pub fn init(node_id: String) -> IdGenerator {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `counters_state` is never used
[INFO] [stdout]   --> maelstrom/src/states/maelstrom_node_state.rs:46:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl MaelstromState {
[INFO] [stdout]    | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub fn counters_state(&self) -> JsonValue {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> maelstrom/src/lin_kv_service.rs:48:9
[INFO] [stdout]    |
[INFO] [stdout] 48 |         thunk.save(self);
[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] 48 |         let _ = thunk.save(self);
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> maelstrom/src/lin_kv_service.rs:60:13
[INFO] [stdout]    |
[INFO] [stdout] 60 | /             stderr()
[INFO] [stdout] 61 | |                 .write_all(format!("Cas failed to update root at {}\n", original_id).as_bytes());
[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] 60 |             let _ = stderr()
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> maelstrom/src/lin_kv_service.rs:71:13
[INFO] [stdout]    |
[INFO] [stdout] 71 | /             stderr().write_all(
[INFO] [stdout] 72 | |                 format!(
[INFO] [stdout] 73 | |                     "Reading {}, from cache {:?}\n",
[INFO] [stdout] 74 | |                     thunk.id.clone(),
[INFO] [stdout] ...  |
[INFO] [stdout] 77 | |                     .as_bytes(),
[INFO] [stdout] 78 | |             );
[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] 71 |             let _ = stderr().write_all(
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> maelstrom/src/message_handlers/init_handler.rs:13:26
[INFO] [stdout]    |
[INFO] [stdout] 13 |     pub fn init(service: &LinKvService) -> InitHandler {
[INFO] [stdout]    |                          ^^^^^^^^^^^^^     ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                          |
[INFO] [stdout]    |                          the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 13 |     pub fn init(service: &LinKvService) -> InitHandler<'_> {
[INFO] [stdout]    |                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> maelstrom/src/message_handlers/txn_handler.rs:21:26
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn init(service: &LinKvService) -> TxnHandler {
[INFO] [stdout]    |                          ^^^^^^^^^^^^^     ^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                          |
[INFO] [stdout]    |                          the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn init(service: &LinKvService) -> TxnHandler<'_> {
[INFO] [stdout]    |                                                      ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> maelstrom/src/message_handlers/txn_handler.rs:53:13
[INFO] [stdout]    |
[INFO] [stdout] 53 |             arr.push(txn2);
[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] 53 |             let _ = arr.push(txn2);
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> maelstrom/src/message_handlers/txn_handler.rs:113:13
[INFO] [stdout]     |
[INFO] [stdout] 113 |             stderr().write_all(format!("Received unknown transaction {:?}\n", txn).as_bytes());
[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] 113 |             let _ = stderr().write_all(format!("Received unknown transaction {:?}\n", txn).as_bytes());
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> maelstrom/src/states/kv_thunk.rs:17:13
[INFO] [stdout]    |
[INFO] [stdout] 17 |             arr.push(*i);
[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] 17 |             let _ = arr.push(*i);
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]   --> maelstrom/src/states/maelstrom_node_state.rs:34:20
[INFO] [stdout]    |
[INFO] [stdout] 34 |               panic!(format!(
[INFO] [stdout]    |  ____________________^
[INFO] [stdout] 35 | |                 "Tried to get id generator but it has not been inialized. Id is: {}",
[INFO] [stdout] 36 | |                 self.node_id()
[INFO] [stdout] 37 | |             ));
[INFO] [stdout]    | |_____________^
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]    = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]    = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout]    = note: `#[warn(non_fmt_panics)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]    |
[INFO] [stdout] 34 ~             panic!(
[INFO] [stdout] 35 |                 "Tried to get id generator but it has not been inialized. Id is: {}",
[INFO] [stdout] 36 |                 self.node_id()
[INFO] [stdout] 37 ~             );
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> maelstrom/src/states/serializable_map.rs:35:13
[INFO] [stdout]    |
[INFO] [stdout] 35 |             jv.insert(&k.to_string(), thunk.id.clone());
[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] 35 |             let _ = jv.insert(&k.to_string(), thunk.id.clone());
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `replication_time` is never read
[INFO] [stdout]   --> raft/src/election_state.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct ElectionState<'a> {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 36 |     replication_time: RwLock<Instant>,
[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 `node` is never read
[INFO] [stdout]   --> raft/src/log.rs:56:5
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct Log {
[INFO] [stdout]    |            --- field in this struct
[INFO] [stdout] 56 |     node: String,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Log` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> raft/src/message_handlers/read_handler.rs:18:51
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub fn init(election_state: Arc<ElectionState<'_>>) -> ReadHandler {
[INFO] [stdout]    |                                                   ^^       ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                                                   |
[INFO] [stdout]    |                                                   the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: consistently use `'_`
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub fn init(election_state: Arc<ElectionState<'_>>) -> ReadHandler<'_> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> raft/src/message_handlers/cas_handler.rs:18:51
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub fn init(election_state: Arc<ElectionState<'_>>) -> CasHandler {
[INFO] [stdout]    |                                                   ^^       ^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                                                   |
[INFO] [stdout]    |                                                   the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: consistently use `'_`
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub fn init(election_state: Arc<ElectionState<'_>>) -> CasHandler<'_> {
[INFO] [stdout]    |                                                                      ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> raft/src/message_handlers/write_handler.rs:18:51
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub fn init(election_state: Arc<ElectionState<'_>>) -> WriteHandler {
[INFO] [stdout]    |                                                   ^^       ^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                                                   |
[INFO] [stdout]    |                                                   the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: consistently use `'_`
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub fn init(election_state: Arc<ElectionState<'_>>) -> WriteHandler<'_> {
[INFO] [stdout]    |                                                                        ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> raft/src/election_state.rs:49:20
[INFO] [stdout]    |
[INFO] [stdout] 49 |     fn init(state: &RaftState) -> ElectionState {
[INFO] [stdout]    |                    ^^^^^^^^^^     ^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                    |
[INFO] [stdout]    |                    the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 49 |     fn init(state: &RaftState) -> ElectionState<'_> {
[INFO] [stdout]    |                                                ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> raft/src/election_state.rs:95:13
[INFO] [stdout]    |
[INFO] [stdout] 95 |             stderr().write(error_message.as_bytes());
[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] 95 |             let _ = stderr().write(error_message.as_bytes());
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> raft/src/election_state.rs:108:9
[INFO] [stdout]     |
[INFO] [stdout] 108 |         self.advance_term(curr_term + 1);
[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] 108 |         let _ = self.advance_term(curr_term + 1);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> raft/src/election_state.rs:165:13
[INFO] [stdout]     |
[INFO] [stdout] 165 |             self.advance_term(remote_term);
[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] 165 |             let _ = self.advance_term(remote_term);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Option::<T>::insert` that must be used
[INFO] [stdout]    --> raft/src/election_state.rs:174:9
[INFO] [stdout]     |
[INFO] [stdout] 174 |         self.leader.write().unwrap().insert(leader_id);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you intended to set a value, consider assignment instead
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 174 |         let _ = self.leader.write().unwrap().insert(leader_id);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a value that implements `Copy` does nothing
[INFO] [stdout]    --> raft/src/election_state.rs:276:9
[INFO] [stdout]     |
[INFO] [stdout] 276 |         drop(last_applied);
[INFO] [stdout]     |         ^^^^^------------^
[INFO] [stdout]     |              |
[INFO] [stdout]     |              argument has type `usize`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dropping_copy_types)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]     |
[INFO] [stdout] 276 -         drop(last_applied);
[INFO] [stdout] 276 +         let _ = last_applied;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing
[INFO] [stdout]   --> raft/src/log.rs:24:22
[INFO] [stdout]    |
[INFO] [stdout] 24 |         let owned = s.clone();
[INFO] [stdout]    |                      ^^^^^^^^ help: remove this redundant call
[INFO] [stdout]    |
[INFO] [stdout]    = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` copies the reference, which does not do anything and can be removed
[INFO] [stdout]    = note: `#[warn(noop_method_call)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `replication_time` is never read
[INFO] [stdout]   --> raft/src/election_state.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct ElectionState<'a> {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 36 |     replication_time: RwLock<Instant>,
[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 `node` is never read
[INFO] [stdout]   --> raft/src/log.rs:56:5
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct Log {
[INFO] [stdout]    |            --- field in this struct
[INFO] [stdout] 56 |     node: String,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Log` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> raft/src/message_handlers/read_handler.rs:18:51
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub fn init(election_state: Arc<ElectionState<'_>>) -> ReadHandler {
[INFO] [stdout]    |                                                   ^^       ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                                                   |
[INFO] [stdout]    |                                                   the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: consistently use `'_`
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub fn init(election_state: Arc<ElectionState<'_>>) -> ReadHandler<'_> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> raft/src/message_handlers/cas_handler.rs:18:51
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub fn init(election_state: Arc<ElectionState<'_>>) -> CasHandler {
[INFO] [stdout]    |                                                   ^^       ^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                                                   |
[INFO] [stdout]    |                                                   the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: consistently use `'_`
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub fn init(election_state: Arc<ElectionState<'_>>) -> CasHandler<'_> {
[INFO] [stdout]    |                                                                      ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> raft/src/message_handlers/write_handler.rs:18:51
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub fn init(election_state: Arc<ElectionState<'_>>) -> WriteHandler {
[INFO] [stdout]    |                                                   ^^       ^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                                                   |
[INFO] [stdout]    |                                                   the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: consistently use `'_`
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub fn init(election_state: Arc<ElectionState<'_>>) -> WriteHandler<'_> {
[INFO] [stdout]    |                                                                        ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> raft/src/election_state.rs:49:20
[INFO] [stdout]    |
[INFO] [stdout] 49 |     fn init(state: &RaftState) -> ElectionState {
[INFO] [stdout]    |                    ^^^^^^^^^^     ^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                    |
[INFO] [stdout]    |                    the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 49 |     fn init(state: &RaftState) -> ElectionState<'_> {
[INFO] [stdout]    |                                                ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> raft/src/election_state.rs:95:13
[INFO] [stdout]    |
[INFO] [stdout] 95 |             stderr().write(error_message.as_bytes());
[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] 95 |             let _ = stderr().write(error_message.as_bytes());
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> raft/src/election_state.rs:108:9
[INFO] [stdout]     |
[INFO] [stdout] 108 |         self.advance_term(curr_term + 1);
[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] 108 |         let _ = self.advance_term(curr_term + 1);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> raft/src/election_state.rs:165:13
[INFO] [stdout]     |
[INFO] [stdout] 165 |             self.advance_term(remote_term);
[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] 165 |             let _ = self.advance_term(remote_term);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Option::<T>::insert` that must be used
[INFO] [stdout]    --> raft/src/election_state.rs:174:9
[INFO] [stdout]     |
[INFO] [stdout] 174 |         self.leader.write().unwrap().insert(leader_id);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: if you intended to set a value, consider assignment instead
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 174 |         let _ = self.leader.write().unwrap().insert(leader_id);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a value that implements `Copy` does nothing
[INFO] [stdout]    --> raft/src/election_state.rs:276:9
[INFO] [stdout]     |
[INFO] [stdout] 276 |         drop(last_applied);
[INFO] [stdout]     |         ^^^^^------------^
[INFO] [stdout]     |              |
[INFO] [stdout]     |              argument has type `usize`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dropping_copy_types)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]     |
[INFO] [stdout] 276 -         drop(last_applied);
[INFO] [stdout] 276 +         let _ = last_applied;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing
[INFO] [stdout]   --> raft/src/log.rs:24:22
[INFO] [stdout]    |
[INFO] [stdout] 24 |         let owned = s.clone();
[INFO] [stdout]    |                      ^^^^^^^^ help: remove this redundant call
[INFO] [stdout]    |
[INFO] [stdout]    = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` copies the reference, which does not do anything and can be removed
[INFO] [stdout]    = note: `#[warn(noop_method_call)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> maelstrom/src/states/thunk.rs:2:18
[INFO] [stdout]   |
[INFO] [stdout] 2 |     io::{stderr, Write},
[INFO] [stdout]   |                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_json` is never used
[INFO] [stdout]   --> maelstrom/src/counters/g_counter.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl GCounter {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub fn to_json(&self) -> JsonValue {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_json` is never used
[INFO] [stdout]   --> maelstrom/src/counters/pn_counter.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl PnCounter {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub fn to_json(&self) -> JsonValue {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `init` is never used
[INFO] [stdout]  --> maelstrom/src/states/id_gen.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | impl IdGenerator {
[INFO] [stdout]   | ---------------- associated function in this implementation
[INFO] [stdout] 9 |     pub fn init(node_id: String) -> IdGenerator {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `counters_state` is never used
[INFO] [stdout]   --> maelstrom/src/states/maelstrom_node_state.rs:46:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl MaelstromState {
[INFO] [stdout]    | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub fn counters_state(&self) -> JsonValue {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> maelstrom/src/lin_kv_service.rs:48:9
[INFO] [stdout]    |
[INFO] [stdout] 48 |         thunk.save(self);
[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] 48 |         let _ = thunk.save(self);
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> maelstrom/src/lin_kv_service.rs:60:13
[INFO] [stdout]    |
[INFO] [stdout] 60 | /             stderr()
[INFO] [stdout] 61 | |                 .write_all(format!("Cas failed to update root at {}\n", original_id).as_bytes());
[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] 60 |             let _ = stderr()
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> maelstrom/src/lin_kv_service.rs:71:13
[INFO] [stdout]    |
[INFO] [stdout] 71 | /             stderr().write_all(
[INFO] [stdout] 72 | |                 format!(
[INFO] [stdout] 73 | |                     "Reading {}, from cache {:?}\n",
[INFO] [stdout] 74 | |                     thunk.id.clone(),
[INFO] [stdout] ...  |
[INFO] [stdout] 77 | |                     .as_bytes(),
[INFO] [stdout] 78 | |             );
[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] 71 |             let _ = stderr().write_all(
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> maelstrom/src/message_handlers/init_handler.rs:13:26
[INFO] [stdout]    |
[INFO] [stdout] 13 |     pub fn init(service: &LinKvService) -> InitHandler {
[INFO] [stdout]    |                          ^^^^^^^^^^^^^     ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                          |
[INFO] [stdout]    |                          the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 13 |     pub fn init(service: &LinKvService) -> InitHandler<'_> {
[INFO] [stdout]    |                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> maelstrom/src/message_handlers/txn_handler.rs:21:26
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn init(service: &LinKvService) -> TxnHandler {
[INFO] [stdout]    |                          ^^^^^^^^^^^^^     ^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                          |
[INFO] [stdout]    |                          the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn init(service: &LinKvService) -> TxnHandler<'_> {
[INFO] [stdout]    |                                                      ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> maelstrom/src/message_handlers/txn_handler.rs:53:13
[INFO] [stdout]    |
[INFO] [stdout] 53 |             arr.push(txn2);
[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] 53 |             let _ = arr.push(txn2);
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> maelstrom/src/message_handlers/txn_handler.rs:113:13
[INFO] [stdout]     |
[INFO] [stdout] 113 |             stderr().write_all(format!("Received unknown transaction {:?}\n", txn).as_bytes());
[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] 113 |             let _ = stderr().write_all(format!("Received unknown transaction {:?}\n", txn).as_bytes());
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> maelstrom/src/states/kv_thunk.rs:17:13
[INFO] [stdout]    |
[INFO] [stdout] 17 |             arr.push(*i);
[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] 17 |             let _ = arr.push(*i);
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]   --> maelstrom/src/states/maelstrom_node_state.rs:34:20
[INFO] [stdout]    |
[INFO] [stdout] 34 |               panic!(format!(
[INFO] [stdout]    |  ____________________^
[INFO] [stdout] 35 | |                 "Tried to get id generator but it has not been inialized. Id is: {}",
[INFO] [stdout] 36 | |                 self.node_id()
[INFO] [stdout] 37 | |             ));
[INFO] [stdout]    | |_____________^
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]    = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]    = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout]    = note: `#[warn(non_fmt_panics)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]    |
[INFO] [stdout] 34 ~             panic!(
[INFO] [stdout] 35 |                 "Tried to get id generator but it has not been inialized. Id is: {}",
[INFO] [stdout] 36 |                 self.node_id()
[INFO] [stdout] 37 ~             );
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> maelstrom/src/states/serializable_map.rs:35:13
[INFO] [stdout]    |
[INFO] [stdout] 35 |             jv.insert(&k.to_string(), thunk.id.clone());
[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] 35 |             let _ = jv.insert(&k.to_string(), thunk.id.clone());
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2.94s
[INFO] running `Command { std: "docker" "inspect" "e85c9a32132e8ca7a125419bf26c84c2526aad06391a298a44f71370f389c656", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "e85c9a32132e8ca7a125419bf26c84c2526aad06391a298a44f71370f389c656", kill_on_drop: false }`
[INFO] [stdout] e85c9a32132e8ca7a125419bf26c84c2526aad06391a298a44f71370f389c656
