[INFO] cloning repository https://github.com/0xShay/rust_blockchain [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/0xShay/rust_blockchain" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2F0xShay%2Frust_blockchain", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2F0xShay%2Frust_blockchain'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] db35e14f889d77ec0fb2883e7827a8ac91ce1ede [INFO] linting 0xShay/rust_blockchain against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2F0xShay%2Frust_blockchain" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/0xShay/rust_blockchain [INFO] finished tweaking git repo https://github.com/0xShay/rust_blockchain [INFO] tweaked toml for git repo https://github.com/0xShay/rust_blockchain written to /workspace/builds/worker-4-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/0xShay/rust_blockchain on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/0xShay/rust_blockchain 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" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded sha256 v1.6.0 [INFO] [stderr] Downloaded sqlite3-sys v0.15.2 [INFO] [stderr] Downloaded sqlite v0.32.0 [INFO] [stderr] Downloaded bumpalo v3.18.1 [INFO] [stderr] Downloaded sqlite3-src v0.5.1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 57594321408b2a554c2736f89efa47f64357ffac71a46929afad2a33b2cbb4e4 [INFO] running `Command { std: "docker" "start" "-a" "57594321408b2a554c2736f89efa47f64357ffac71a46929afad2a33b2cbb4e4", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "57594321408b2a554c2736f89efa47f64357ffac71a46929afad2a33b2cbb4e4", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "57594321408b2a554c2736f89efa47f64357ffac71a46929afad2a33b2cbb4e4", kill_on_drop: false }` [INFO] [stdout] 57594321408b2a554c2736f89efa47f64357ffac71a46929afad2a33b2cbb4e4 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] fcf46c7aea55635d1610863a5e039de510ccc44e2f36f08f73de58de49902a87 [INFO] running `Command { std: "docker" "start" "-a" "fcf46c7aea55635d1610863a5e039de510ccc44e2f36f08f73de58de49902a87", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.174 [INFO] [stderr] Compiling proc-macro2-diagnostics v0.10.1 [INFO] [stderr] Compiling cc v1.2.27 [INFO] [stderr] Checking const-oid v0.9.6 [INFO] [stderr] Checking serde v1.0.219 [INFO] [stderr] Checking hashbrown v0.15.4 [INFO] [stderr] Compiling pin-project-lite v0.2.16 [INFO] [stderr] Compiling time-core v0.1.4 [INFO] [stderr] Checking zeroize v1.8.1 [INFO] [stderr] Checking futures-util v0.3.31 [INFO] [stderr] Compiling itoa v1.0.15 [INFO] [stderr] Compiling cookie v0.18.1 [INFO] [stderr] Compiling ref-cast v1.0.24 [INFO] [stderr] Compiling futures-sink v0.3.31 [INFO] [stderr] Compiling futures-core v0.3.31 [INFO] [stderr] Compiling ref-cast-impl v1.0.24 [INFO] [stderr] Compiling time-macros v0.2.22 [INFO] [stderr] Checking base64ct v1.8.0 [INFO] [stderr] Compiling openssl v0.10.73 [INFO] [stderr] Checking log v0.4.27 [INFO] [stderr] Checking digest v0.10.7 [INFO] [stderr] Compiling bytes v1.10.1 [INFO] [stderr] Compiling once_cell v1.21.3 [INFO] [stderr] Compiling futures-task v0.3.31 [INFO] [stderr] Compiling powerfmt v0.2.0 [INFO] [stderr] Compiling futures-channel v0.3.31 [INFO] [stderr] Compiling tracing-core v0.1.34 [INFO] [stderr] Compiling deranged v0.4.0 [INFO] [stderr] Checking num-traits v0.2.19 [INFO] [stderr] Compiling uncased v0.9.10 [INFO] [stderr] Checking pem-rfc7468 v0.7.0 [INFO] [stderr] Compiling socket2 v0.5.10 [INFO] [stderr] Compiling mio v1.0.4 [INFO] [stderr] Compiling openssl-macros v0.1.1 [INFO] [stderr] Checking parking_lot_core v0.9.11 [INFO] [stderr] Checking signal-hook-registry v1.4.5 [INFO] [stderr] Checking getrandom v0.2.16 [INFO] [stderr] Compiling pear_codegen v0.2.9 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Compiling http v0.2.12 [INFO] [stderr] Checking is-terminal v0.4.16 [INFO] [stderr] Compiling bitflags v2.9.1 [INFO] [stderr] Checking spin v0.9.8 [INFO] [stderr] Compiling try-lock v0.2.5 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Checking yansi v1.0.1 [INFO] [stderr] Compiling devise_core v0.4.2 [INFO] [stderr] Compiling want v0.3.1 [INFO] [stderr] Checking num-integer v0.1.46 [INFO] [stderr] Compiling tracing v0.1.41 [INFO] [stderr] Checking der v0.7.10 [INFO] [stderr] Checking parking_lot v0.12.4 [INFO] [stderr] Compiling tokio v1.45.1 [INFO] [stderr] Checking icu_normalizer v2.0.0 [INFO] [stderr] Compiling httparse v1.10.1 [INFO] [stderr] Compiling time v0.3.41 [INFO] [stderr] Compiling http-body v0.4.6 [INFO] [stderr] Compiling futures-io v0.3.31 [INFO] [stderr] Compiling inlinable_string v0.1.15 [INFO] [stderr] Checking winnow v0.7.11 [INFO] [stderr] Compiling httpdate v1.0.3 [INFO] [stderr] Compiling tower-service v0.3.3 [INFO] [stderr] Compiling openssl-sys v0.9.109 [INFO] [stderr] Compiling sqlite3-src v0.5.1 [INFO] [stderr] Compiling stable-pattern v0.1.0 [INFO] [stderr] Compiling pear v0.2.9 [INFO] [stderr] Checking idna_adapter v1.2.1 [INFO] [stderr] Compiling indexmap v2.9.0 [INFO] [stderr] Compiling curve25519-dalek v4.1.3 [INFO] [stderr] Checking spki v0.7.3 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Checking signature v2.2.0 [INFO] [stderr] Compiling multer v3.1.0 [INFO] [stderr] Compiling figment v0.10.19 [INFO] [stderr] Compiling futures v0.3.31 [INFO] [stderr] Compiling state v0.6.0 [INFO] [stderr] Compiling native-tls v0.2.14 [INFO] [stderr] Compiling num-bigint-dig v0.8.4 [INFO] [stderr] Compiling smallvec v1.15.1 [INFO] [stderr] Compiling either v1.15.0 [INFO] [stderr] Checking idna v1.0.3 [INFO] [stderr] Compiling devise_codegen v0.4.2 [INFO] [stderr] Checking pkcs8 v0.10.2 [INFO] [stderr] Checking getrandom v0.3.3 [INFO] [stderr] Checking sha2 v0.10.9 [INFO] [stderr] Checking num-iter v0.1.45 [INFO] [stderr] Checking lazy_static v1.5.0 [INFO] [stderr] Compiling rocket v0.5.1 [INFO] [stderr] Compiling async-stream-impl v0.3.6 [INFO] [stderr] Compiling glob v0.3.2 [INFO] [stderr] Checking tempfile v3.20.0 [INFO] [stderr] Checking url v2.5.4 [INFO] [stderr] Checking sqlite3-sys v0.15.2 [INFO] [stderr] Checking pkcs1 v0.7.5 [INFO] [stderr] Checking ed25519 v2.2.3 [INFO] [stderr] Checking num_cpus v1.17.0 [INFO] [stderr] Checking atomic v0.5.3 [INFO] [stderr] Compiling devise v0.4.2 [INFO] [stderr] Checking sqlite v0.32.0 [INFO] [stderr] Checking num-bigint v0.4.6 [INFO] [stderr] Checking async-stream v0.3.6 [INFO] [stderr] Checking toml_datetime v0.6.11 [INFO] [stderr] Checking serde_spanned v0.6.9 [INFO] [stderr] Checking ubyte v0.10.4 [INFO] [stderr] Checking serde_urlencoded v0.7.1 [INFO] [stderr] Checking serde_json v1.0.140 [INFO] [stderr] Checking ed25519-dalek v2.1.1 [INFO] [stderr] Compiling hyper v0.14.32 [INFO] [stderr] Checking toml_edit v0.22.27 [INFO] [stderr] Checking rsa v0.9.8 [INFO] [stderr] Checking tokio-util v0.7.15 [INFO] [stderr] Checking tokio-stream v0.1.17 [INFO] [stderr] Checking sha256 v1.6.0 [INFO] [stderr] Compiling rocket_http v0.5.1 [INFO] [stderr] Checking h2 v0.3.26 [INFO] [stderr] Checking toml v0.8.23 [INFO] [stderr] Checking tokio-native-tls v0.3.1 [INFO] [stderr] Compiling rocket_codegen v0.5.1 [INFO] [stderr] Checking hyper-tls v0.5.0 [INFO] [stderr] Checking reqwest v0.11.27 [INFO] [stderr] Checking rust_blockchain v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused imports: `IpAddr`, `Ipv4Addr`, `Ipv6Addr`, and `SocketAddrV4` [INFO] [stdout] --> src/main.rs:3:16 [INFO] [stdout] | [INFO] [stdout] 3 | use std::net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr, SocketAddrV4}; [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::str::FromStr` [INFO] [stdout] --> src/main.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::str::FromStr; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Signature`, `Signer`, `SigningKey`, `Verifier`, and `VerifyingKey` [INFO] [stdout] --> src/main.rs:5:21 [INFO] [stdout] | [INFO] [stdout] 5 | use ed25519_dalek::{Signature, Signer, SigningKey, Verifier, VerifyingKey}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^ ^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize` [INFO] [stdout] --> src/main.rs:8:13 [INFO] [stdout] | [INFO] [stdout] 8 | use serde::{Deserialize, Serialize}; [INFO] [stdout] | ^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `serde_json::Result` [INFO] [stdout] --> src/main.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use serde_json::Result; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/main.rs:10:1 [INFO] [stdout] | [INFO] [stdout] 10 | use tokio; [INFO] [stdout] | ^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] = note: `#[warn(clippy::single_component_path_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/block_utils.rs:2:1 [INFO] [stdout] | [INFO] [stdout] 2 | use sha256; [INFO] [stdout] | ^^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signer` [INFO] [stdout] --> src/account_utils.rs:2:32 [INFO] [stdout] | [INFO] [stdout] 2 | use ed25519_dalek::{Signature, Signer, SigningKey, VerifyingKey}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/account_utils.rs:3:1 [INFO] [stdout] | [INFO] [stdout] 3 | use hex; [INFO] [stdout] | ^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/peers.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | use reqwest; [INFO] [stdout] | ^^^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `IpAddr` [INFO] [stdout] --> src/peers.rs:5:16 [INFO] [stdout] | [INFO] [stdout] 5 | use std::net::{IpAddr, SocketAddr}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::str::FromStr` [INFO] [stdout] --> src/peers.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use std::str::FromStr; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/db_utils.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | use sqlite; [INFO] [stdout] | ^^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/db_utils.rs:2:1 [INFO] [stdout] | [INFO] [stdout] 2 | use lazy_static; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::OnceCell` [INFO] [stdout] --> src/db_utils.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use tokio::sync::OnceCell; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `IpAddr`, `Ipv4Addr`, `Ipv6Addr`, and `SocketAddrV4` [INFO] [stdout] --> src/main.rs:3:16 [INFO] [stdout] | [INFO] [stdout] 3 | use std::net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr, SocketAddrV4}; [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::str::FromStr` [INFO] [stdout] --> src/main.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::str::FromStr; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Signature`, `Signer`, `SigningKey`, `Verifier`, and `VerifyingKey` [INFO] [stdout] --> src/main.rs:5:21 [INFO] [stdout] | [INFO] [stdout] 5 | use ed25519_dalek::{Signature, Signer, SigningKey, Verifier, VerifyingKey}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^ ^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize` [INFO] [stdout] --> src/main.rs:8:13 [INFO] [stdout] | [INFO] [stdout] 8 | use serde::{Deserialize, Serialize}; [INFO] [stdout] | ^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `serde_json::Result` [INFO] [stdout] --> src/main.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use serde_json::Result; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/main.rs:10:1 [INFO] [stdout] | [INFO] [stdout] 10 | use tokio; [INFO] [stdout] | ^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] = note: `#[warn(clippy::single_component_path_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/block_utils.rs:2:1 [INFO] [stdout] | [INFO] [stdout] 2 | use sha256; [INFO] [stdout] | ^^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Signer` [INFO] [stdout] --> src/account_utils.rs:2:32 [INFO] [stdout] | [INFO] [stdout] 2 | use ed25519_dalek::{Signature, Signer, SigningKey, VerifyingKey}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/peers.rs:39:13 [INFO] [stdout] | [INFO] [stdout] 39 | let mut new_known_peers: Vec = Vec::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/peers.rs:46:20 [INFO] [stdout] | [INFO] [stdout] 46 | Ok(mut response) => { [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/account_utils.rs:3:1 [INFO] [stdout] | [INFO] [stdout] 3 | use hex; [INFO] [stdout] | ^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/peers.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | use reqwest; [INFO] [stdout] | ^^^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `IpAddr` [INFO] [stdout] --> src/peers.rs:5:16 [INFO] [stdout] | [INFO] [stdout] 5 | use std::net::{IpAddr, SocketAddr}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::str::FromStr` [INFO] [stdout] --> src/peers.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use std::str::FromStr; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/db_utils.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | use sqlite; [INFO] [stdout] | ^^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/db_utils.rs:2:1 [INFO] [stdout] | [INFO] [stdout] 2 | use lazy_static; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::OnceCell` [INFO] [stdout] --> src/db_utils.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use tokio::sync::OnceCell; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/peers.rs:39:13 [INFO] [stdout] | [INFO] [stdout] 39 | let mut new_known_peers: Vec = Vec::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/peers.rs:46:20 [INFO] [stdout] | [INFO] [stdout] 46 | Ok(mut response) => { [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `is_genesis` [INFO] [stdout] --> src/block_utils.rs:113:13 [INFO] [stdout] | [INFO] [stdout] 113 | let is_genesis = block.index == 0; [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_is_genesis` [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/main.rs:51:9 [INFO] [stdout] | [INFO] [stdout] 51 | let mut peers = peers::Peers::new(); [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `remote_addr` [INFO] [stdout] --> src/main.rs:50:14 [INFO] [stdout] | [INFO] [stdout] 50 | fn get_peers(remote_addr: SocketAddr) -> status::Custom> { [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_remote_addr` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `is_genesis` [INFO] [stdout] --> src/block_utils.rs:113:13 [INFO] [stdout] | [INFO] [stdout] 113 | let is_genesis = block.index == 0; [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_is_genesis` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DIFFICULTY` is never used [INFO] [stdout] --> src/block_utils.rs:8:7 [INFO] [stdout] | [INFO] [stdout] 8 | const DIFFICULTY: usize = 8; // number of zeros needed to prefix hash (bits) [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 `generate_priv_key` is never used [INFO] [stdout] --> src/account_utils.rs:5:8 [INFO] [stdout] | [INFO] [stdout] 5 | pub fn generate_priv_key() -> SigningKey { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `generate_pub_key` is never used [INFO] [stdout] --> src/account_utils.rs:11:8 [INFO] [stdout] | [INFO] [stdout] 11 | pub fn generate_pub_key(private_key: &SigningKey) -> VerifyingKey { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `priv_key_to_hex` is never used [INFO] [stdout] --> src/account_utils.rs:16:8 [INFO] [stdout] | [INFO] [stdout] 16 | pub fn priv_key_to_hex(private_key: &SigningKey) -> String { hex::encode(private_key.to_bytes()) } [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `pub_key_to_hex` is never used [INFO] [stdout] --> src/account_utils.rs:18:8 [INFO] [stdout] | [INFO] [stdout] 18 | pub fn pub_key_to_hex(pub_key: &VerifyingKey) -> String { hex::encode(pub_key.to_bytes()) } [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `signature_to_hex` is never used [INFO] [stdout] --> src/account_utils.rs:20:8 [INFO] [stdout] | [INFO] [stdout] 20 | pub fn signature_to_hex(signature: &Signature) -> String { hex::encode(signature.to_bytes()) } [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `priv_key_from_hex` is never used [INFO] [stdout] --> src/account_utils.rs:22:8 [INFO] [stdout] | [INFO] [stdout] 22 | pub fn priv_key_from_hex(hex_str: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `pub_key_from_hex` is never used [INFO] [stdout] --> src/account_utils.rs:30:8 [INFO] [stdout] | [INFO] [stdout] 30 | pub fn pub_key_from_hex(hex_str: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `signature_from_hex` is never used [INFO] [stdout] --> src/account_utils.rs:37:8 [INFO] [stdout] | [INFO] [stdout] 37 | pub fn signature_from_hex(hex_str: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `from_json`, `get_known_peers`, and `remove_ip` are never used [INFO] [stdout] --> src/peers.rs:26:12 [INFO] [stdout] | [INFO] [stdout] 15 | impl Peers { [INFO] [stdout] | ---------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 26 | pub fn from_json(json: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 34 | pub fn get_known_peers(&mut self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 91 | pub fn remove_ip(&mut self, ip_addr: SocketAddr) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:51:9 [INFO] [stdout] | [INFO] [stdout] 51 | let mut peers = peers::Peers::new(); [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `remote_addr` [INFO] [stdout] --> src/main.rs:50:14 [INFO] [stdout] | [INFO] [stdout] 50 | fn get_peers(remote_addr: SocketAddr) -> status::Custom> { [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_remote_addr` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/block_utils.rs:95:20 [INFO] [stdout] | [INFO] [stdout] 95 | if !(block.timestamp > prev_block.timestamp) { return Err("Timestamp is less than or equal to previous block."); }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(block.timestamp <= prev_block.timestamp)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/block_utils.rs:99:12 [INFO] [stdout] | [INFO] [stdout] 99 | if !(block.timestamp < (secs_since_epoch as u64 + 600)) { return Err("Block is too far ahead in the future."); }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(block.timestamp >= (secs_since_epoch as u64 + 600))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/block_utils.rs:91:9 [INFO] [stdout] | [INFO] [stdout] 91 | / match prev_block_option { [INFO] [stdout] 92 | | Some(prev_block) => { [INFO] [stdout] 93 | | // not genesis [INFO] [stdout] 94 | | if block.index-prev_block.index != 1 { return Err("Invalid block index."); }; [INFO] [stdout] ... | [INFO] [stdout] 97 | | None => () [INFO] [stdout] 98 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 91 ~ if let Some(prev_block) = prev_block_option { [INFO] [stdout] 92 + // not genesis [INFO] [stdout] 93 + if block.index-prev_block.index != 1 { return Err("Invalid block index."); }; [INFO] [stdout] 94 + if !(block.timestamp > prev_block.timestamp) { return Err("Timestamp is less than or equal to previous block."); }; [INFO] [stdout] 95 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u64` -> `u64`) [INFO] [stdout] --> src/block_utils.rs:99:33 [INFO] [stdout] | [INFO] [stdout] 99 | if !(block.timestamp < (secs_since_epoch as u64 + 600)) { return Err("Block is too far ahead in the future."); }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `secs_since_epoch` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting integer literal to `u64` is unnecessary [INFO] [stdout] --> src/block_utils.rs:119:56 [INFO] [stdout] | [INFO] [stdout] 119 | block.acc_diff = prev_block.acc_diff + (2 as u64).pow(block.diff_bits); [INFO] [stdout] | ^^^^^^^^^^ help: try: `2_u64` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting integer literal to `u64` is unnecessary [INFO] [stdout] --> src/block_utils.rs:122:34 [INFO] [stdout] | [INFO] [stdout] 122 | block.acc_diff = (2 as u64).pow(block.diff_bits); [INFO] [stdout] | ^^^^^^^^^^ help: try: `2_u64` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/account_utils.rs:25:35 [INFO] [stdout] | [INFO] [stdout] 25 | private_array.copy_from_slice(&private_key_bytes); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: change this to: `private_key_bytes` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/account_utils.rs:33:34 [INFO] [stdout] | [INFO] [stdout] 33 | public_array.copy_from_slice(&public_key_bytes); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `public_key_bytes` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/account_utils.rs:40:31 [INFO] [stdout] | [INFO] [stdout] 40 | sig_array.copy_from_slice(&sig_bytes); [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `sig_bytes` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DIFFICULTY` is never used [INFO] [stdout] --> src/block_utils.rs:8:7 [INFO] [stdout] | [INFO] [stdout] 8 | const DIFFICULTY: usize = 8; // number of zeros needed to prefix hash (bits) [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 `generate_priv_key` is never used [INFO] [stdout] --> src/account_utils.rs:5:8 [INFO] [stdout] | [INFO] [stdout] 5 | pub fn generate_priv_key() -> SigningKey { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `generate_pub_key` is never used [INFO] [stdout] --> src/account_utils.rs:11:8 [INFO] [stdout] | [INFO] [stdout] 11 | pub fn generate_pub_key(private_key: &SigningKey) -> VerifyingKey { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `priv_key_to_hex` is never used [INFO] [stdout] --> src/account_utils.rs:16:8 [INFO] [stdout] | [INFO] [stdout] 16 | pub fn priv_key_to_hex(private_key: &SigningKey) -> String { hex::encode(private_key.to_bytes()) } [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `pub_key_to_hex` is never used [INFO] [stdout] --> src/account_utils.rs:18:8 [INFO] [stdout] | [INFO] [stdout] 18 | pub fn pub_key_to_hex(pub_key: &VerifyingKey) -> String { hex::encode(pub_key.to_bytes()) } [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `signature_to_hex` is never used [INFO] [stdout] --> src/account_utils.rs:20:8 [INFO] [stdout] | [INFO] [stdout] 20 | pub fn signature_to_hex(signature: &Signature) -> String { hex::encode(signature.to_bytes()) } [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `priv_key_from_hex` is never used [INFO] [stdout] --> src/account_utils.rs:22:8 [INFO] [stdout] | [INFO] [stdout] 22 | pub fn priv_key_from_hex(hex_str: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `pub_key_from_hex` is never used [INFO] [stdout] --> src/account_utils.rs:30:8 [INFO] [stdout] | [INFO] [stdout] 30 | pub fn pub_key_from_hex(hex_str: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `signature_from_hex` is never used [INFO] [stdout] --> src/account_utils.rs:37:8 [INFO] [stdout] | [INFO] [stdout] 37 | pub fn signature_from_hex(hex_str: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `from_json`, `get_known_peers`, and `remove_ip` are never used [INFO] [stdout] --> src/peers.rs:26:12 [INFO] [stdout] | [INFO] [stdout] 15 | impl Peers { [INFO] [stdout] | ---------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 26 | pub fn from_json(json: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 34 | pub fn get_known_peers(&mut self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 91 | pub fn remove_ip(&mut self, ip_addr: SocketAddr) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/peers.rs:65:43 [INFO] [stdout] | [INFO] [stdout] 65 | let mut file = match File::create(&path) { [INFO] [stdout] | ^^^^^ help: change this to: `path` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/peers.rs:78:41 [INFO] [stdout] | [INFO] [stdout] 78 | let mut file = match File::open(&path) { [INFO] [stdout] | ^^^^^ help: change this to: `path` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::string::String` [INFO] [stdout] --> src/db_utils.rs:65:19 [INFO] [stdout] | [INFO] [stdout] 65 | data: statement.read::("data").unwrap().try_into().unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider removing `.try_into()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::string::String` [INFO] [stdout] --> src/db_utils.rs:87:19 [INFO] [stdout] | [INFO] [stdout] 87 | data: statement.read::("data").unwrap().try_into().unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider removing `.try_into()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/block_utils.rs:95:20 [INFO] [stdout] | [INFO] [stdout] 95 | if !(block.timestamp > prev_block.timestamp) { return Err("Timestamp is less than or equal to previous block."); }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(block.timestamp <= prev_block.timestamp)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/block_utils.rs:99:12 [INFO] [stdout] | [INFO] [stdout] 99 | if !(block.timestamp < (secs_since_epoch as u64 + 600)) { return Err("Block is too far ahead in the future."); }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(block.timestamp >= (secs_since_epoch as u64 + 600))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/block_utils.rs:91:9 [INFO] [stdout] | [INFO] [stdout] 91 | / match prev_block_option { [INFO] [stdout] 92 | | Some(prev_block) => { [INFO] [stdout] 93 | | // not genesis [INFO] [stdout] 94 | | if block.index-prev_block.index != 1 { return Err("Invalid block index."); }; [INFO] [stdout] ... | [INFO] [stdout] 97 | | None => () [INFO] [stdout] 98 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 91 ~ if let Some(prev_block) = prev_block_option { [INFO] [stdout] 92 + // not genesis [INFO] [stdout] 93 + if block.index-prev_block.index != 1 { return Err("Invalid block index."); }; [INFO] [stdout] 94 + if !(block.timestamp > prev_block.timestamp) { return Err("Timestamp is less than or equal to previous block."); }; [INFO] [stdout] 95 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u64` -> `u64`) [INFO] [stdout] --> src/block_utils.rs:99:33 [INFO] [stdout] | [INFO] [stdout] 99 | if !(block.timestamp < (secs_since_epoch as u64 + 600)) { return Err("Block is too far ahead in the future."); }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `secs_since_epoch` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting integer literal to `u64` is unnecessary [INFO] [stdout] --> src/block_utils.rs:119:56 [INFO] [stdout] | [INFO] [stdout] 119 | block.acc_diff = prev_block.acc_diff + (2 as u64).pow(block.diff_bits); [INFO] [stdout] | ^^^^^^^^^^ help: try: `2_u64` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting integer literal to `u64` is unnecessary [INFO] [stdout] --> src/block_utils.rs:122:34 [INFO] [stdout] | [INFO] [stdout] 122 | block.acc_diff = (2 as u64).pow(block.diff_bits); [INFO] [stdout] | ^^^^^^^^^^ help: try: `2_u64` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/account_utils.rs:25:35 [INFO] [stdout] | [INFO] [stdout] 25 | private_array.copy_from_slice(&private_key_bytes); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: change this to: `private_key_bytes` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/account_utils.rs:33:34 [INFO] [stdout] | [INFO] [stdout] 33 | public_array.copy_from_slice(&public_key_bytes); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `public_key_bytes` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/account_utils.rs:40:31 [INFO] [stdout] | [INFO] [stdout] 40 | sig_array.copy_from_slice(&sig_bytes); [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `sig_bytes` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::string::String` [INFO] [stdout] --> src/main.rs:65:73 [INFO] [stdout] | [INFO] [stdout] 65 | status::Custom(Status::BadRequest, content::RawJson(String::from(format!( [INFO] [stdout] | _________________________________________________________________________^ [INFO] [stdout] 66 | | "{{ [INFO] [stdout] 67 | | \"error\": \"Block verification failed. Reason: {}\" [INFO] [stdout] 68 | | }}", [INFO] [stdout] 69 | | err [INFO] [stdout] 70 | | )))) [INFO] [stdout] | |______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] help: consider removing `String::from()` [INFO] [stdout] | [INFO] [stdout] 65 ~ status::Custom(Status::BadRequest, content::RawJson(format!( [INFO] [stdout] 66 + "{{ [INFO] [stdout] 67 + \"error\": \"Block verification failed. Reason: {}\" [INFO] [stdout] 68 + }}", [INFO] [stdout] 69 + err [INFO] [stdout] 70 ~ ))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/peers.rs:65:43 [INFO] [stdout] | [INFO] [stdout] 65 | let mut file = match File::create(&path) { [INFO] [stdout] | ^^^^^ help: change this to: `path` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/peers.rs:78:41 [INFO] [stdout] | [INFO] [stdout] 78 | let mut file = match File::open(&path) { [INFO] [stdout] | ^^^^^ help: change this to: `path` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:61:21 [INFO] [stdout] | [INFO] [stdout] 61 | db_utils::add_block(Block::add_acc_diff_to_block(block)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 61 | let _ = db_utils::add_block(Block::add_acc_diff_to_block(block)); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:86:5 [INFO] [stdout] | [INFO] [stdout] 86 | db_utils::create_tables(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 86 | let _ = db_utils::create_tables(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:111:5 [INFO] [stdout] | [INFO] [stdout] 111 | db_utils::add_block(genesis); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 111 | let _ = db_utils::add_block(genesis); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/db_utils.rs:49:5 [INFO] [stdout] | [INFO] [stdout] 49 | statement.next(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 49 | let _ = statement.next(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::string::String` [INFO] [stdout] --> src/db_utils.rs:65:19 [INFO] [stdout] | [INFO] [stdout] 65 | data: statement.read::("data").unwrap().try_into().unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider removing `.try_into()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::string::String` [INFO] [stdout] --> src/db_utils.rs:87:19 [INFO] [stdout] | [INFO] [stdout] 87 | data: statement.read::("data").unwrap().try_into().unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider removing `.try_into()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::string::String` [INFO] [stdout] --> src/main.rs:65:73 [INFO] [stdout] | [INFO] [stdout] 65 | status::Custom(Status::BadRequest, content::RawJson(String::from(format!( [INFO] [stdout] | _________________________________________________________________________^ [INFO] [stdout] 66 | | "{{ [INFO] [stdout] 67 | | \"error\": \"Block verification failed. Reason: {}\" [INFO] [stdout] 68 | | }}", [INFO] [stdout] 69 | | err [INFO] [stdout] 70 | | )))) [INFO] [stdout] | |______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] help: consider removing `String::from()` [INFO] [stdout] | [INFO] [stdout] 65 ~ status::Custom(Status::BadRequest, content::RawJson(format!( [INFO] [stdout] 66 + "{{ [INFO] [stdout] 67 + \"error\": \"Block verification failed. Reason: {}\" [INFO] [stdout] 68 + }}", [INFO] [stdout] 69 + err [INFO] [stdout] 70 ~ ))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:61:21 [INFO] [stdout] | [INFO] [stdout] 61 | db_utils::add_block(Block::add_acc_diff_to_block(block)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 61 | let _ = db_utils::add_block(Block::add_acc_diff_to_block(block)); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:86:5 [INFO] [stdout] | [INFO] [stdout] 86 | db_utils::create_tables(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 86 | let _ = db_utils::create_tables(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:111:5 [INFO] [stdout] | [INFO] [stdout] 111 | db_utils::add_block(genesis); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 111 | let _ = db_utils::add_block(genesis); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/db_utils.rs:49:5 [INFO] [stdout] | [INFO] [stdout] 49 | statement.next(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 49 | let _ = statement.next(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 40.94s [INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: num-bigint-dig v0.8.4 [INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 5` [INFO] running `Command { std: "docker" "inspect" "fcf46c7aea55635d1610863a5e039de510ccc44e2f36f08f73de58de49902a87", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "fcf46c7aea55635d1610863a5e039de510ccc44e2f36f08f73de58de49902a87", kill_on_drop: false }` [INFO] [stdout] fcf46c7aea55635d1610863a5e039de510ccc44e2f36f08f73de58de49902a87