[INFO] cloning repository https://github.com/doublesevenshop/Raft_By_Rust
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/doublesevenshop/Raft_By_Rust" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdoublesevenshop%2FRaft_By_Rust", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdoublesevenshop%2FRaft_By_Rust'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 95f1ca8b7fe4a8fd87c0d6baf4a3412998942d1c
[INFO] checking doublesevenshop/Raft_By_Rust against master#779e19d8baa3e3625bd4fc5c85cbb2ad47b43155 for pr-147589-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdoublesevenshop%2FRaft_By_Rust" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/doublesevenshop/Raft_By_Rust
[INFO] removed 0 missing examples
[INFO] finished tweaking git repo https://github.com/doublesevenshop/Raft_By_Rust
[INFO] tweaked toml for git repo https://github.com/doublesevenshop/Raft_By_Rust written to /workspace/builds/worker-3-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/doublesevenshop/Raft_By_Rust on toolchain 779e19d8baa3e3625bd4fc5c85cbb2ad47b43155
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+779e19d8baa3e3625bd4fc5c85cbb2ad47b43155" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/doublesevenshop/Raft_By_Rust 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" "+779e19d8baa3e3625bd4fc5c85cbb2ad47b43155" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded tonic-build v0.13.1
[INFO] [stderr]   Downloaded prost-build v0.13.5
[INFO] [stderr]   Downloaded prost-types v0.13.5
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+779e19d8baa3e3625bd4fc5c85cbb2ad47b43155" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] a6efccc242ab1521974e9f615122003a101cb0075c31280c276bfe28fd7c869a
[INFO] running `Command { std: "docker" "start" "-a" "a6efccc242ab1521974e9f615122003a101cb0075c31280c276bfe28fd7c869a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "a6efccc242ab1521974e9f615122003a101cb0075c31280c276bfe28fd7c869a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a6efccc242ab1521974e9f615122003a101cb0075c31280c276bfe28fd7c869a", kill_on_drop: false }`
[INFO] [stdout] a6efccc242ab1521974e9f615122003a101cb0075c31280c276bfe28fd7c869a
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+779e19d8baa3e3625bd4fc5c85cbb2ad47b43155" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] d457f7b9888628457b95224b344a1caa2169e8a276be8d74acc01fd8031cae7e
[INFO] running `Command { std: "docker" "start" "-a" "d457f7b9888628457b95224b344a1caa2169e8a276be8d74acc01fd8031cae7e", kill_on_drop: false }`
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]     Checking parking_lot_core v0.9.10
[INFO] [stderr]     Checking socket2 v0.5.9
[INFO] [stderr]     Checking mio v1.0.3
[INFO] [stderr]    Compiling anyhow v1.0.98
[INFO] [stderr]    Compiling libc v0.2.172
[INFO] [stderr]    Compiling bytes v1.10.1
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]    Compiling getrandom v0.3.3
[INFO] [stderr]    Compiling log v0.4.27
[INFO] [stderr]    Compiling bitflags v2.9.1
[INFO] [stderr]    Compiling prettyplease v0.2.32
[INFO] [stderr]    Compiling linux-raw-sys v0.9.4
[INFO] [stderr]    Compiling regex-syntax v0.8.5
[INFO] [stderr]    Compiling fastrand v2.3.0
[INFO] [stderr]    Compiling fixedbitset v0.4.2
[INFO] [stderr]    Compiling tracing-core v0.1.33
[INFO] [stderr]    Compiling petgraph v0.6.5
[INFO] [stderr]    Compiling multimap v0.8.3
[INFO] [stderr]     Checking sync_wrapper v1.0.2
[INFO] [stderr]    Compiling overload v0.1.1
[INFO] [stderr]    Compiling sharded-slab v0.1.7
[INFO] [stderr]    Compiling thread_local v1.1.8
[INFO] [stderr]    Compiling smallvec v1.15.0
[INFO] [stderr]    Compiling nu-ansi-term v0.46.0
[INFO] [stderr]     Checking axum-core v0.5.2
[INFO] [stderr]     Checking parking_lot v0.12.3
[INFO] [stderr]    Compiling prost-derive v0.13.5
[INFO] [stderr]     Checking rand_core v0.9.3
[INFO] [stderr]    Compiling pin-project-internal v1.1.10
[INFO] [stderr]     Checking time v0.3.41
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]    Compiling rustix v1.0.7
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]     Checking tokio v1.45.0
[INFO] [stderr]     Checking tracing-subscriber v0.3.19
[INFO] [stderr]     Checking crossbeam-channel v0.5.15
[INFO] [stderr]     Checking tempfile v3.20.0
[INFO] [stderr]     Checking rand v0.9.1
[INFO] [stderr]     Checking tower v0.4.13
[INFO] [stderr]    Compiling regex-automata v0.4.9
[INFO] [stderr]    Compiling prost v0.13.5
[INFO] [stderr]     Checking pin-project v1.1.10
[INFO] [stderr]    Compiling prost-types v0.13.5
[INFO] [stderr]     Checking tracing-appender v0.2.3
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]    Compiling regex v1.11.1
[INFO] [stderr]    Compiling prost-build v0.13.5
[INFO] [stderr]    Compiling tonic-build v0.13.1
[INFO] [stderr]     Checking tokio-util v0.7.15
[INFO] [stderr]     Checking tokio-stream v0.1.17
[INFO] [stderr]    Compiling KEEP_RUNNING v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Checking h2 v0.4.10
[INFO] [stderr]     Checking tower v0.5.2
[INFO] [stderr]     Checking axum v0.8.4
[INFO] [stderr]     Checking hyper v1.6.0
[INFO] [stderr]     Checking hyper-util v0.1.11
[INFO] [stderr]     Checking hyper-timeout v0.5.2
[INFO] [stderr]     Checking tonic v0.13.1
[INFO] [stdout] warning: unused import: `Mutex as StdMutex`
[INFO] [stdout]  --> src/raft/consensus.rs:4:22
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::sync::{Arc, Mutex as StdMutex};
[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: `Instant as StdInstant`
[INFO] [stdout]  --> src/raft/consensus.rs:5:27
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::time::{Duration, Instant as StdInstant};
[INFO] [stdout]   |                           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tonic::server`
[INFO] [stdout]  --> src/raft/config.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use tonic::server;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `peer`
[INFO] [stdout]  --> src/raft/config.rs:5:19
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::raft::{peer, proto};
[INFO] [stdout]   |                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Error`
[INFO] [stdout]  --> src/raft/config.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::io::Error;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tonic::server`
[INFO] [stdout]  --> src/raft/peer.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use tonic::server;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ConfigState`
[INFO] [stdout]  --> src/raft/peer.rs:2:33
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::raft::config::{self, ConfigState};
[INFO] [stdout]   |                                 ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Instant`
[INFO] [stdout]  --> src/raft/timer.rs:4:27
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::time::{Duration, Instant};
[INFO] [stdout]   |                           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Read`
[INFO] [stdout]  --> src/raft/log.rs:6:37
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::io::{BufReader, BufWriter, Read, Write};
[INFO] [stdout]   |                                     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::clone`
[INFO] [stdout]  --> src/raft/metadata.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::clone;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/raft/metadata.rs:5:21
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::io::{Read, Write};
[INFO] [stdout]   |                     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mutex`
[INFO] [stdout]  --> src/raft/metadata.rs:7:22
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::sync::{Arc, Mutex};
[INFO] [stdout]   |                      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sleep`
[INFO] [stdout]   --> src/raft/metadata.rs:10:19
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tokio::time::{sleep, Duration, interval};
[INFO] [stdout]    |                   ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Rng`
[INFO] [stdout]  --> src/raft/util.rs:2:18
[INFO] [stdout]   |
[INFO] [stdout] 2 | use rand::{self, Rng};
[INFO] [stdout]   |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Instant`
[INFO] [stdout]  --> src/raft/util.rs:3:27
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::time::{Duration, Instant};
[INFO] [stdout]   |                           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::raft::proto`
[INFO] [stdout]  --> src/raft/state_machine.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::raft::proto;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::any::Any`
[INFO] [stdout]  --> src/raft/state_machine.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::any::Any;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tonic::transport::Channel`
[INFO] [stdout]  --> src/raft/rpc.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use tonic::transport::Channel;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `timer`
[INFO] [stdout]  --> src/raft/rpc.rs:4:37
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::raft::{consensus, proto, timer};
[INFO] [stdout]   |                                     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `Instant`
[INFO] [stdout]  --> src/raft/rpc.rs:7:17
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::time::{Duration, Instant};
[INFO] [stdout]   |                 ^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mutex`
[INFO] [stdout]  --> src/raft/lib.rs:2:22
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::sync::{Arc, Mutex};
[INFO] [stdout]   |                      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `Instant`
[INFO] [stdout]  --> src/raft/lib.rs:3:17
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::time::{Duration, Instant};
[INFO] [stdout]   |                 ^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tracing_subscriber::fmt::writer::MakeWriterExt`
[INFO] [stdout]  --> src/raft/lib.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing_subscriber::fmt::writer::MakeWriterExt;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mutex as StdMutex`
[INFO] [stdout]  --> src/raft/consensus.rs:4:22
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::sync::{Arc, Mutex as StdMutex};
[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: `Instant as StdInstant`
[INFO] [stdout]  --> src/raft/consensus.rs:5:27
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::time::{Duration, Instant as StdInstant};
[INFO] [stdout]   |                           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tonic::server`
[INFO] [stdout]  --> src/raft/config.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use tonic::server;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `peer`
[INFO] [stdout]  --> src/raft/config.rs:5:19
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::raft::{peer, proto};
[INFO] [stdout]   |                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Error`
[INFO] [stdout]  --> src/raft/config.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::io::Error;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::raft::peer::Peer`
[INFO] [stdout]    --> src/raft/config.rs:186:9
[INFO] [stdout]     |
[INFO] [stdout] 186 |     use crate::raft::peer::Peer;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tonic::server`
[INFO] [stdout]  --> src/raft/peer.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use tonic::server;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Instant`
[INFO] [stdout]  --> src/raft/timer.rs:4:27
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::time::{Duration, Instant};
[INFO] [stdout]   |                           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Read`
[INFO] [stdout]  --> src/raft/log.rs:6:37
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::io::{BufReader, BufWriter, Read, Write};
[INFO] [stdout]   |                                     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::clone`
[INFO] [stdout]  --> src/raft/metadata.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::clone;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/raft/metadata.rs:5:21
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::io::{Read, Write};
[INFO] [stdout]   |                     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mutex`
[INFO] [stdout]  --> src/raft/metadata.rs:7:22
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::sync::{Arc, Mutex};
[INFO] [stdout]   |                      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Rng`
[INFO] [stdout]  --> src/raft/util.rs:2:18
[INFO] [stdout]   |
[INFO] [stdout] 2 | use rand::{self, Rng};
[INFO] [stdout]   |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Instant`
[INFO] [stdout]  --> src/raft/util.rs:3:27
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::time::{Duration, Instant};
[INFO] [stdout]   |                           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::raft::proto`
[INFO] [stdout]  --> src/raft/state_machine.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::raft::proto;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::any::Any`
[INFO] [stdout]  --> src/raft/state_machine.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::any::Any;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tonic::transport::Channel`
[INFO] [stdout]  --> src/raft/rpc.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use tonic::transport::Channel;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `timer`
[INFO] [stdout]  --> src/raft/rpc.rs:4:37
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::raft::{consensus, proto, timer};
[INFO] [stdout]   |                                     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `Instant`
[INFO] [stdout]  --> src/raft/rpc.rs:7:17
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::time::{Duration, Instant};
[INFO] [stdout]   |                 ^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mutex`
[INFO] [stdout]  --> src/raft/lib.rs:2:22
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::sync::{Arc, Mutex};
[INFO] [stdout]   |                      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `Instant`
[INFO] [stdout]  --> src/raft/lib.rs:3:17
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::time::{Duration, Instant};
[INFO] [stdout]   |                 ^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tracing_subscriber::fmt::writer::MakeWriterExt`
[INFO] [stdout]  --> src/raft/lib.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing_subscriber::fmt::writer::MakeWriterExt;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `raft::proto::EntryType::from_i32`: Use the TryFrom<i32> implementation instead
[INFO] [stdout]    --> src/raft/consensus.rs:499:60
[INFO] [stdout]     |
[INFO] [stdout] 499 |                     let entry_type_val = proto::EntryType::from_i32(entry.entry_type).unwrap_or(proto::EntryType::Data);
[INFO] [stdout]     |                                                            ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `raft::proto::EntryType::from_i32`: Use the TryFrom<i32> implementation instead
[INFO] [stdout]    --> src/raft/consensus.rs:499:60
[INFO] [stdout]     |
[INFO] [stdout] 499 |                     let entry_type_val = proto::EntryType::from_i32(entry.entry_type).unwrap_or(proto::EntryType::Data);
[INFO] [stdout]     |                                                            ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `raft::proto::EntryType::from_i32`: Use the TryFrom<i32> implementation instead
[INFO] [stdout]    --> src/raft/consensus.rs:548:60
[INFO] [stdout]     |
[INFO] [stdout] 548 |                     let entry_type_val = proto::EntryType::from_i32(entry.entry_type).unwrap_or(proto::EntryType::Data);
[INFO] [stdout]     |                                                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `raft::proto::EntryType::from_i32`: Use the TryFrom<i32> implementation instead
[INFO] [stdout]    --> src/raft/consensus.rs:910:42
[INFO] [stdout]     |
[INFO] [stdout] 910 |                     if proto::EntryType::from_i32(entry_being_applied.entry_type) == Some(proto::EntryType::Configuration) {
[INFO] [stdout]     |                                          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `raft::proto::SnapshotDataType::from_i32`: Use the TryFrom<i32> implementation instead
[INFO] [stdout]    --> src/raft/consensus.rs:949:50
[INFO] [stdout]     |
[INFO] [stdout] 949 |         let data_type = proto::SnapshotDataType::from_i32(request.snapshot_data_type).unwrap_or(proto::SnapshotDataType::Snapshot);
[INFO] [stdout]     |                                                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `raft::proto::EntryType::from_i32`: Use the TryFrom<i32> implementation instead
[INFO] [stdout]    --> src/raft/consensus.rs:548:60
[INFO] [stdout]     |
[INFO] [stdout] 548 |                     let entry_type_val = proto::EntryType::from_i32(entry.entry_type).unwrap_or(proto::EntryType::Data);
[INFO] [stdout]     |                                                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `raft::proto::EntryType::from_i32`: Use the TryFrom<i32> implementation instead
[INFO] [stdout]    --> src/raft/consensus.rs:910:42
[INFO] [stdout]     |
[INFO] [stdout] 910 |                     if proto::EntryType::from_i32(entry_being_applied.entry_type) == Some(proto::EntryType::Configuration) {
[INFO] [stdout]     |                                          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `raft::proto::SnapshotDataType::from_i32`: Use the TryFrom<i32> implementation instead
[INFO] [stdout]    --> src/raft/consensus.rs:949:50
[INFO] [stdout]     |
[INFO] [stdout] 949 |         let data_type = proto::SnapshotDataType::from_i32(request.snapshot_data_type).unwrap_or(proto::SnapshotDataType::Snapshot);
[INFO] [stdout]     |                                                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/raft/log.rs:6:43
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::io::{BufReader, BufWriter, Read, Write};
[INFO] [stdout]   |                                           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/raft/log.rs:6:43
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::io::{BufReader, BufWriter, Read, Write};
[INFO] [stdout]   |                                           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tx`
[INFO] [stdout]    --> src/raft/timer.rs:111:21
[INFO] [stdout]     |
[INFO] [stdout] 111 |         if let Some(tx) = self.stop_tx.take() {
[INFO] [stdout]     |                     ^^ help: if this is intentional, prefix it with an underscore: `_tx`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `handle`
[INFO] [stdout]    --> src/raft/timer.rs:116:25
[INFO] [stdout]     |
[INFO] [stdout] 116 |             if let Some(handle) = self.handle.take() {
[INFO] [stdout]     |                         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_handle`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/raft/config.rs:191:13
[INFO] [stdout]     |
[INFO] [stdout] 191 |         let mut config = Config::new();
[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]    --> src/raft/config.rs:233:13
[INFO] [stdout]     |
[INFO] [stdout] 233 |         let mut current_config = Config::new_stable(vec![
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `interval_micros`
[INFO] [stdout]   --> src/benchmarks/time_bench.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     interval_micros: u128,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_interval_micros`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `jitters_ns`
[INFO] [stdout]   --> src/benchmarks/time_bench.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     jitters_ns: Arc<Mutex<Vec<i64>>>, // Store jitter in nanoseconds
[INFO] [stdout]    |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_jitters_ns`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_jitter_callback` is never used
[INFO] [stdout]   --> src/benchmarks/time_bench.rs:12:4
[INFO] [stdout]    |
[INFO] [stdout] 12 | fn create_jitter_callback(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_async_timers` is never used
[INFO] [stdout]   --> src/benchmarks/time_bench.rs:69:18
[INFO] [stdout]    |
[INFO] [stdout] 69 |     pub async fn run_async_timers(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: crate `KEEP_RUNNING` should have a snake case name
[INFO] [stdout]   |
[INFO] [stdout]   = help: convert the identifier to snake case: `keep_running`
[INFO] [stdout]   = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tx`
[INFO] [stdout]    --> src/raft/timer.rs:111:21
[INFO] [stdout]     |
[INFO] [stdout] 111 |         if let Some(tx) = self.stop_tx.take() {
[INFO] [stdout]     |                     ^^ help: if this is intentional, prefix it with an underscore: `_tx`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `handle`
[INFO] [stdout]    --> src/raft/timer.rs:116:25
[INFO] [stdout]     |
[INFO] [stdout] 116 |             if let Some(handle) = self.handle.take() {
[INFO] [stdout]     |                         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_handle`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]  --> app/server1.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fs;
[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: `std::path::Path`
[INFO] [stdout]  --> app/server1.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::path::Path;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Read` and `Write`
[INFO] [stdout]  --> app/server1.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::io::{Read, Write};
[INFO] [stdout]   |               ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `snapshot`
[INFO] [stdout]  --> app/server1.rs:8:40
[INFO] [stdout]   |
[INFO] [stdout] 8 | use KEEP_RUNNING::raft::{self, config, snapshot};
[INFO] [stdout]   |                                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rpc`
[INFO] [stdout]  --> app/server1.rs:9:44
[INFO] [stdout]   |
[INFO] [stdout] 9 | use KEEP_RUNNING::raft::{consensus, proto, rpc, state_machine};
[INFO] [stdout]   |                                            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Instant`
[INFO] [stdout]   --> app/server1.rs:13:29
[INFO] [stdout]    |
[INFO] [stdout] 13 | use tokio::time::{Duration, Instant};
[INFO] [stdout]    |                             ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `interval_micros`
[INFO] [stdout]   --> src/benchmarks/time_bench.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     interval_micros: u128,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_interval_micros`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `jitters_ns`
[INFO] [stdout]   --> src/benchmarks/time_bench.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     jitters_ns: Arc<Mutex<Vec<i64>>>, // Store jitter in nanoseconds
[INFO] [stdout]    |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_jitters_ns`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_jitter_callback` is never used
[INFO] [stdout]   --> src/benchmarks/time_bench.rs:12:4
[INFO] [stdout]    |
[INFO] [stdout] 12 | fn create_jitter_callback(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_async_timers` is never used
[INFO] [stdout]   --> src/benchmarks/time_bench.rs:69:18
[INFO] [stdout]    |
[INFO] [stdout] 69 |     pub async fn run_async_timers(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mutex as StdMutex`
[INFO] [stdout]  --> src/raft/consensus.rs:4:22
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::sync::{Arc, Mutex as StdMutex};
[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: `Instant as StdInstant`
[INFO] [stdout]  --> src/raft/consensus.rs:5:27
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::time::{Duration, Instant as StdInstant};
[INFO] [stdout]   |                           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tonic::server`
[INFO] [stdout]  --> src/raft/config.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use tonic::server;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `peer`
[INFO] [stdout]  --> src/raft/config.rs:5:19
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::raft::{peer, proto};
[INFO] [stdout]   |                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Error`
[INFO] [stdout]  --> src/raft/config.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::io::Error;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::raft::peer::Peer`
[INFO] [stdout]    --> src/raft/config.rs:186:9
[INFO] [stdout]     |
[INFO] [stdout] 186 |     use crate::raft::peer::Peer;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tonic::server`
[INFO] [stdout]  --> src/raft/peer.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use tonic::server;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Instant`
[INFO] [stdout]  --> src/raft/timer.rs:4:27
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::time::{Duration, Instant};
[INFO] [stdout]   |                           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Read`
[INFO] [stdout]  --> src/raft/log.rs:6:37
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::io::{BufReader, BufWriter, Read, Write};
[INFO] [stdout]   |                                     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::clone`
[INFO] [stdout]  --> src/raft/metadata.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::clone;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::error`
[INFO] [stdout]  --> app/client.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use serde_json::error;
[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: `Write`
[INFO] [stdout]  --> src/raft/metadata.rs:5:21
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::io::{Read, Write};
[INFO] [stdout]   |                     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mutex`
[INFO] [stdout]  --> src/raft/metadata.rs:7:22
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::sync::{Arc, Mutex};
[INFO] [stdout]   |                      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Rng`
[INFO] [stdout]  --> src/raft/util.rs:2:18
[INFO] [stdout]   |
[INFO] [stdout] 2 | use rand::{self, Rng};
[INFO] [stdout]   |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Instant`
[INFO] [stdout]  --> src/raft/util.rs:3:27
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::time::{Duration, Instant};
[INFO] [stdout]   |                           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::raft::proto`
[INFO] [stdout]  --> src/raft/state_machine.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::raft::proto;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::any::Any`
[INFO] [stdout]  --> src/raft/state_machine.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::any::Any;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tonic::transport::Channel`
[INFO] [stdout]  --> src/raft/rpc.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use tonic::transport::Channel;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `timer`
[INFO] [stdout]  --> src/raft/rpc.rs:4:37
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::raft::{consensus, proto, timer};
[INFO] [stdout]   |                                     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `Instant`
[INFO] [stdout]  --> src/raft/rpc.rs:7:17
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::time::{Duration, Instant};
[INFO] [stdout]   |                 ^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mutex`
[INFO] [stdout]  --> src/raft/lib.rs:2:22
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::sync::{Arc, Mutex};
[INFO] [stdout]   |                      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `Instant`
[INFO] [stdout]  --> src/raft/lib.rs:3:17
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::time::{Duration, Instant};
[INFO] [stdout]   |                 ^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tracing_subscriber::fmt::writer::MakeWriterExt`
[INFO] [stdout]  --> src/raft/lib.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing_subscriber::fmt::writer::MakeWriterExt;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `raft::metadata::*`
[INFO] [stdout]  --> src/main.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use raft::metadata::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow::Result`
[INFO] [stdout]  --> src/main.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use anyhow::Result;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log as logging`
[INFO] [stdout]  --> src/main.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use log as logging;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `sleep`
[INFO] [stdout]  --> src/main.rs:6:19
[INFO] [stdout]   |
[INFO] [stdout] 6 | use tokio::time::{sleep, Duration};
[INFO] [stdout]   |                   ^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mutex as StdMutex`
[INFO] [stdout]  --> src/raft/consensus.rs:4:22
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::sync::{Arc, Mutex as StdMutex};
[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: `Instant as StdInstant`
[INFO] [stdout]  --> src/raft/consensus.rs:5:27
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::time::{Duration, Instant as StdInstant};
[INFO] [stdout]   |                           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tonic::server`
[INFO] [stdout]  --> src/raft/config.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use tonic::server;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `peer`
[INFO] [stdout]  --> src/raft/config.rs:5:19
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::raft::{peer, proto};
[INFO] [stdout]   |                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Error`
[INFO] [stdout]  --> src/raft/config.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::io::Error;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tonic::server`
[INFO] [stdout]  --> src/raft/peer.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use tonic::server;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ConfigState`
[INFO] [stdout]  --> src/raft/peer.rs:2:33
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::raft::config::{self, ConfigState};
[INFO] [stdout]   |                                 ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Instant`
[INFO] [stdout]  --> src/raft/timer.rs:4:27
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::time::{Duration, Instant};
[INFO] [stdout]   |                           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Read`
[INFO] [stdout]  --> src/raft/log.rs:6:37
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::io::{BufReader, BufWriter, Read, Write};
[INFO] [stdout]   |                                     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::clone`
[INFO] [stdout]  --> src/raft/metadata.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::clone;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/raft/metadata.rs:5:21
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::io::{Read, Write};
[INFO] [stdout]   |                     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mutex`
[INFO] [stdout]  --> src/raft/metadata.rs:7:22
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::sync::{Arc, Mutex};
[INFO] [stdout]   |                      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sleep`
[INFO] [stdout]   --> src/raft/metadata.rs:10:19
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tokio::time::{sleep, Duration, interval};
[INFO] [stdout]    |                   ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Rng`
[INFO] [stdout]  --> src/raft/util.rs:2:18
[INFO] [stdout]   |
[INFO] [stdout] 2 | use rand::{self, Rng};
[INFO] [stdout]   |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Instant`
[INFO] [stdout]  --> src/raft/util.rs:3:27
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::time::{Duration, Instant};
[INFO] [stdout]   |                           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::raft::proto`
[INFO] [stdout]  --> src/raft/state_machine.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::raft::proto;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::any::Any`
[INFO] [stdout]  --> src/raft/state_machine.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::any::Any;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tonic::transport::Channel`
[INFO] [stdout]  --> src/raft/rpc.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use tonic::transport::Channel;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `timer`
[INFO] [stdout]  --> src/raft/rpc.rs:4:37
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::raft::{consensus, proto, timer};
[INFO] [stdout]   |                                     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `Instant`
[INFO] [stdout]  --> src/raft/rpc.rs:7:17
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::time::{Duration, Instant};
[INFO] [stdout]   |                 ^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mutex`
[INFO] [stdout]  --> src/raft/lib.rs:2:22
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::sync::{Arc, Mutex};
[INFO] [stdout]   |                      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `Instant`
[INFO] [stdout]  --> src/raft/lib.rs:3:17
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::time::{Duration, Instant};
[INFO] [stdout]   |                 ^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tracing_subscriber::fmt::writer::MakeWriterExt`
[INFO] [stdout]  --> src/raft/lib.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing_subscriber::fmt::writer::MakeWriterExt;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `raft::metadata::*`
[INFO] [stdout]  --> src/main.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use raft::metadata::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow::Result`
[INFO] [stdout]  --> src/main.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use anyhow::Result;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log as logging`
[INFO] [stdout]  --> src/main.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use log as logging;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `sleep`
[INFO] [stdout]  --> src/main.rs:6:19
[INFO] [stdout]   |
[INFO] [stdout] 6 | use tokio::time::{sleep, Duration};
[INFO] [stdout]   |                   ^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `raft::proto::EntryType::from_i32`: Use the TryFrom<i32> implementation instead
[INFO] [stdout]    --> src/raft/consensus.rs:499:60
[INFO] [stdout]     |
[INFO] [stdout] 499 |                     let entry_type_val = proto::EntryType::from_i32(entry.entry_type).unwrap_or(proto::EntryType::Data);
[INFO] [stdout]     |                                                            ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> app/client.rs:87:9
[INFO] [stdout]    |
[INFO] [stdout] 87 |     let mut rpc_client = rpc::Client {};
[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: use of deprecated associated function `raft::proto::EntryType::from_i32`: Use the TryFrom<i32> implementation instead
[INFO] [stdout]    --> src/raft/consensus.rs:548:60
[INFO] [stdout]     |
[INFO] [stdout] 548 |                     let entry_type_val = proto::EntryType::from_i32(entry.entry_type).unwrap_or(proto::EntryType::Data);
[INFO] [stdout]     |                                                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `raft::proto::EntryType::from_i32`: Use the TryFrom<i32> implementation instead
[INFO] [stdout]    --> src/raft/consensus.rs:910:42
[INFO] [stdout]     |
[INFO] [stdout] 910 |                     if proto::EntryType::from_i32(entry_being_applied.entry_type) == Some(proto::EntryType::Configuration) {
[INFO] [stdout]     |                                          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `raft::proto::EntryType::from_i32`: Use the TryFrom<i32> implementation instead
[INFO] [stdout]    --> src/raft/consensus.rs:499:60
[INFO] [stdout]     |
[INFO] [stdout] 499 |                     let entry_type_val = proto::EntryType::from_i32(entry.entry_type).unwrap_or(proto::EntryType::Data);
[INFO] [stdout]     |                                                            ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `raft::proto::SnapshotDataType::from_i32`: Use the TryFrom<i32> implementation instead
[INFO] [stdout]    --> src/raft/consensus.rs:949:50
[INFO] [stdout]     |
[INFO] [stdout] 949 |         let data_type = proto::SnapshotDataType::from_i32(request.snapshot_data_type).unwrap_or(proto::SnapshotDataType::Snapshot);
[INFO] [stdout]     |                                                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `raft::proto::EntryType::from_i32`: Use the TryFrom<i32> implementation instead
[INFO] [stdout]    --> src/raft/consensus.rs:548:60
[INFO] [stdout]     |
[INFO] [stdout] 548 |                     let entry_type_val = proto::EntryType::from_i32(entry.entry_type).unwrap_or(proto::EntryType::Data);
[INFO] [stdout]     |                                                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `raft::proto::EntryType::from_i32`: Use the TryFrom<i32> implementation instead
[INFO] [stdout]    --> src/raft/consensus.rs:910:42
[INFO] [stdout]     |
[INFO] [stdout] 910 |                     if proto::EntryType::from_i32(entry_being_applied.entry_type) == Some(proto::EntryType::Configuration) {
[INFO] [stdout]     |                                          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `raft::proto::SnapshotDataType::from_i32`: Use the TryFrom<i32> implementation instead
[INFO] [stdout]    --> src/raft/consensus.rs:949:50
[INFO] [stdout]     |
[INFO] [stdout] 949 |         let data_type = proto::SnapshotDataType::from_i32(request.snapshot_data_type).unwrap_or(proto::SnapshotDataType::Snapshot);
[INFO] [stdout]     |                                                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/raft/log.rs:6:43
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::io::{BufReader, BufWriter, Read, Write};
[INFO] [stdout]   |                                           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `interval_micros`
[INFO] [stdout]   --> src/benchmarks/time_bench.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     interval_micros: u128,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_interval_micros`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `jitters_ns`
[INFO] [stdout]   --> src/benchmarks/time_bench.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     jitters_ns: Arc<Mutex<Vec<i64>>>, // Store jitter in nanoseconds
[INFO] [stdout]    |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_jitters_ns`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/raft/log.rs:6:43
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::io::{BufReader, BufWriter, Read, Write};
[INFO] [stdout]   |                                           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `interval_micros`
[INFO] [stdout]   --> src/benchmarks/time_bench.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     interval_micros: u128,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_interval_micros`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `jitters_ns`
[INFO] [stdout]   --> src/benchmarks/time_bench.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     jitters_ns: Arc<Mutex<Vec<i64>>>, // Store jitter in nanoseconds
[INFO] [stdout]    |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_jitters_ns`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/raft/config.rs:191:13
[INFO] [stdout]     |
[INFO] [stdout] 191 |         let mut config = Config::new();
[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]    --> src/raft/config.rs:233:13
[INFO] [stdout]     |
[INFO] [stdout] 233 |         let mut current_config = Config::new_stable(vec![
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tx`
[INFO] [stdout]    --> src/raft/timer.rs:111:21
[INFO] [stdout]     |
[INFO] [stdout] 111 |         if let Some(tx) = self.stop_tx.take() {
[INFO] [stdout]     |                     ^^ help: if this is intentional, prefix it with an underscore: `_tx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `handle`
[INFO] [stdout]    --> src/raft/timer.rs:116:25
[INFO] [stdout]     |
[INFO] [stdout] 116 |             if let Some(handle) = self.handle.take() {
[INFO] [stdout]     |                         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_handle`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tx`
[INFO] [stdout]    --> src/raft/timer.rs:111:21
[INFO] [stdout]     |
[INFO] [stdout] 111 |         if let Some(tx) = self.stop_tx.take() {
[INFO] [stdout]     |                     ^^ help: if this is intentional, prefix it with an underscore: `_tx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `handle`
[INFO] [stdout]    --> src/raft/timer.rs:116:25
[INFO] [stdout]     |
[INFO] [stdout] 116 |             if let Some(handle) = self.handle.take() {
[INFO] [stdout]     |                         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_handle`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_noop_callback` is never used
[INFO] [stdout]  --> src/benchmarks/time_bench.rs:5:4
[INFO] [stdout]   |
[INFO] [stdout] 5 | fn create_noop_callback(counter: Arc<AtomicUsize>) -> impl FnMut() -> () + Send + Clone + 'static {
[INFO] [stdout]   |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_jitter_callback` is never used
[INFO] [stdout]   --> src/benchmarks/time_bench.rs:12:4
[INFO] [stdout]    |
[INFO] [stdout] 12 | fn create_jitter_callback(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_benchmarks` is never used
[INFO] [stdout]    --> src/benchmarks/time_bench.rs:101:14
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub async fn run_benchmarks() {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_std_timers` is never used
[INFO] [stdout]   --> src/benchmarks/time_bench.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 |     pub fn run_std_timers(
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_async_timers` is never used
[INFO] [stdout]   --> src/benchmarks/time_bench.rs:69:18
[INFO] [stdout]    |
[INFO] [stdout] 69 |     pub async fn run_async_timers(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `State` is never used
[INFO] [stdout]   --> src/raft/consensus.rs:10:10
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub enum State {
[INFO] [stdout]    |          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Consensus` is never constructed
[INFO] [stdout]   --> src/raft/consensus.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct Consensus {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]     --> src/raft/consensus.rs:48:18
[INFO] [stdout]      |
[INFO] [stdout]   47 | impl Consensus {
[INFO] [stdout]      | -------------- associated items in this implementation
[INFO] [stdout]   48 |     pub async fn new(
[INFO] [stdout]      |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout]  229 |     fn update_peer_config_states(&mut self) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  237 |     async fn append_entries_to_peers(&mut self, heartbeat: bool) {
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  262 |     async fn append_one_entry_to_peer(&mut self, peer_id: u64, heartbeat: bool) {
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  356 |     async fn install_snapshot_to_peer(&mut self, peer_id: u64) {
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  461 |     async fn leader_advance_commit_index(&mut self) {
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  530 |     async fn follower_advance_commit_index(&mut self, leader_commit_index: u64) {
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  574 |     async fn apply_configuration_to_internal_state(&mut self, config_to_apply: config::Config, committed: bool) { // Renamed `config` to ...
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  635 |     async fn append_and_replicate_config_change(&mut self, target_new_servers_opt: Option<Vec<proto::ServerInfo>>) -> bool {
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  674 |     async fn append_and_replicate_final_config(&mut self) {
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  684 |     pub async fn shutdown(&mut self) {
[INFO] [stdout]      |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  700 |     pub async fn handle_snapshot_timeout(&mut self) {
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  770 |     pub async fn handle_propose_rpc(
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  821 |     pub async fn handle_append_entries_rpc(
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  930 |     pub async fn handle_install_snapshot_rpc(
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1033 |     pub fn handle_get_leader_rpc(
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1069 |     pub fn handle_get_configuration_rpc(
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1077 |     pub async fn handle_set_configuration_rpc(
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1111 |     pub async fn handle_heartbeat_timeout(&mut self) {
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1149 |     pub async fn handle_election_timeout(&mut self) {
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1182 |     async fn request_vote_rpc(&mut self) {
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1296 |     pub async fn handle_request_vote_rpc(
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1363 |     async fn become_leader(&mut self) {
[INFO] [stdout]      |              ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1394 |     async fn step_down(&mut self, new_term: u64) {
[INFO] [stdout]      |              ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1448 |      pub async fn replicate(
[INFO] [stdout]      |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ELECTION_TIMEOUT_MAX_MILLIS` is never used
[INFO] [stdout]  --> src/raft/config.rs:9:11
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub const ELECTION_TIMEOUT_MAX_MILLIS: u64 = 15000;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ELECTION_TIMEOUT_MIN_MILLIS` is never used
[INFO] [stdout]   --> src/raft/config.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub const ELECTION_TIMEOUT_MIN_MILLIS: u64 = 10000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ELECTION_TIMEOUT_MIN` is never used
[INFO] [stdout]   --> src/raft/config.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub const ELECTION_TIMEOUT_MIN: Duration = Duration::from_millis(ELECTION_TIMEOUT_MIN_MILLIS);
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HEARTBEAT_INTERVAL` is never used
[INFO] [stdout]   --> src/raft/config.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub const HEARTBEAT_INTERVAL: Duration = Duration::from_millis(3000);
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SNAPSHOT_INTERVAL` is never used
[INFO] [stdout]   --> src/raft/config.rs:17:11
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub const SNAPSHOT_INTERVAL: Duration = Duration::from_millis(30000);
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SNAPSHOT_LOG_LENGTH_THRESHOLD` is never used
[INFO] [stdout]   --> src/raft/config.rs:20:11
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub const SNAPSHOT_LOG_LENGTH_THRESHOLD: usize = 5;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NONE_SERVER_ID` is never used
[INFO] [stdout]   --> src/raft/config.rs:22:11
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub const NONE_SERVER_ID: u64 = 0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NONE_DATA` is never used
[INFO] [stdout]   --> src/raft/config.rs:23:11
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub const NONE_DATA: &'static str = "None";
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SNAPSHOT_TRUNK_SIZE` is never used
[INFO] [stdout]   --> src/raft/config.rs:26:11
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub const SNAPSHOT_TRUNK_SIZE: usize = 30;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConfigState` is never constructed
[INFO] [stdout]   --> src/raft/config.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct ConfigState {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/raft/config.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 35 | impl ConfigState {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] 36 |     pub fn new() -> ConfigState {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Config` is never constructed
[INFO] [stdout]   --> src/raft/config.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub struct Config {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/raft/config.rs:51:12
[INFO] [stdout]     |
[INFO] [stdout]  50 | impl Config {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout]  51 |     pub fn new() -> Config {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  58 |     pub fn new_stable(initial_servers: Vec<proto::ServerInfo>) -> Config {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  65 |     pub fn from_data(data: &[u8]) -> Config {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  69 |     pub fn to_data(&self) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  74 |     pub fn append_new_servers(&mut self, servers_to_add: &Vec<proto::ServerInfo>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  82 |     pub fn remove_new_servers(&mut self, removed_ids: &[u64]) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub fn append_old_servers(&mut self, peers_to_add: &[crate::raft::peer::Peer]) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  97 |     pub fn ser_new_servers(&mut self, servers: Vec<proto::ServerInfo>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub fn set_old_servers(&mut self, servers: Vec<proto::ServerInfo>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub fn finalize_transition(&self) -> Config {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub fn start_transition(&self, target_new_servers: Vec<proto::ServerInfo>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |     pub fn get_node_state(&self, node_id: u64) -> ConfigState {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn is_joint(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 146 |     pub fn is_stable(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 151 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 155 |     pub fn all_servers_in_config(&self) -> Vec<proto::ServerInfo> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub fn all_ids_in_config(&self) -> Vec<u64> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Peer` is never constructed
[INFO] [stdout]  --> src/raft/peer.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct Peer {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/raft/peer.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl Peer {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 23 |     pub fn new(server_id: u64, server_addr: String) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PeerManager` is never constructed
[INFO] [stdout]   --> src/raft/peer.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub struct PeerManager {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/raft/peer.rs:42:12
[INFO] [stdout]     |
[INFO] [stdout]  41 | impl PeerManager {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  42 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  46 |     pub fn add(&mut self, mut new_peers: Vec<Peer>, last_log_index: u64) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  55 |     pub fn remove(&mut self, server_ids: Vec<u64>) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  65 |     pub fn peers_mut(&mut self) -> &mut Vec<Peer> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  68 |     pub fn peers(&self) -> &Vec<Peer> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  71 |     pub fn len(&self) -> usize {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  74 |     pub fn server_ids(&self) -> Vec<u64> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  78 |     pub fn peer(&mut self, server_id: u64) -> Option<&mut Peer> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub fn contains(&self, server_id: u64) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  90 |     pub fn reset_vote(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn quoram_match_index(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn quorum_vote_granted(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Timer` is never constructed
[INFO] [stdout]  --> src/raft/timer.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct Timer {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `schedule`, `stop_internal`, `reset`, and `stop` are never used
[INFO] [stdout]    --> src/raft/timer.rs:19:12
[INFO] [stdout]     |
[INFO] [stdout]  18 | impl Timer {
[INFO] [stdout]     | ---------- associated items in this implementation
[INFO] [stdout]  19 |     pub fn new(name: &str) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  30 |     pub fn schedule<F>(&mut self, trigger_interval: Duration, callback: F)
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     fn stop_internal(&mut self, wait_for_join: bool) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |      pub fn reset(&mut self, trigger_interval: Duration) {
[INFO] [stdout]     |             ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub async fn stop(&mut self) { // Made async to allow .await on JoinHandle
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `LogEntryData` is never used
[INFO] [stdout]   --> src/raft/log.rs:24:10
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub type LogEntryData = (proto::EntryType, Vec<u8>);
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Log` is never constructed
[INFO] [stdout]   --> src/raft/log.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct Log {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/raft/log.rs:42:12
[INFO] [stdout]     |
[INFO] [stdout]  39 | impl Log {
[INFO] [stdout]     | -------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  42 |     pub fn new(start_index: u64, metadata_dir: String) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  54 |     pub fn append_data(&mut self, term: u64, entry_data_list: Vec<LogEntryData>) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  77 |     pub fn append_entries(&mut self, entries_to_append: Vec<proto::LogEntry>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn entries(&self) -> &Vec<proto::LogEntry> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn start_index(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub fn entry(&self, index: u64) -> Option<&proto::LogEntry> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn pack_entries(&self, next_index: u64) -> Vec<proto::LogEntry> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn last_index(&self, last_included_index: u64) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 180 |     pub fn last_term(&self, last_included_term: u64) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 198 |     pub fn prev_log_term(
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 237 |     pub fn truncate_suffix(&mut self, last_index_kept: u64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 285 |     pub fn truncate_prefix(&mut self, last_included_index_from_snapshot: u64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 321 |     pub fn committed_entries_len(&self, commit_index: u64) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 332 |     pub fn last_configuration(&self) -> Option<config::Config> { // 返回新的 config::Config
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 346 |     pub fn gen_log_filepath(metadata_dir: &str) -> String { // &str 参数更通用
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 351 |     pub fn reload(&mut self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 392 |     pub fn dump(&self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `THREAD_CHECK_INTERVAL` is never used
[INFO] [stdout]  --> src/raft/timer_old.rs:7:7
[INFO] [stdout]   |
[INFO] [stdout] 7 | const THREAD_CHECK_INTERVAL: Duration = Duration::from_millis(10);
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Timer` is never constructed
[INFO] [stdout]   --> src/raft/timer_old.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct Timer {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `schedule`, `reset`, and `stop` are never used
[INFO] [stdout]   --> src/raft/timer_old.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl Timer {
[INFO] [stdout]    | ---------- associated items in this implementation
[INFO] [stdout] 26 |     pub fn new(name: &str) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn schedule<F>(&mut self, trigger_interval: Duration, callback: F)
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 80 |     pub fn reset(&mut self, trigger_interval: Duration) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 92 |     pub fn stop(&mut self) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Metadata` is never constructed
[INFO] [stdout]   --> src/raft/metadata.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct Metadata {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PersistCommand` is never used
[INFO] [stdout]   --> src/raft/metadata.rs:22:6
[INFO] [stdout]    |
[INFO] [stdout] 22 | enum PersistCommand {
[INFO] [stdout]    |      ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MetadataManager` is never constructed
[INFO] [stdout]   --> src/raft/metadata.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct MetadataManager {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new`, `gen_metadata_filepath`, and `load` are never used
[INFO] [stdout]   --> src/raft/metadata.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl Metadata {
[INFO] [stdout]    | ------------- associated functions in this implementation
[INFO] [stdout] 37 |     pub fn new(dir: String) -> Metadata {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn gen_metadata_filepath(dir: &str) -> PathBuf {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub fn load(dir: &str) -> Result<Self> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `persist_to_disk`, `update_current_term`, `update_voted_for`, `sync`, and `get` are never used
[INFO] [stdout]    --> src/raft/metadata.rs:76:12
[INFO] [stdout]     |
[INFO] [stdout]  75 | impl MetadataManager {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout]  76 |     pub fn new(initial_metadata: Metadata, flush_interval: Duration) -> Arc<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     async fn persist_to_disk(metadata_to_persist: &Metadata) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 158 |     pub async fn update_current_term(&self, current_term: u64) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub async fn update_voted_for(&self, voted_for: u64) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 187 |     pub async fn sync(&self) {
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 193 |     pub async fn get(&self) -> Metadata {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Snapshot` is never constructed
[INFO] [stdout]   --> src/raft/snapshot.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct Snapshot {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/raft/snapshot.rs:28:12
[INFO] [stdout]     |
[INFO] [stdout]  27 | impl Snapshot {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout]  28 |     pub fn new(snapshot_dir: String) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  37 |     pub fn take_snapshot_metadata(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  73 |     pub fn reload_metadata(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     fn parse_snapshot_filename(filename: &str, expected_extension: &str) -> Option<(u64, u64)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     fn latest_file_with_pattern(&self, extension_suffix: &str) -> Option<String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |     pub fn latest_snapshot_filepath(&mut self) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn latest_metadata_filepath(&mut self) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn gen_snapshot_filepath(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub fn gen_snapshot_metadata_filepath(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 197 |     pub fn gen_tmp_snapshot_filepath(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 207 |     pub fn gen_tmp_snapshot_metadata_filepath(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rand_election_timeout` is never used
[INFO] [stdout]  --> src/raft/util.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn rand_election_timeout() -> Duration {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `StateMachine` is never used
[INFO] [stdout]   --> src/raft/state_machine.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub trait StateMachine: Debug + Send + 'static {
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/raft/state_machine.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl SimpleStateMachine {
[INFO] [stdout]    | ----------------------- associated function in this implementation
[INFO] [stdout] 31 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Server` is never constructed
[INFO] [stdout]   --> src/raft/rpc.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Server {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `start_server` is never used
[INFO] [stdout]   --> src/raft/rpc.rs:17:14
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub async fn start_server(
[INFO] [stdout]    |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Client` is never constructed
[INFO] [stdout]    --> src/raft/rpc.rs:201:12
[INFO] [stdout]     |
[INFO] [stdout] 201 | pub struct Client {}
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/raft/rpc.rs:204:18
[INFO] [stdout]     |
[INFO] [stdout] 203 | impl Client {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] 204 |     pub async fn append_entries(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     pub async fn request_vote(
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 249 |     pub async fn install_snapshot(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 271 |     pub async fn propose(
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 282 |     pub async fn get_leader(
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 294 |     pub async fn get_configuration(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     pub async fn set_configuration(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `start` is never used
[INFO] [stdout]  --> src/raft/lib.rs:9:14
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub async fn start (
[INFO] [stdout]   |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `stop` is never used
[INFO] [stdout]   --> src/raft/lib.rs:47:14
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub async fn stop(
[INFO] [stdout]    |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_noop_callback` is never used
[INFO] [stdout]  --> src/benchmarks/time_bench.rs:5:4
[INFO] [stdout]   |
[INFO] [stdout] 5 | fn create_noop_callback(counter: Arc<AtomicUsize>) -> impl FnMut() -> () + Send + Clone + 'static {
[INFO] [stdout]   |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_jitter_callback` is never used
[INFO] [stdout]   --> src/benchmarks/time_bench.rs:12:4
[INFO] [stdout]    |
[INFO] [stdout] 12 | fn create_jitter_callback(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_benchmarks` is never used
[INFO] [stdout]    --> src/benchmarks/time_bench.rs:101:14
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub async fn run_benchmarks() {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_std_timers` is never used
[INFO] [stdout]   --> src/benchmarks/time_bench.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 |     pub fn run_std_timers(
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_async_timers` is never used
[INFO] [stdout]   --> src/benchmarks/time_bench.rs:69:18
[INFO] [stdout]    |
[INFO] [stdout] 69 |     pub async fn run_async_timers(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `State` is never used
[INFO] [stdout]   --> src/raft/consensus.rs:10:10
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub enum State {
[INFO] [stdout]    |          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Consensus` is never constructed
[INFO] [stdout]   --> src/raft/consensus.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct Consensus {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]     --> src/raft/consensus.rs:48:18
[INFO] [stdout]      |
[INFO] [stdout]   47 | impl Consensus {
[INFO] [stdout]      | -------------- associated items in this implementation
[INFO] [stdout]   48 |     pub async fn new(
[INFO] [stdout]      |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout]  229 |     fn update_peer_config_states(&mut self) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  237 |     async fn append_entries_to_peers(&mut self, heartbeat: bool) {
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  262 |     async fn append_one_entry_to_peer(&mut self, peer_id: u64, heartbeat: bool) {
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  356 |     async fn install_snapshot_to_peer(&mut self, peer_id: u64) {
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  461 |     async fn leader_advance_commit_index(&mut self) {
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  530 |     async fn follower_advance_commit_index(&mut self, leader_commit_index: u64) {
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  574 |     async fn apply_configuration_to_internal_state(&mut self, config_to_apply: config::Config, committed: bool) { // Renamed `config` to ...
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  635 |     async fn append_and_replicate_config_change(&mut self, target_new_servers_opt: Option<Vec<proto::ServerInfo>>) -> bool {
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  674 |     async fn append_and_replicate_final_config(&mut self) {
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  684 |     pub async fn shutdown(&mut self) {
[INFO] [stdout]      |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  700 |     pub async fn handle_snapshot_timeout(&mut self) {
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  770 |     pub async fn handle_propose_rpc(
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  821 |     pub async fn handle_append_entries_rpc(
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  930 |     pub async fn handle_install_snapshot_rpc(
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1033 |     pub fn handle_get_leader_rpc(
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1069 |     pub fn handle_get_configuration_rpc(
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1077 |     pub async fn handle_set_configuration_rpc(
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1111 |     pub async fn handle_heartbeat_timeout(&mut self) {
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1149 |     pub async fn handle_election_timeout(&mut self) {
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1182 |     async fn request_vote_rpc(&mut self) {
[INFO] [stdout]      |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1296 |     pub async fn handle_request_vote_rpc(
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1363 |     async fn become_leader(&mut self) {
[INFO] [stdout]      |              ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1394 |     async fn step_down(&mut self, new_term: u64) {
[INFO] [stdout]      |              ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1448 |      pub async fn replicate(
[INFO] [stdout]      |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ELECTION_TIMEOUT_MAX_MILLIS` is never used
[INFO] [stdout]  --> src/raft/config.rs:9:11
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub const ELECTION_TIMEOUT_MAX_MILLIS: u64 = 15000;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ELECTION_TIMEOUT_MIN_MILLIS` is never used
[INFO] [stdout]   --> src/raft/config.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub const ELECTION_TIMEOUT_MIN_MILLIS: u64 = 10000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ELECTION_TIMEOUT_MIN` is never used
[INFO] [stdout]   --> src/raft/config.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub const ELECTION_TIMEOUT_MIN: Duration = Duration::from_millis(ELECTION_TIMEOUT_MIN_MILLIS);
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HEARTBEAT_INTERVAL` is never used
[INFO] [stdout]   --> src/raft/config.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub const HEARTBEAT_INTERVAL: Duration = Duration::from_millis(3000);
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SNAPSHOT_INTERVAL` is never used
[INFO] [stdout]   --> src/raft/config.rs:17:11
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub const SNAPSHOT_INTERVAL: Duration = Duration::from_millis(30000);
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SNAPSHOT_LOG_LENGTH_THRESHOLD` is never used
[INFO] [stdout]   --> src/raft/config.rs:20:11
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub const SNAPSHOT_LOG_LENGTH_THRESHOLD: usize = 5;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NONE_DATA` is never used
[INFO] [stdout]   --> src/raft/config.rs:23:11
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub const NONE_DATA: &'static str = "None";
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SNAPSHOT_TRUNK_SIZE` is never used
[INFO] [stdout]   --> src/raft/config.rs:26:11
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub const SNAPSHOT_TRUNK_SIZE: usize = 30;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `ser_new_servers` and `set_old_servers` are never used
[INFO] [stdout]    --> src/raft/config.rs:97:12
[INFO] [stdout]     |
[INFO] [stdout]  50 | impl Config {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  97 |     pub fn ser_new_servers(&mut self, servers: Vec<proto::ServerInfo>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub fn set_old_servers(&mut self, servers: Vec<proto::ServerInfo>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `vote_granted` is never read
[INFO] [stdout]   --> src/raft/peer.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct Peer {
[INFO] [stdout]    |            ---- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub vote_granted: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Peer` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/raft/peer.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl Peer {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 23 |     pub fn new(server_id: u64, server_addr: String) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/raft/peer.rs:55:12
[INFO] [stdout]     |
[INFO] [stdout]  41 | impl PeerManager {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  55 |     pub fn remove(&mut self, server_ids: Vec<u64>) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  65 |     pub fn peers_mut(&mut self) -> &mut Vec<Peer> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  71 |     pub fn len(&self) -> usize {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  74 |     pub fn server_ids(&self) -> Vec<u64> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  78 |     pub fn peer(&mut self, server_id: u64) -> Option<&mut Peer> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub fn contains(&self, server_id: u64) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  90 |     pub fn reset_vote(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn quorum_vote_granted(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `committed_entries_len` is never used
[INFO] [stdout]    --> src/raft/log.rs:321:12
[INFO] [stdout]     |
[INFO] [stdout]  39 | impl Log {
[INFO] [stdout]     | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 321 |     pub fn committed_entries_len(&self, commit_index: u64) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `stop` is never used
[INFO] [stdout]   --> src/raft/timer_old.rs:92:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl Timer {
[INFO] [stdout]    | ---------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 92 |     pub fn stop(&mut self) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Snapshot` is never constructed
[INFO] [stdout]   --> src/raft/snapshot.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct Snapshot {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/raft/snapshot.rs:28:12
[INFO] [stdout]     |
[INFO] [stdout]  27 | impl Snapshot {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout]  28 |     pub fn new(snapshot_dir: String) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  37 |     pub fn take_snapshot_metadata(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  73 |     pub fn reload_metadata(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     fn parse_snapshot_filename(filename: &str, expected_extension: &str) -> Option<(u64, u64)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     fn latest_file_with_pattern(&self, extension_suffix: &str) -> Option<String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |     pub fn latest_snapshot_filepath(&mut self) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn latest_metadata_filepath(&mut self) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn gen_snapshot_filepath(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub fn gen_snapshot_metadata_filepath(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 197 |     pub fn gen_tmp_snapshot_filepath(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 207 |     pub fn gen_tmp_snapshot_metadata_filepath(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rand_election_timeout` is never used
[INFO] [stdout]  --> src/raft/util.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn rand_election_timeout() -> Duration {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `StateMachine` is never used
[INFO] [stdout]   --> src/raft/state_machine.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub trait StateMachine: Debug + Send + 'static {
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/raft/state_machine.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl SimpleStateMachine {
[INFO] [stdout]    | ----------------------- associated function in this implementation
[INFO] [stdout] 31 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Server` is never constructed
[INFO] [stdout]   --> src/raft/rpc.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Server {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `start_server` is never used
[INFO] [stdout]   --> src/raft/rpc.rs:17:14
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub async fn start_server(
[INFO] [stdout]    |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Client` is never constructed
[INFO] [stdout]    --> src/raft/rpc.rs:201:12
[INFO] [stdout]     |
[INFO] [stdout] 201 | pub struct Client {}
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/raft/rpc.rs:204:18
[INFO] [stdout]     |
[INFO] [stdout] 203 | impl Client {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] 204 |     pub async fn append_entries(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     pub async fn request_vote(
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 249 |     pub async fn install_snapshot(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 271 |     pub async fn propose(
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 282 |     pub async fn get_leader(
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 294 |     pub async fn get_configuration(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     pub async fn set_configuration(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `start` is never used
[INFO] [stdout]  --> src/raft/lib.rs:9:14
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub async fn start (
[INFO] [stdout]   |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `stop` is never used
[INFO] [stdout]   --> src/raft/lib.rs:47:14
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub async fn stop(
[INFO] [stdout]    |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 36.26s
[INFO] running `Command { std: "docker" "inspect" "d457f7b9888628457b95224b344a1caa2169e8a276be8d74acc01fd8031cae7e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d457f7b9888628457b95224b344a1caa2169e8a276be8d74acc01fd8031cae7e", kill_on_drop: false }`
[INFO] [stdout] d457f7b9888628457b95224b344a1caa2169e8a276be8d74acc01fd8031cae7e
