[INFO] cloning repository https://github.com/fr0stylo/cachetcp
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/fr0stylo/cachetcp" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffr0stylo%2Fcachetcp", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffr0stylo%2Fcachetcp'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 1be4b73e1e443d15fb094d6942be92ee50cb1571
[INFO] checking fr0stylo/cachetcp against master#642c19bfc3a5c1de985bf5d0cc8207ac9d22708a for pr-148577
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffr0stylo%2Fcachetcp" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/fr0stylo/cachetcp
[INFO] finished tweaking git repo https://github.com/fr0stylo/cachetcp
[INFO] tweaked toml for git repo https://github.com/fr0stylo/cachetcp written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/fr0stylo/cachetcp on toolchain 642c19bfc3a5c1de985bf5d0cc8207ac9d22708a
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+642c19bfc3a5c1de985bf5d0cc8207ac9d22708a" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/fr0stylo/cachetcp 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" "+642c19bfc3a5c1de985bf5d0cc8207ac9d22708a" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+642c19bfc3a5c1de985bf5d0cc8207ac9d22708a" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 2014897e067b2402ca5d1370c1c46be88cc33a4384c38c62d30bb3dc83aac82f
[INFO] running `Command { std: "docker" "start" "-a" "2014897e067b2402ca5d1370c1c46be88cc33a4384c38c62d30bb3dc83aac82f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "2014897e067b2402ca5d1370c1c46be88cc33a4384c38c62d30bb3dc83aac82f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2014897e067b2402ca5d1370c1c46be88cc33a4384c38c62d30bb3dc83aac82f", kill_on_drop: false }`
[INFO] [stdout] 2014897e067b2402ca5d1370c1c46be88cc33a4384c38c62d30bb3dc83aac82f
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+642c19bfc3a5c1de985bf5d0cc8207ac9d22708a" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] f0590556dc546848bf87460bcb8705db2dc0a985f611f411f663059d90428f5e
[INFO] running `Command { std: "docker" "start" "-a" "f0590556dc546848bf87460bcb8705db2dc0a985f611f411f663059d90428f5e", kill_on_drop: false }`
[INFO] [stderr]    Compiling serde v1.0.202
[INFO] [stderr]     Checking anstyle-query v1.0.3
[INFO] [stderr]     Checking smallvec v1.11.2
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking anstyle-parse v0.2.4
[INFO] [stderr]     Checking clap_lex v0.7.0
[INFO] [stderr]     Checking getrandom v0.2.14
[INFO] [stderr]    Compiling serde_derive v1.0.202
[INFO] [stderr]    Compiling clap_derive v4.5.4
[INFO] [stderr]    Compiling tokio-macros v2.2.0
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking parking_lot_core v0.9.9
[INFO] [stderr]     Checking anstream v0.6.14
[INFO] [stderr]     Checking parking_lot v0.12.1
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking tokio v1.37.0
[INFO] [stderr]     Checking clap_builder v4.5.2
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking rmp v0.8.14
[INFO] [stderr]     Checking clap v4.5.4
[INFO] [stderr]     Checking serde_json v1.0.117
[INFO] [stderr]     Checking rmp-serde v1.3.0
[INFO] [stderr]     Checking cachetcp v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `BufReader`, `BufWriter`, `Error`, `Read`, `Write`, and `mem::size_of`
[INFO] [stdout]  --> src/proto/mod.rs:3:10
[INFO] [stdout]   |
[INFO] [stdout] 3 |     io::{BufReader, BufWriter, Error, Read, Write},
[INFO] [stdout]   |          ^^^^^^^^^  ^^^^^^^^^  ^^^^^  ^^^^  ^^^^^
[INFO] [stdout] 4 |     mem::size_of,
[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 imports: `AsyncRead` and `AsyncWrite`
[INFO] [stdout]  --> src/proto/mod.rs:7:17
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tokio::io::{AsyncRead, AsyncWrite};
[INFO] [stdout]   |                 ^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `time::SystemTime`
[INFO] [stdout]  --> src/proto/nonblocking/mod.rs:1:46
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{io::Error, mem::size_of, pin::Pin, time::SystemTime};
[INFO] [stdout]   |                                              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> src/persistance/wal.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::future::Future`
[INFO] [stdout]  --> src/storage/storage.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::future::Future;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::pin::Pin`
[INFO] [stdout]  --> src/storage/storage.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::pin::Pin;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BufReader`, `BufWriter`, `Error`, `Read`, `Write`, and `mem::size_of`
[INFO] [stdout]  --> src/proto/mod.rs:3:10
[INFO] [stdout]   |
[INFO] [stdout] 3 |     io::{BufReader, BufWriter, Error, Read, Write},
[INFO] [stdout]   |          ^^^^^^^^^  ^^^^^^^^^  ^^^^^  ^^^^  ^^^^^
[INFO] [stdout] 4 |     mem::size_of,
[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 imports: `AsyncRead` and `AsyncWrite`
[INFO] [stdout]  --> src/proto/mod.rs:7:17
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tokio::io::{AsyncRead, AsyncWrite};
[INFO] [stdout]   |                 ^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `time::SystemTime`
[INFO] [stdout]  --> src/proto/nonblocking/mod.rs:1:46
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{io::Error, mem::size_of, pin::Pin, time::SystemTime};
[INFO] [stdout]   |                                              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> src/persistance/wal.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::future::Future`
[INFO] [stdout]  --> src/storage/storage.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::future::Future;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::pin::Pin`
[INFO] [stdout]  --> src/storage/storage.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::pin::Pin;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Context` and `Poll`
[INFO] [stdout]  --> src/storage/storage.rs:5:17
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::task::{Context, Poll};
[INFO] [stdout]   |                 ^^^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Context` and `Poll`
[INFO] [stdout]  --> src/storage/storage.rs:5:17
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::task::{Context, Poll};
[INFO] [stdout]   |                 ^^^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `command`
[INFO] [stdout]  --> src/cli/mod.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | use clap::{command, Parser, Subcommand};
[INFO] [stdout]   |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/cli/mod.rs:13:36
[INFO] [stdout]    |
[INFO] [stdout] 13 |     #[clap(long, default_value_t = ("./wal.log".to_string()))]
[INFO] [stdout]    |                                    ^                       ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 13 -     #[clap(long, default_value_t = ("./wal.log".to_string()))]
[INFO] [stdout] 13 +     #[clap(long, default_value_t = "./wal.log".to_string() )]
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/cli/mod.rs:16:36
[INFO] [stdout]    |
[INFO] [stdout] 16 |     #[clap(long, default_value_t = ("./storage.log".to_string()))]
[INFO] [stdout]    |                                    ^                           ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 16 -     #[clap(long, default_value_t = ("./storage.log".to_string()))]
[INFO] [stdout] 16 +     #[clap(long, default_value_t = "./storage.log".to_string() )]
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `command`
[INFO] [stdout]  --> src/cli/mod.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | use clap::{command, Parser, Subcommand};
[INFO] [stdout]   |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/cli/mod.rs:13:36
[INFO] [stdout]    |
[INFO] [stdout] 13 |     #[clap(long, default_value_t = ("./wal.log".to_string()))]
[INFO] [stdout]    |                                    ^                       ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 13 -     #[clap(long, default_value_t = ("./wal.log".to_string()))]
[INFO] [stdout] 13 +     #[clap(long, default_value_t = "./wal.log".to_string() )]
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/cli/mod.rs:16:36
[INFO] [stdout]    |
[INFO] [stdout] 16 |     #[clap(long, default_value_t = ("./storage.log".to_string()))]
[INFO] [stdout]    |                                    ^                           ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 16 -     #[clap(long, default_value_t = ("./storage.log".to_string()))]
[INFO] [stdout] 16 +     #[clap(long, default_value_t = "./storage.log".to_string() )]
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the feature `hash_extract_if` has been stable since 1.88.0 and no longer requires an attribute to enable
[INFO] [stdout]  --> src/lib.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | #![feature(hash_extract_if)]
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(stable_features)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the feature `hash_extract_if` has been stable since 1.88.0 and no longer requires an attribute to enable
[INFO] [stdout]  --> src/lib.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | #![feature(hash_extract_if)]
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(stable_features)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/persistance/wal.rs:71:13
[INFO] [stdout]    |
[INFO] [stdout] 71 |         let mut result = 0u64;
[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/storage/storage.rs:104:32
[INFO] [stdout]     |
[INFO] [stdout] 104 |     pub async fn expire(&self, mut tx: &UnboundedSender<FrameMessage>) {
[INFO] [stdout]     |                                ----^^
[INFO] [stdout]     |                                |
[INFO] [stdout]     |                                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `res`
[INFO] [stdout]   --> src/storage/storage.rs:65:13
[INFO] [stdout]    |
[INFO] [stdout] 65 | ...   let res = self.stash.lock().await.insert(key.to_owned(), Entry { key: key.clone().to_owned(), value: data.clone(), expires_at: Some...
[INFO] [stdout]    |           ^^^ help: if this is intentional, prefix it with an underscore: `_res`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/persistance/wal.rs:71:13
[INFO] [stdout]    |
[INFO] [stdout] 71 |         let mut result = 0u64;
[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: unused variable: `x`
[INFO] [stdout]   --> src/persistance/snapshot.rs:68:38
[INFO] [stdout]    |
[INFO] [stdout] 68 | ...                   Some(x) => {
[INFO] [stdout]    |                            ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]   --> src/persistance/wal.rs:81:38
[INFO] [stdout]    |
[INFO] [stdout] 81 | ...                   Some(x) => {
[INFO] [stdout]    |                            ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]   --> src/storage/storage.rs:90:33
[INFO] [stdout]    |
[INFO] [stdout] 90 |         let res = g.extract_if(|x, entry| {
[INFO] [stdout]    |                                 ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `cc` is never read
[INFO] [stdout]   --> src/storage/storage.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub struct Storage {
[INFO] [stdout]    |            ------- field in this struct
[INFO] [stdout] 45 |     cc: CacheStorage,
[INFO] [stdout]    |     ^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Storage` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing
[INFO] [stdout]   --> src/storage/storage.rs:59:82
[INFO] [stdout]    |
[INFO] [stdout] 59 | ...   let res = self.stash.lock().await.insert(key.to_owned(), Entry { key: key.clone().to_owned(), value: data.clone(), expires_at: None...
[INFO] [stdout]    |                                                                                ^^^^^^^^ help: remove this redundant call
[INFO] [stdout]    |
[INFO] [stdout]    = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` copies the reference, which does not do anything and can be removed
[INFO] [stdout]    = note: `#[warn(noop_method_call)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing
[INFO] [stdout]   --> src/storage/storage.rs:65:82
[INFO] [stdout]    |
[INFO] [stdout] 65 | ...   let res = self.stash.lock().await.insert(key.to_owned(), Entry { key: key.clone().to_owned(), value: data.clone(), expires_at: Some...
[INFO] [stdout]    |                                                                                ^^^^^^^^ help: remove this redundant call
[INFO] [stdout]    |
[INFO] [stdout]    = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` copies the reference, which does not do anything and can be removed
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/storage/storage.rs:104:32
[INFO] [stdout]     |
[INFO] [stdout] 104 |     pub async fn expire(&self, mut tx: &UnboundedSender<FrameMessage>) {
[INFO] [stdout]     |                                ----^^
[INFO] [stdout]     |                                |
[INFO] [stdout]     |                                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing
[INFO] [stdout]   --> src/storage/storage.rs:71:46
[INFO] [stdout]    |
[INFO] [stdout] 71 |         match self.stash.lock().await.get(key.clone()) {
[INFO] [stdout]    |                                              ^^^^^^^^ help: remove this redundant call
[INFO] [stdout]    |
[INFO] [stdout]    = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` copies the reference, which does not do anything and can be removed
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing
[INFO] [stdout]   --> src/storage/storage.rs:82:49
[INFO] [stdout]    |
[INFO] [stdout] 82 |         match self.stash.lock().await.remove(key.clone()) {
[INFO] [stdout]    |                                                 ^^^^^^^^ help: remove this redundant call
[INFO] [stdout]    |
[INFO] [stdout]    = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` copies the reference, which does not do anything and can be removed
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `res`
[INFO] [stdout]   --> src/storage/storage.rs:65:13
[INFO] [stdout]    |
[INFO] [stdout] 65 | ...   let res = self.stash.lock().await.insert(key.to_owned(), Entry { key: key.clone().to_owned(), value: data.clone(), expires_at: Some...
[INFO] [stdout]    |           ^^^ help: if this is intentional, prefix it with an underscore: `_res`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]   --> src/persistance/snapshot.rs:68:38
[INFO] [stdout]    |
[INFO] [stdout] 68 | ...                   Some(x) => {
[INFO] [stdout]    |                            ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]   --> src/persistance/wal.rs:81:38
[INFO] [stdout]    |
[INFO] [stdout] 81 | ...                   Some(x) => {
[INFO] [stdout]    |                            ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]   --> src/storage/storage.rs:90:33
[INFO] [stdout]    |
[INFO] [stdout] 90 |         let res = g.extract_if(|x, entry| {
[INFO] [stdout]    |                                 ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `cc` is never read
[INFO] [stdout]   --> src/storage/storage.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub struct Storage {
[INFO] [stdout]    |            ------- field in this struct
[INFO] [stdout] 45 |     cc: CacheStorage,
[INFO] [stdout]    |     ^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Storage` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing
[INFO] [stdout]   --> src/storage/storage.rs:59:82
[INFO] [stdout]    |
[INFO] [stdout] 59 | ...   let res = self.stash.lock().await.insert(key.to_owned(), Entry { key: key.clone().to_owned(), value: data.clone(), expires_at: None...
[INFO] [stdout]    |                                                                                ^^^^^^^^ help: remove this redundant call
[INFO] [stdout]    |
[INFO] [stdout]    = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` copies the reference, which does not do anything and can be removed
[INFO] [stdout]    = note: `#[warn(noop_method_call)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing
[INFO] [stdout]   --> src/storage/storage.rs:65:82
[INFO] [stdout]    |
[INFO] [stdout] 65 | ...   let res = self.stash.lock().await.insert(key.to_owned(), Entry { key: key.clone().to_owned(), value: data.clone(), expires_at: Some...
[INFO] [stdout]    |                                                                                ^^^^^^^^ help: remove this redundant call
[INFO] [stdout]    |
[INFO] [stdout]    = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` copies the reference, which does not do anything and can be removed
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing
[INFO] [stdout]   --> src/storage/storage.rs:71:46
[INFO] [stdout]    |
[INFO] [stdout] 71 |         match self.stash.lock().await.get(key.clone()) {
[INFO] [stdout]    |                                              ^^^^^^^^ help: remove this redundant call
[INFO] [stdout]    |
[INFO] [stdout]    = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` copies the reference, which does not do anything and can be removed
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing
[INFO] [stdout]   --> src/storage/storage.rs:82:49
[INFO] [stdout]    |
[INFO] [stdout] 82 |         match self.stash.lock().await.remove(key.clone()) {
[INFO] [stdout]    |                                                 ^^^^^^^^ help: remove this redundant call
[INFO] [stdout]    |
[INFO] [stdout]    = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` copies the reference, which does not do anything and can be removed
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `cachetcp::proto::CommandMessage::DELETE`
[INFO] [stdout]   --> src/main.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use cachetcp::proto::CommandMessage::DELETE;
[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: `cachetcp::proto::CommandMessage::DELETE`
[INFO] [stdout]   --> src/main.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use cachetcp::proto::CommandMessage::DELETE;
[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 variable: `s`
[INFO] [stdout]   --> src/main.rs:87:13
[INFO] [stdout]    |
[INFO] [stdout] 87 |         let s = i.to_be_bytes();
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]   --> src/main.rs:87:13
[INFO] [stdout]    |
[INFO] [stdout] 87 |         let s = i.to_be_bytes();
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `args`
[INFO] [stdout]    --> src/main.rs:111:25
[INFO] [stdout]     |
[INFO] [stdout] 111 | async fn handle_testing(args: &cli::Args) -> Result<(), std::io::Error> {
[INFO] [stdout]     |                         ^^^^ help: if this is intentional, prefix it with an underscore: `_args`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `args`
[INFO] [stdout]    --> src/main.rs:111:25
[INFO] [stdout]     |
[INFO] [stdout] 111 | async fn handle_testing(args: &cli::Args) -> Result<(), std::io::Error> {
[INFO] [stdout]     |                         ^^^^ help: if this is intentional, prefix it with an underscore: `_args`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/main.rs:142:9
[INFO] [stdout]     |
[INFO] [stdout] 142 |         _ => handle_server(&args).await,
[INFO] [stdout]     |         ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/main.rs:142:9
[INFO] [stdout]     |
[INFO] [stdout] 138 |         cli::Runtime::Client => handle_client(&args).await,
[INFO] [stdout]     |         -------------------- matches some of the same values
[INFO] [stdout] 139 |         // cli::Runtime::Client => cli::start_interactive(),
[INFO] [stdout] 140 |         cli::Runtime::Testing => handle_testing(&args).await,
[INFO] [stdout]     |         --------------------- matches some of the same values
[INFO] [stdout] 141 |         cli::Runtime::Server => handle_server(&args).await,
[INFO] [stdout]     |         -------------------- matches some of the same values
[INFO] [stdout] 142 |         _ => handle_server(&args).await,
[INFO] [stdout]     |         ^ collectively making this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/main.rs:142:9
[INFO] [stdout]     |
[INFO] [stdout] 142 |         _ => handle_server(&args).await,
[INFO] [stdout]     |         ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/main.rs:142:9
[INFO] [stdout]     |
[INFO] [stdout] 138 |         cli::Runtime::Client => handle_client(&args).await,
[INFO] [stdout]     |         -------------------- matches some of the same values
[INFO] [stdout] 139 |         // cli::Runtime::Client => cli::start_interactive(),
[INFO] [stdout] 140 |         cli::Runtime::Testing => handle_testing(&args).await,
[INFO] [stdout]     |         --------------------- matches some of the same values
[INFO] [stdout] 141 |         cli::Runtime::Server => handle_server(&args).await,
[INFO] [stdout]     |         -------------------- matches some of the same values
[INFO] [stdout] 142 |         _ => handle_server(&args).await,
[INFO] [stdout]     |         ^ collectively making this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 11.41s
[INFO] running `Command { std: "docker" "inspect" "f0590556dc546848bf87460bcb8705db2dc0a985f611f411f663059d90428f5e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f0590556dc546848bf87460bcb8705db2dc0a985f611f411f663059d90428f5e", kill_on_drop: false }`
[INFO] [stdout] f0590556dc546848bf87460bcb8705db2dc0a985f611f411f663059d90428f5e
