[INFO] fetching crate mwc_chain 5.3.9... [INFO] linting mwc_chain-5.3.9 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate mwc_chain 5.3.9 into /workspace/builds/worker-7-tc1/source [INFO] started tweaking crates.io crate mwc_chain 5.3.9 [INFO] removed 0 missing tests [INFO] finished tweaking crates.io crate mwc_chain 5.3.9 [INFO] tweaked toml for crates.io crate mwc_chain 5.3.9 written to /workspace/builds/worker-7-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate mwc_chain 5.3.9 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 crates.io crate mwc_chain 5.3.9 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 mwc_keychain v5.3.9 [INFO] [stderr] Downloaded ripemd160 v0.9.1 [INFO] [stderr] Downloaded enum_primitive v0.1.1 [INFO] [stderr] Downloaded blake2-rfc v0.2.18 [INFO] [stderr] Downloaded mwc_util v5.3.9 [INFO] [stderr] Downloaded memmap v0.7.0 [INFO] [stderr] Downloaded arrayvec v0.4.12 [INFO] [stderr] Downloaded mwc_store v5.3.9 [INFO] [stderr] Downloaded supercow v0.1.0 [INFO] [stderr] Downloaded lmdb-zero v0.4.4 [INFO] [stderr] Downloaded log4rs v1.3.0 [INFO] [stderr] Downloaded croaring v1.1.0 [INFO] [stderr] Downloaded mwc_core v5.3.9 [INFO] [stderr] Downloaded liblmdb-sys v0.2.2 [INFO] [stderr] Downloaded sysinfo v0.32.1 [INFO] [stderr] Downloaded password-hash v0.2.3 [INFO] [stderr] Downloaded croaring-sys v2.1.0 [INFO] [stderr] Downloaded mwc_secp256k1zkp v0.7.16 [INFO] [stderr] Downloaded sha3 v0.8.2 [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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 870731e8c0cf321bea5048438fe5d04b35d22572acaf4b569806bfcfa6407373 [INFO] running `Command { std: "docker" "start" "-a" "870731e8c0cf321bea5048438fe5d04b35d22572acaf4b569806bfcfa6407373", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "870731e8c0cf321bea5048438fe5d04b35d22572acaf4b569806bfcfa6407373", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "870731e8c0cf321bea5048438fe5d04b35d22572acaf4b569806bfcfa6407373", kill_on_drop: false }` [INFO] [stdout] 870731e8c0cf321bea5048438fe5d04b35d22572acaf4b569806bfcfa6407373 [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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 4372055e474c425561b8d1c26c371517a73d0ff802ad16b5c582151226e2f098 [INFO] running `Command { std: "docker" "start" "-a" "4372055e474c425561b8d1c26c371517a73d0ff802ad16b5c582151226e2f098", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.174 [INFO] [stderr] Compiling proc-macro2 v1.0.95 [INFO] [stderr] Checking cfg-if v1.0.1 [INFO] [stderr] Compiling typenum v1.18.0 [INFO] [stderr] Checking rand_core v0.4.2 [INFO] [stderr] Compiling autocfg v0.1.8 [INFO] [stderr] Compiling zerocopy v0.8.26 [INFO] [stderr] Checking subtle v2.4.1 [INFO] [stderr] Compiling generic-array v0.14.7 [INFO] [stderr] Compiling parking_lot_core v0.9.11 [INFO] [stderr] Checking hashbrown v0.15.4 [INFO] [stderr] Checking miniz_oxide v0.8.9 [INFO] [stderr] Checking byte-tools v0.3.1 [INFO] [stderr] Compiling anyhow v1.0.98 [INFO] [stderr] Checking destructure_traitobject v0.2.0 [INFO] [stderr] Checking ordered-float v2.10.1 [INFO] [stderr] Checking crc32fast v1.5.0 [INFO] [stderr] Compiling rand_chacha v0.1.1 [INFO] [stderr] Compiling rand_pcg v0.1.2 [INFO] [stderr] Checking unsafe-any-ors v1.0.0 [INFO] [stderr] Checking rand_core v0.3.1 [INFO] [stderr] Checking block-padding v0.1.5 [INFO] [stderr] Compiling rand v0.6.5 [INFO] [stderr] Compiling mwc_secp256k1zkp v0.7.16 [INFO] [stderr] Compiling num-bigint v0.2.6 [INFO] [stderr] Compiling arrayvec v0.4.12 [INFO] [stderr] Checking iana-time-zone v0.1.63 [INFO] [stderr] Checking typemap-ors v1.0.0 [INFO] [stderr] Checking rand_xorshift v0.1.1 [INFO] [stderr] Checking rand_hc v0.1.0 [INFO] [stderr] Checking rand_isaac v0.1.1 [INFO] [stderr] Checking rand_jitter v0.1.4 [INFO] [stderr] Compiling croaring-sys v2.1.0 [INFO] [stderr] Compiling num-rational v0.2.4 [INFO] [stderr] Compiling num-complex v0.2.4 [INFO] [stderr] Compiling quote v1.0.40 [INFO] [stderr] Checking flate2 v1.1.2 [INFO] [stderr] Checking arrayvec v0.7.6 [INFO] [stderr] Checking keccak v0.1.5 [INFO] [stderr] Checking log-mdc v0.1.0 [INFO] [stderr] Checking humantime v2.2.0 [INFO] [stderr] Checking opaque-debug v0.2.3 [INFO] [stderr] Compiling gcc v0.3.55 [INFO] [stderr] Checking base64ct v1.8.0 [INFO] [stderr] Checking rustc-demangle v0.1.25 [INFO] [stderr] Checking arc-swap v1.7.1 [INFO] [stderr] Checking nodrop v0.1.14 [INFO] [stderr] Checking base64 v0.12.3 [INFO] [stderr] Compiling rayon-core v1.12.1 [INFO] [stderr] Compiling syn v2.0.104 [INFO] [stderr] Checking indexmap v2.10.0 [INFO] [stderr] Compiling syn v1.0.109 [INFO] [stderr] Checking data-encoding v2.9.0 [INFO] [stderr] Compiling rustix v1.0.7 [INFO] [stderr] Checking num-iter v0.1.45 [INFO] [stderr] Checking blake2-rfc v0.2.18 [INFO] [stderr] Checking crossbeam-channel v0.5.15 [INFO] [stderr] Checking crossbeam-queue v0.3.12 [INFO] [stderr] Compiling liblmdb-sys v0.2.2 [INFO] [stderr] Checking num-traits v0.1.43 [INFO] [stderr] Checking linux-raw-sys v0.9.4 [INFO] [stderr] Checking bitflags v2.9.1 [INFO] [stderr] Checking enum_primitive v0.1.1 [INFO] [stderr] Checking getrandom v0.2.16 [INFO] [stderr] Checking getrandom v0.1.16 [INFO] [stderr] Checking rand_os v0.1.3 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Checking rand v0.5.6 [INFO] [stderr] Checking rand_core v0.5.1 [INFO] [stderr] Checking generic-array v0.12.4 [INFO] [stderr] Checking thread-id v4.2.2 [INFO] [stderr] Checking password-hash v0.2.3 [INFO] [stderr] Checking backtrace v0.3.75 [INFO] [stderr] Checking parking_lot v0.12.4 [INFO] [stderr] Checking digest v0.8.1 [INFO] [stderr] Checking block-buffer v0.7.3 [INFO] [stderr] Checking crossbeam v0.8.4 [INFO] [stderr] Checking getrandom v0.3.3 [INFO] [stderr] Checking num_cpus v1.17.0 [INFO] [stderr] Checking sha3 v0.8.2 [INFO] [stderr] Checking num v0.2.1 [INFO] [stderr] Checking lru v0.12.5 [INFO] [stderr] Checking aho-corasick v1.1.3 [INFO] [stderr] Checking regex-syntax v0.8.5 [INFO] [stderr] Checking bitflags v0.9.1 [INFO] [stderr] Checking bytes v0.5.6 [INFO] [stderr] Checking supercow v0.1.0 [INFO] [stderr] Checking rayon v1.10.0 [INFO] [stderr] Checking memmap v0.7.0 [INFO] [stderr] Checking signal-hook-registry v1.4.5 [INFO] [stderr] Checking mio v1.0.4 [INFO] [stderr] Checking digest v0.9.0 [INFO] [stderr] Checking block-buffer v0.9.0 [INFO] [stderr] Checking crypto-mac v0.11.1 [INFO] [stderr] Checking socket2 v0.5.10 [INFO] [stderr] Checking bytes v1.10.1 [INFO] [stderr] Checking sha2 v0.9.9 [INFO] [stderr] Checking ripemd160 v0.9.1 [INFO] [stderr] Checking hmac v0.11.0 [INFO] [stderr] Checking humantime v1.3.0 [INFO] [stderr] Checking atty v0.2.14 [INFO] [stderr] Checking bit-vec v0.6.3 [INFO] [stderr] Checking ppv-lite86 v0.2.21 [INFO] [stderr] Checking pbkdf2 v0.8.0 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Checking rand_chacha v0.2.2 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Checking tempfile v3.20.0 [INFO] [stderr] Checking rand v0.7.3 [INFO] [stderr] Compiling derivative v2.2.0 [INFO] [stderr] Checking regex-automata v0.4.9 [INFO] [stderr] Checking sysinfo v0.32.1 [INFO] [stderr] Checking lmdb-zero v0.4.4 [INFO] [stderr] Checking croaring v1.1.0 [INFO] [stderr] Compiling serde_derive v1.0.219 [INFO] [stderr] Compiling zeroize_derive v1.4.2 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling tokio-macros v2.5.0 [INFO] [stderr] Checking regex v1.11.1 [INFO] [stderr] Checking tokio v1.46.1 [INFO] [stderr] Checking zeroize v1.3.0 [INFO] [stderr] Checking curve25519-dalek v3.2.1 [INFO] [stderr] Checking thiserror v1.0.69 [INFO] [stderr] Checking zip v0.5.13 [INFO] [stderr] Checking serde v1.0.219 [INFO] [stderr] Checking serde_json v1.0.140 [INFO] [stderr] Checking log v0.4.27 [INFO] [stderr] Checking serde-value v0.7.0 [INFO] [stderr] Checking chrono v0.4.41 [INFO] [stderr] Checking serde_yaml v0.9.34+deprecated [INFO] [stderr] Checking ed25519-dalek v1.0.1 [INFO] [stderr] Checking env_logger v0.7.1 [INFO] [stderr] Checking log4rs v1.3.0 [INFO] [stderr] Checking mwc_util v5.3.9 [INFO] [stderr] Checking mwc_keychain v5.3.9 [INFO] [stderr] Checking mwc_core v5.3.9 [INFO] [stderr] Checking mwc_store v5.3.9 [INFO] [stderr] Checking mwc_chain v5.3.9 (/opt/rustwide/workdir) [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/chain.rs:271:4 [INFO] [stdout] | [INFO] [stdout] 271 | genesis: genesis, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace it with: `genesis` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/chain.rs:1537:2 [INFO] [stdout] | [INFO] [stdout] 1537 | / /// rewound to the provided indexes. [INFO] [stdout] 1538 | | // Note, if there are updates in this code, please check Sync code, probably it needs to be updates as well [INFO] [stdout] 1539 | | /* pub fn txhashset_write( [INFO] [stdout] 1540 | | &self, [INFO] [stdout] ... | [INFO] [stdout] 1686 | | }*/ [INFO] [stdout] 1687 | | [INFO] [stdout] | |_^ [INFO] [stdout] ... [INFO] [stdout] 1691 | fn remove_historical_blocks( [INFO] [stdout] | --------------------------- the comment documents this function [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] help: if the doc comment should not document function `remove_historical_blocks` then comment it out [INFO] [stdout] | [INFO] [stdout] 1534 ~ // /// Writes a reading view on a txhashset state that's been provided to us. [INFO] [stdout] 1535 ~ // /// If we're willing to accept that new state, the data stream will be [INFO] [stdout] 1536 ~ // /// read as a zip file, unzipped and the resulting state files should be [INFO] [stdout] 1537 ~ // /// rewound to the provided indexes. [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/chain.rs:271:4 [INFO] [stdout] | [INFO] [stdout] 271 | genesis: genesis, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace it with: `genesis` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/chain.rs:1537:2 [INFO] [stdout] | [INFO] [stdout] 1537 | / /// rewound to the provided indexes. [INFO] [stdout] 1538 | | // Note, if there are updates in this code, please check Sync code, probably it needs to be updates as well [INFO] [stdout] 1539 | | /* pub fn txhashset_write( [INFO] [stdout] 1540 | | &self, [INFO] [stdout] ... | [INFO] [stdout] 1686 | | }*/ [INFO] [stdout] 1687 | | [INFO] [stdout] | |_^ [INFO] [stdout] ... [INFO] [stdout] 1691 | fn remove_historical_blocks( [INFO] [stdout] | --------------------------- the comment documents this function [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] help: if the doc comment should not document function `remove_historical_blocks` then comment it out [INFO] [stdout] | [INFO] [stdout] 1534 ~ // /// Writes a reading view on a txhashset state that's been provided to us. [INFO] [stdout] 1535 ~ // /// If we're willing to accept that new state, the data stream will be [INFO] [stdout] 1536 ~ // /// read as a zip file, unzipped and the resulting state files should be [INFO] [stdout] 1537 ~ // /// rewound to the provided indexes. [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around closure body [INFO] [stdout] --> src/txhashset/bitmap_accumulator.rs:248:25 [INFO] [stdout] | [INFO] [stdout] 248 | .map(move |(idx, _)| (idx as u32 + idx_offset as u32)) [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] 248 - .map(move |(idx, _)| (idx as u32 + idx_offset as u32)) [INFO] [stdout] 248 + .map(move |(idx, _)| idx as u32 + idx_offset as u32) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/txhashset/txhashset.rs:1330:2 [INFO] [stdout] | [INFO] [stdout] 1330 | / /// held by this struct makes it awkward to do so [INFO] [stdout] 1331 | | [INFO] [stdout] | |_^ [INFO] [stdout] 1332 | pub fn apply_output_segments( [INFO] [stdout] | ---------------------------- the comment documents this function [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around closure body [INFO] [stdout] --> src/txhashset/bitmap_accumulator.rs:248:25 [INFO] [stdout] | [INFO] [stdout] 248 | .map(move |(idx, _)| (idx as u32 + idx_offset as u32)) [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] 248 - .map(move |(idx, _)| (idx as u32 + idx_offset as u32)) [INFO] [stdout] 248 + .map(move |(idx, _)| idx as u32 + idx_offset as u32) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/types.rs:426:4 [INFO] [stdout] | [INFO] [stdout] 426 | height: height, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace it with: `height` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/txhashset/txhashset.rs:1330:2 [INFO] [stdout] | [INFO] [stdout] 1330 | / /// held by this struct makes it awkward to do so [INFO] [stdout] 1331 | | [INFO] [stdout] | |_^ [INFO] [stdout] 1332 | pub fn apply_output_segments( [INFO] [stdout] | ---------------------------- the comment documents this function [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/types.rs:426:4 [INFO] [stdout] | [INFO] [stdout] 426 | height: height, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace it with: `height` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Hash` which implements the `Copy` trait [INFO] [stdout] --> src/chain.rs:105:22 [INFO] [stdout] | [INFO] [stdout] 105 | if orphans.insert(hash.clone(), orphan).is_none() { [INFO] [stdout] | ^^^^^^^^^^^^ help: try removing the `clone` call: `hash` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/chain.rs:106:65 [INFO] [stdout] | [INFO] [stdout] 106 | let height_hashes = height_idx.entry(height).or_insert_with(|| vec![]); [INFO] [stdout] | ^^^^^^^^^ help: replace the closure with `Vec::new`: `std::vec::Vec::new` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` 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/chain.rs:133:77 [INFO] [stdout] | [INFO] [stdout] 133 | height_idx.retain(|_, ref mut xs| xs.iter().any(|x| orphans.contains_key(&x))); [INFO] [stdout] | ^^ help: change this to: `x` [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: unneeded `return` statement [INFO] [stdout] --> src/chain.rs:165:3 [INFO] [stdout] | [INFO] [stdout] 165 | return orphans.remove(&header_hash); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 165 - return orphans.remove(&header_hash); [INFO] [stdout] 165 + orphans.remove(&header_hash) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `u64` which implements the `Copy` trait [INFO] [stdout] --> src/chain.rs:161:23 [INFO] [stdout] | [INFO] [stdout] 161 | height_idx.insert(height.clone(), hash_by_height); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try removing the `clone` call: `height` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/chain.rs:165:25 [INFO] [stdout] | [INFO] [stdout] 165 | return orphans.remove(&header_hash); [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `header_hash` [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: iterating on a map's keys [INFO] [stdout] --> src/chain.rs:170:3 [INFO] [stdout] | [INFO] [stdout] 170 | / self.orphans [INFO] [stdout] 171 | | .read() [INFO] [stdout] 172 | | .iter() [INFO] [stdout] 173 | | .map(|(k, _v)| k.clone()) [INFO] [stdout] | |_____________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_kv_map [INFO] [stdout] = note: `#[warn(clippy::iter_kv_map)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 170 ~ self.orphans [INFO] [stdout] 171 ~ .read().keys().map(|k| k.clone()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Hash` which implements the `Copy` trait [INFO] [stdout] --> src/chain.rs:173:19 [INFO] [stdout] | [INFO] [stdout] 173 | .map(|(k, _v)| k.clone()) [INFO] [stdout] | ^^^^^^^^^ help: try dereferencing it: `*k` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> src/chain.rs:184:3 [INFO] [stdout] | [INFO] [stdout] 184 | self.orphans.read().get(hash).map(|o| o.clone()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `cloned` method: `self.orphans.read().get(hash).cloned()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Hash` which implements the `Copy` trait [INFO] [stdout] --> src/chain.rs:192:14 [INFO] [stdout] | [INFO] [stdout] 192 | .map(|o| (o.block.header.prev_hash.clone(), o.block.header.height)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `o.block.header.prev_hash` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/chain.rs:618:5 [INFO] [stdout] | [INFO] [stdout] 618 | return Ok(tip); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 618 - return Ok(tip); [INFO] [stdout] 618 + Ok(tip) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/chain.rs:626:5 [INFO] [stdout] | [INFO] [stdout] 626 | return Err(e); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 626 - return Err(e); [INFO] [stdout] 626 + Err(e) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/chain.rs:703:3 [INFO] [stdout] | [INFO] [stdout] 703 | / if header.total_difficulty() <= head.total_difficulty { [INFO] [stdout] 704 | | if self.block_exists(&header.hash())? { [INFO] [stdout] 705 | | return Err(Error::Unfit("duplicate block".into())); [INFO] [stdout] 706 | | } [INFO] [stdout] 707 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 703 ~ if header.total_difficulty() <= head.total_difficulty [INFO] [stdout] 704 ~ && self.block_exists(&header.hash())? { [INFO] [stdout] 705 | return Err(Error::Unfit("duplicate block".into())); [INFO] [stdout] 706 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/chain.rs:777:5 [INFO] [stdout] | [INFO] [stdout] 777 | &mut *self.cache_header_difficulty.write(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut self.cache_header_difficulty.write()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` 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/chain.rs:822:5 [INFO] [stdout] | [INFO] [stdout] 822 | &blocks, [INFO] [stdout] | ^^^^^^^ help: change this to: `blocks` [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: deref which would be done by auto-deref [INFO] [stdout] --> src/chain.rs:824:5 [INFO] [stdout] | [INFO] [stdout] 824 | &mut *self.cache_header_difficulty.write(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut self.cache_header_difficulty.write()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/chain.rs:866:44 [INFO] [stdout] | [INFO] [stdout] 866 | pipe::process_block_header(bh, &mut ctx, &mut *self.cache_header_difficulty.write())?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut self.cache_header_difficulty.write()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/chain.rs:891:4 [INFO] [stdout] | [INFO] [stdout] 891 | &mut *self.cache_header_difficulty.write(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut self.cache_header_difficulty.write()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Options` which implements the `Copy` trait [INFO] [stdout] --> src/chain.rs:968:41 [INFO] [stdout] | [INFO] [stdout] 968 | if self.check_block(&orphan.block, orphan.opts.clone()).is_ok() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `orphan.opts` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/chain.rs:1026:52 [INFO] [stdout] | [INFO] [stdout] 1026 | let has_nrd_kernel = tx.kernels().iter().any(|k| match k.features { [INFO] [stdout] | __________________________________________________________^ [INFO] [stdout] 1027 | | KernelFeatures::NoRecentDuplicate { .. } => true, [INFO] [stdout] 1028 | | _ => false, [INFO] [stdout] 1029 | | }); [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] = note: `#[warn(clippy::match_like_matches_macro)]` on by default [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 1026 - let has_nrd_kernel = tx.kernels().iter().any(|k| match k.features { [INFO] [stdout] 1027 - KernelFeatures::NoRecentDuplicate { .. } => true, [INFO] [stdout] 1028 - _ => false, [INFO] [stdout] 1029 - }); [INFO] [stdout] 1026 + let has_nrd_kernel = tx.kernels().iter().any(|k| matches!(k.features, KernelFeatures::NoRecentDuplicate { .. })); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/chain.rs:1208:32 [INFO] [stdout] | [INFO] [stdout] 1208 | self.rewind_and_apply_fork(&header, ext, batch)?; [INFO] [stdout] | ^^^^^^^ help: change this to: `header` [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: unneeded `return` statement [INFO] [stdout] --> src/chain.rs:1306:3 [INFO] [stdout] | [INFO] [stdout] 1306 | return Ok(segmenter); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 1306 - return Ok(segmenter); [INFO] [stdout] 1306 + Ok(segmenter) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stdout] --> src/chain.rs:1291:7 [INFO] [stdout] | [INFO] [stdout] 1291 | let ref archive_header = self.txhashset_archive_header()?; [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^------------------------------------ help: try: `let archive_header = &self.txhashset_archive_header()?;` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stdout] = note: `#[warn(clippy::toplevel_ref_arg)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/chain.rs:1339:5 [INFO] [stdout] | [INFO] [stdout] 1339 | Ok(extension.build_bitmap_accumulator()?) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] = note: `#[warn(clippy::needless_question_mark)]` on by default [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 1339 - Ok(extension.build_bitmap_accumulator()?) [INFO] [stdout] 1339 + extension.build_bitmap_accumulator() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/chain.rs:1371:47 [INFO] [stdout] | [INFO] [stdout] 1371 | let output_pmmr = txhashset.output_pmmr_at(&header); [INFO] [stdout] | ^^^^^^^ help: change this to: `header` [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/chain.rs:1375:55 [INFO] [stdout] | [INFO] [stdout] 1375 | let rangeproof_pmmr = txhashset.rangeproof_pmmr_at(&header); [INFO] [stdout] | ^^^^^^^ help: change this to: `header` [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/chain.rs:1379:47 [INFO] [stdout] | [INFO] [stdout] 1379 | let kernel_pmmr = txhashset.kernel_pmmr_at(&header); [INFO] [stdout] | ^^^^^^^ help: change this to: `header` [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/chain.rs:1467:37 [INFO] [stdout] | [INFO] [stdout] 1467 | txhashset::rewindable_kernel_view(&txhashset, |view, batch| { [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `txhashset` [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 boolean expression can be simplified [INFO] [stdout] --> src/chain.rs:1492:9 [INFO] [stdout] | [INFO] [stdout] 1492 | while !self.is_on_current_chain(¤t, body_head).is_ok() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.is_on_current_chain(¤t, body_head).is_err()` [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: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/chain.rs:1808:3 [INFO] [stdout] | [INFO] [stdout] 1808 | Ok(self.txhashset.read().get_output_pos(commit)?) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 1808 - Ok(self.txhashset.read().get_output_pos(commit)?) [INFO] [stdout] 1808 + self.txhashset.read().get_output_pos(commit) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this pattern creates a reference to a reference [INFO] [stdout] --> src/chain.rs:1832:8 [INFO] [stdout] | [INFO] [stdout] 1832 | for (ref x, &y) in outputs.1.iter().zip(rangeproofs.1.iter()) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 1832 - for (ref x, &y) in outputs.1.iter().zip(rangeproofs.1.iter()) { [INFO] [stdout] 1832 + for (x, &y) in outputs.1.iter().zip(rangeproofs.1.iter()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/chain.rs:1982:26 [INFO] [stdout] | [INFO] [stdout] 1982 | batch.migrate_block(&key, ProtocolVersion(2), ProtocolVersion(3))?; [INFO] [stdout] | ^^^^ help: change this to: `key` [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: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/chain.rs:2013:3 [INFO] [stdout] | [INFO] [stdout] 2013 | Ok(self.get_block_header(&hash)?) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 2013 - Ok(self.get_block_header(&hash)?) [INFO] [stdout] 2013 + self.get_block_header(&hash) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/chain.rs:2059:17 [INFO] [stdout] | [INFO] [stdout] 2059 | .find_kernel(&excess, min_index, max_index) [INFO] [stdout] | ^^^^^^^ help: change this to: `excess` [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 use of `format!` [INFO] [stdout] --> src/chain.rs:2118:21 [INFO] [stdout] | [INFO] [stdout] 2118 | Err(Error::Other(format!("header is not on current chain"))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"header is not on current chain".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` 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/chain.rs:2199:46 [INFO] [stdout] | [INFO] [stdout] 2199 | if let Ok(header) = self.get_block_header(&hash) { [INFO] [stdout] | ^^^^^ help: change this to: `hash` [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/chain.rs:2337:21 [INFO] [stdout] | [INFO] [stdout] 2337 | batch.save_block(&genesis)?; [INFO] [stdout] | ^^^^^^^^ help: change this to: `genesis` [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/chain.rs:2354:19 [INFO] [stdout] | [INFO] [stdout] 2354 | .apply_block(&genesis, ext.header_extension, batch) [INFO] [stdout] | ^^^^^^^^ help: change this to: `genesis` [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: match expression looks like `matches!` macro [INFO] [stdout] --> src/error.rs:235:3 [INFO] [stdout] | [INFO] [stdout] 235 | / match self { [INFO] [stdout] 236 | | Error::Unfit(_) [INFO] [stdout] 237 | | | Error::Orphan(_) [INFO] [stdout] 238 | | | Error::StoreErr(_, _) [INFO] [stdout] ... | [INFO] [stdout] 243 | | _ => true, [INFO] [stdout] 244 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 235 ~ !matches!(self, Error::Unfit(_) [INFO] [stdout] 236 ~ | Error::Orphan(_) [INFO] [stdout] 237 ~ | Error::StoreErr(_, _) [INFO] [stdout] 238 ~ | Error::SerErr { .. } [INFO] [stdout] 239 ~ | Error::TxHashSetErr(_) [INFO] [stdout] 240 ~ | Error::GenesisBlockRequired [INFO] [stdout] 241 ~ | Error::Other(_)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/linked_list.rs:242:28 [INFO] [stdout] | [INFO] [stdout] 242 | to_key(self.list_prefix, &mut commit.as_ref().to_vec()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `commit.as_ref().to_vec()` [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/linked_list.rs:246:33 [INFO] [stdout] | [INFO] [stdout] 246 | to_key_u64(self.entry_prefix, &mut commit.as_ref().to_vec(), pos) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `commit.as_ref().to_vec()` [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: you should consider adding a `Default` implementation for `PibdParams` [INFO] [stdout] --> src/pibd_params.rs:80:2 [INFO] [stdout] | [INFO] [stdout] 80 | / pub fn new() -> Self { [INFO] [stdout] 81 | | let num_cores = num_cpus::get(); [INFO] [stdout] 82 | | let mem_info = SysMemoryInfo::update(); [INFO] [stdout] 83 | | let res = PibdParams { [INFO] [stdout] ... | [INFO] [stdout] 96 | | res [INFO] [stdout] 97 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 78 + impl Default for PibdParams { [INFO] [stdout] 79 + fn default() -> Self { [INFO] [stdout] 80 + Self::new() [INFO] [stdout] 81 + } [INFO] [stdout] 82 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/pibd_params.rs:192:19 [INFO] [stdout] | [INFO] [stdout] 192 | debug_assert!(update_mul >= 0.0 && update_mul <= 1.0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(0.0..=1.0).contains(&update_mul)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] = note: `#[warn(clippy::manual_range_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/pibd_params.rs:199:19 [INFO] [stdout] | [INFO] [stdout] 199 | debug_assert!(update_mul >= 0.0 && update_mul <= 1.0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(0.0..=1.0).contains(&update_mul)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/pibd_params.rs:226:17 [INFO] [stdout] | [INFO] [stdout] 226 | debug_assert!(vals.len() > 0); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!vals.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/pipe.rs:45:22 [INFO] [stdout] | [INFO] [stdout] 45 | pub header_allowed: Box Result<(), Error>>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `error::Error` [INFO] [stdout] --> src/pipe.rs:111:17 [INFO] [stdout] | [INFO] [stdout] 111 | return Err(Error::Other( [INFO] [stdout] | ________________________________^ [INFO] [stdout] 112 | | "output invalid, could be a replay attack".to_string(), [INFO] [stdout] 113 | | ) [INFO] [stdout] 114 | | .into()); [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] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] help: consider removing `.into()` [INFO] [stdout] | [INFO] [stdout] 111 ~ return Err(Error::Other( [INFO] [stdout] 112 ~ "output invalid, could be a replay attack".to_string(), [INFO] [stdout] 113 ~ )); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `error::Error` [INFO] [stdout] --> src/pipe.rs:126:18 [INFO] [stdout] | [INFO] [stdout] 126 | return Err(Error::Other( [INFO] [stdout] | ____________________________________^ [INFO] [stdout] 127 | | "output invalid, could be a replay attack".to_string(), [INFO] [stdout] 128 | | ) [INFO] [stdout] 129 | | .into()); [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 `.into()` [INFO] [stdout] | [INFO] [stdout] 126 ~ return Err(Error::Other( [INFO] [stdout] 127 ~ "output invalid, could be a replay attack".to_string(), [INFO] [stdout] 128 ~ )); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `error::Error` [INFO] [stdout] --> src/pipe.rs:145:14 [INFO] [stdout] | [INFO] [stdout] 145 | return Err(Error::InvalidHash.into()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Error::InvalidHash` [INFO] [stdout] | [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: returning the result of a `let` binding from a block [INFO] [stdout] --> src/pipe.rs:301:2 [INFO] [stdout] | [INFO] [stdout] 294 | / let res = if has_more_work(&last_block.header, &head) { [INFO] [stdout] 295 | | let head = Tip::from_header(&last_block.header); [INFO] [stdout] 296 | | update_head(&head, &mut ctx.batch)?; [INFO] [stdout] 297 | | Ok((Some(head), fork_point)) [INFO] [stdout] 298 | | } else { [INFO] [stdout] 299 | | Ok((None, fork_point)) [INFO] [stdout] 300 | | }; [INFO] [stdout] | |______- unnecessary `let` binding [INFO] [stdout] 301 | res [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] = note: `#[warn(clippy::let_and_return)]` on by default [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 294 ~ [INFO] [stdout] 295 ~ if has_more_work(&last_block.header, &head) { [INFO] [stdout] 296 ~ let head = Tip::from_header(&last_block.header); [INFO] [stdout] 297 ~ update_head(&head, &mut ctx.batch)?; [INFO] [stdout] 298 ~ Ok((Some(head), fork_point)) [INFO] [stdout] 299 ~ } else { [INFO] [stdout] 300 ~ Ok((None, fork_point)) [INFO] [stdout] 301 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the function `prev_header_store` doesn't need a mutable reference [INFO] [stdout] --> src/pipe.rs:227:52 [INFO] [stdout] | [INFO] [stdout] 227 | let prev = prev_header_store(&first_block.header, &mut ctx.batch)?; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stdout] = note: `#[warn(clippy::unnecessary_mut_passed)]` on by default [INFO] [stdout] help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] 227 - let prev = prev_header_store(&first_block.header, &mut ctx.batch)?; [INFO] [stdout] 227 + let prev = prev_header_store(&first_block.header, &ctx.batch)?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the function `update_head` doesn't need a mutable reference [INFO] [stdout] --> src/pipe.rs:296:22 [INFO] [stdout] | [INFO] [stdout] 296 | update_head(&head, &mut ctx.batch)?; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stdout] help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] 296 - update_head(&head, &mut ctx.batch)?; [INFO] [stdout] 296 + update_head(&head, &ctx.batch)?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty doc comment [INFO] [stdout] --> src/pipe.rs:304:1 [INFO] [stdout] | [INFO] [stdout] 304 | /// [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider removing or filling it [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_docs [INFO] [stdout] = note: `#[warn(clippy::empty_docs)]` 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/pipe.rs:352:30 [INFO] [stdout] | [INFO] [stdout] 352 | txhashset::header_extending(&mut ctx.header_pmmr, &mut ctx.batch, |ext, batch| { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `ctx.header_pmmr` [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/pipe.rs:353:32 [INFO] [stdout] | [INFO] [stdout] 353 | rewind_and_apply_header_fork(&last_header, ext, batch, ctx_specific_validation)?; [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `last_header` [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/pipe.rs:364:37 [INFO] [stdout] | [INFO] [stdout] 364 | update_header_head(&header_head, &batch)?; [INFO] [stdout] | ^^^^^^ help: change this to: `batch` [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/pipe.rs:396:50 [INFO] [stdout] | [INFO] [stdout] 396 | let prev_header = ctx.batch.get_previous_header(&header)?; [INFO] [stdout] | ^^^^^^^ help: change this to: `header` [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/pipe.rs:416:30 [INFO] [stdout] | [INFO] [stdout] 416 | txhashset::header_extending(&mut ctx.header_pmmr, &mut ctx.batch, |ext, batch| { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `ctx.header_pmmr` [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/pipe.rs:420:21 [INFO] [stdout] | [INFO] [stdout] 420 | if !has_more_work(&header, &header_head) { [INFO] [stdout] | ^^^^^^^ help: change this to: `header` [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: the function `update_header_head` doesn't need a mutable reference [INFO] [stdout] --> src/pipe.rs:430:49 [INFO] [stdout] | [INFO] [stdout] 430 | update_header_head(&Tip::from_header(header), &mut ctx.batch)?; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stdout] help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] 430 - update_header_head(&Tip::from_header(header), &mut ctx.batch)?; [INFO] [stdout] 430 + update_header_head(&Tip::from_header(header), &ctx.batch)?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/pipe.rs:474:39 [INFO] [stdout] | [INFO] [stdout] 474 | let prev = batch.get_previous_header(&header)?; [INFO] [stdout] | ^^^^^^^ help: change this to: `header` [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: unneeded `return` statement [INFO] [stdout] --> src/pipe.rs:514:3 [INFO] [stdout] | [INFO] [stdout] 514 | / return Err(Error::Block(block::Error::Other( [INFO] [stdout] 515 | | "header hash denied".into(), [INFO] [stdout] 516 | | ))); [INFO] [stdout] | |___________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 514 ~ Err(Error::Block(block::Error::Other( [INFO] [stdout] 515 ~ "header hash denied".into(), [INFO] [stdout] 516 ~ ))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/pipe.rs:518:3 [INFO] [stdout] | [INFO] [stdout] 518 | return Ok(()); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 518 - return Ok(()); [INFO] [stdout] 518 + Ok(()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/pipe.rs:630:12 [INFO] [stdout] | [INFO] [stdout] 630 | .map_err(|e| Error::Block(e))?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `Error::Block` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/pipe.rs:717:21 [INFO] [stdout] | [INFO] [stdout] 717 | .save_header_head(&head) [INFO] [stdout] | ^^^^^ help: change this to: `head` [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/pipe.rs:730:19 [INFO] [stdout] | [INFO] [stdout] 730 | .save_body_head(&head) [INFO] [stdout] | ^^^^^ help: change this to: `head` [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 `match` expression can be replaced with `?` [INFO] [stdout] --> src/pipe.rs:817:12 [INFO] [stdout] | [INFO] [stdout] 817 | let fb = match batch [INFO] [stdout] | __________________^ [INFO] [stdout] 818 | | .get_block(&h) [INFO] [stdout] 819 | | .map_err(|e| Error::StoreErr(e, "getting forked blocks".to_string())) [INFO] [stdout] ... | [INFO] [stdout] 822 | | Err(e) => return Err(e), [INFO] [stdout] 823 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] = note: `#[warn(clippy::question_mark)]` on by default [INFO] [stdout] help: try instead [INFO] [stdout] | [INFO] [stdout] 817 ~ let fb = batch [INFO] [stdout] 818 ~ .get_block(&h) [INFO] [stdout] 819 ~ .map_err(|e| Error::StoreErr(e, "getting forked blocks".to_string()))?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/pipe.rs:818:15 [INFO] [stdout] | [INFO] [stdout] 818 | .get_block(&h) [INFO] [stdout] | ^^ help: change this to: `h` [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: length comparison to zero [INFO] [stdout] --> src/store.rs:398:6 [INFO] [stdout] | [INFO] [stdout] 398 | if filtered_list.len() != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!filtered_list.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this pattern creates a reference to a reference [INFO] [stdout] --> src/store.rs:633:16 [INFO] [stdout] | [INFO] [stdout] 633 | if let Some(ref batch) = self.batch { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 633 - if let Some(ref batch) = self.batch { [INFO] [stdout] 633 + if let Some(batch) = self.batch { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this pattern creates a reference to a reference [INFO] [stdout] --> src/store.rs:655:16 [INFO] [stdout] | [INFO] [stdout] 655 | if let Some(ref batch) = self.batch { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 655 - if let Some(ref batch) = self.batch { [INFO] [stdout] 655 + if let Some(batch) = self.batch { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `BitmapAccumulator` [INFO] [stdout] --> src/txhashset/bitmap_accumulator.rs:57:2 [INFO] [stdout] | [INFO] [stdout] 57 | / pub fn new() -> BitmapAccumulator { [INFO] [stdout] 58 | | BitmapAccumulator { [INFO] [stdout] 59 | | backend: VecBackend::new(), [INFO] [stdout] 60 | | } [INFO] [stdout] 61 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 53 + impl Default for BitmapAccumulator { [INFO] [stdout] 54 + fn default() -> Self { [INFO] [stdout] 55 + Self::new() [INFO] [stdout] 56 + } [INFO] [stdout] 57 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u64` -> `u64`) [INFO] [stdout] --> src/txhashset/bitmap_accumulator.rs:204:38 [INFO] [stdout] | [INFO] [stdout] 204 | let chunk = self.backend.get_data(chunk_pos as u64).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `chunk_pos` [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: you should consider adding a `Default` implementation for `BitmapChunk` [INFO] [stdout] --> src/txhashset/bitmap_accumulator.rs:223:2 [INFO] [stdout] | [INFO] [stdout] 223 | / pub fn new() -> BitmapChunk { [INFO] [stdout] 224 | | BitmapChunk(BitVec::from_elem(Self::LEN_BITS, false)) [INFO] [stdout] 225 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 217 + impl Default for BitmapChunk { [INFO] [stdout] 218 + fn default() -> Self { [INFO] [stdout] 219 + Self::new() [INFO] [stdout] 220 + } [INFO] [stdout] 221 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/txhashset/bitmap_accumulator.rs:262:3 [INFO] [stdout] | [INFO] [stdout] 262 | return format!("BitmapChunk(Len:{} Data:{})", self.0.len(), hex_str); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 262 - return format!("BitmapChunk(Len:{} Data:{})", self.0.len(), hex_str); [INFO] [stdout] 262 + format!("BitmapChunk(Len:{} Data:{})", self.0.len(), hex_str) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty doc comment [INFO] [stdout] --> src/txhashset/bitmap_accumulator.rs:295:1 [INFO] [stdout] | [INFO] [stdout] 295 | /// [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider removing or filling it [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_docs [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manually reimplementing `div_ceil` [INFO] [stdout] --> src/txhashset/bitmap_accumulator.rs:342:23 [INFO] [stdout] | [INFO] [stdout] 342 | Vec::with_capacity((chunks_left + BitmapBlock::NCHUNKS - 1) / BitmapBlock::NCHUNKS); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `chunks_left.div_ceil(BitmapBlock::NCHUNKS)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_div_ceil [INFO] [stdout] = note: `#[warn(clippy::manual_div_ceil)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/txhashset/bitmap_accumulator.rs:535:68 [INFO] [stdout] | [INFO] [stdout] 535 | Self::from_u8(reader.read_u8()?).ok_or(ser::Error::CorruptedData(format!( [INFO] [stdout] | __________________________________________________________________________^ [INFO] [stdout] 536 | | "Failed to read the next byte" [INFO] [stdout] 537 | | ))) [INFO] [stdout] | |_________^ help: consider using `.to_string()`: `"Failed to read the next byte".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/txhashset/bitmap_accumulator.rs:559:31 [INFO] [stdout] | [INFO] [stdout] 559 | let range_size = n_blocks * BitmapChunk::LEN_BITS as usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `BitmapChunk::LEN_BITS` [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: deref which would be done by auto-deref [INFO] [stdout] --> src/txhashset/desegmenter.rs:291:42 [INFO] [stdout] | [INFO] [stdout] 291 | ... txhashset::rewindable_kernel_view(&*txhashset.read(), |view, batch| { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `&txhashset.read()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Hash` which implements the `Copy` trait [INFO] [stdout] --> src/chain.rs:105:22 [INFO] [stdout] | [INFO] [stdout] 105 | if orphans.insert(hash.clone(), orphan).is_none() { [INFO] [stdout] | ^^^^^^^^^^^^ help: try removing the `clone` call: `hash` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/chain.rs:106:65 [INFO] [stdout] | [INFO] [stdout] 106 | let height_hashes = height_idx.entry(height).or_insert_with(|| vec![]); [INFO] [stdout] | ^^^^^^^^^ help: replace the closure with `Vec::new`: `std::vec::Vec::new` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/txhashset/desegmenter.rs:298:13 [INFO] [stdout] | [INFO] [stdout] 298 | ... if processed % 100000 == 0 || processed == total { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `processed.is_multiple_of(100000)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` 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/chain.rs:133:77 [INFO] [stdout] | [INFO] [stdout] 133 | height_idx.retain(|_, ref mut xs| xs.iter().any(|x| orphans.contains_key(&x))); [INFO] [stdout] | ^^ help: change this to: `x` [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: unneeded `return` statement [INFO] [stdout] --> src/chain.rs:165:3 [INFO] [stdout] | [INFO] [stdout] 165 | return orphans.remove(&header_hash); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 165 - return orphans.remove(&header_hash); [INFO] [stdout] 165 + orphans.remove(&header_hash) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `u64` which implements the `Copy` trait [INFO] [stdout] --> src/chain.rs:161:23 [INFO] [stdout] | [INFO] [stdout] 161 | height_idx.insert(height.clone(), hash_by_height); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try removing the `clone` call: `height` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/chain.rs:165:25 [INFO] [stdout] | [INFO] [stdout] 165 | return orphans.remove(&header_hash); [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `header_hash` [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: iterating on a map's keys [INFO] [stdout] --> src/chain.rs:170:3 [INFO] [stdout] | [INFO] [stdout] 170 | / self.orphans [INFO] [stdout] 171 | | .read() [INFO] [stdout] 172 | | .iter() [INFO] [stdout] 173 | | .map(|(k, _v)| k.clone()) [INFO] [stdout] | |_____________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_kv_map [INFO] [stdout] = note: `#[warn(clippy::iter_kv_map)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 170 ~ self.orphans [INFO] [stdout] 171 ~ .read().keys().map(|k| k.clone()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Hash` which implements the `Copy` trait [INFO] [stdout] --> src/chain.rs:173:19 [INFO] [stdout] | [INFO] [stdout] 173 | .map(|(k, _v)| k.clone()) [INFO] [stdout] | ^^^^^^^^^ help: try dereferencing it: `*k` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> src/chain.rs:184:3 [INFO] [stdout] | [INFO] [stdout] 184 | self.orphans.read().get(hash).map(|o| o.clone()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `cloned` method: `self.orphans.read().get(hash).cloned()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Hash` which implements the `Copy` trait [INFO] [stdout] --> src/chain.rs:192:14 [INFO] [stdout] | [INFO] [stdout] 192 | .map(|o| (o.block.header.prev_hash.clone(), o.block.header.height)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `o.block.header.prev_hash` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/txhashset/desegmenter.rs:438:7 [INFO] [stdout] | [INFO] [stdout] 438 | ) -> Result< [INFO] [stdout] | __________^ [INFO] [stdout] 439 | | ( [INFO] [stdout] 440 | | Vec, [INFO] [stdout] 441 | | Vec, [INFO] [stdout] ... | [INFO] [stdout] 444 | | Error, [INFO] [stdout] 445 | | > { [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/txhashset/desegmenter.rs:462:4 [INFO] [stdout] | [INFO] [stdout] 462 | return Ok((bitmap_result, Vec::new(), Vec::new())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 462 - return Ok((bitmap_result, Vec::new(), Vec::new())); [INFO] [stdout] 462 + Ok((bitmap_result, Vec::new(), Vec::new())) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/txhashset/desegmenter.rs:508:4 [INFO] [stdout] | [INFO] [stdout] 508 | return Ok((res_req, res_dup_req, waiting_req)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 508 - return Ok((res_req, res_dup_req, waiting_req)); [INFO] [stdout] 508 + Ok((res_req, res_dup_req, waiting_req)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manually reimplementing `div_ceil` [INFO] [stdout] --> src/txhashset/desegmenter.rs:610:31 [INFO] [stdout] | [INFO] [stdout] 610 | let bitmap_mmr_leaf_count = (pmmr::n_leaves(archive_header.output_mmr_size) + 1023) / 1024; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `pmmr::n_leaves(archive_header.output_mmr_size).div_ceil(1024)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_div_ceil [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `u64` which implements the `Copy` trait [INFO] [stdout] --> src/txhashset/desegmenter.rs:616:29 [INFO] [stdout] | [INFO] [stdout] 616 | let bitmap_mmr_size = 1 + pmmr::peaks(pmmr::insertion_to_pmmr_index(bitmap_mmr_leaf_count)) [INFO] [stdout] | ___________________________________^ [INFO] [stdout] 617 | | .last() [INFO] [stdout] 618 | | .unwrap_or( [INFO] [stdout] 619 | | &(pmmr::peaks(pmmr::insertion_to_pmmr_index(bitmap_mmr_leaf_count - 1)) [INFO] [stdout] ... | [INFO] [stdout] 623 | | .clone(); [INFO] [stdout] | |____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] help: try dereferencing it [INFO] [stdout] | [INFO] [stdout] 616 ~ let bitmap_mmr_size = 1 + *pmmr::peaks(pmmr::insertion_to_pmmr_index(bitmap_mmr_leaf_count)) [INFO] [stdout] 617 ~ .last() [INFO] [stdout] 618 ~ .unwrap_or( [INFO] [stdout] 619 ~ &(pmmr::peaks(pmmr::insertion_to_pmmr_index(bitmap_mmr_leaf_count - 1)) [INFO] [stdout] 620 ~ .last() [INFO] [stdout] 621 ~ .unwrap()), [INFO] [stdout] 622 ~ ); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/txhashset/desegmenter.rs:619:5 [INFO] [stdout] | [INFO] [stdout] 619 | / &(pmmr::peaks(pmmr::insertion_to_pmmr_index(bitmap_mmr_leaf_count - 1)) [INFO] [stdout] 620 | | .last() [INFO] [stdout] 621 | | .unwrap()), [INFO] [stdout] | |______________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 619 ~ (pmmr::peaks(pmmr::insertion_to_pmmr_index(bitmap_mmr_leaf_count - 1)) [INFO] [stdout] 620 ~ .last() [INFO] [stdout] 621 ~ .unwrap()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/txhashset/desegmenter.rs:642:52 [INFO] [stdout] | [INFO] [stdout] 642 | if !self.bitmap_segment_cache.read().has_segment(&segment.id()) { [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `segment.id()` [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: unneeded `return` statement [INFO] [stdout] --> src/txhashset/desegmenter.rs:731:3 [INFO] [stdout] | [INFO] [stdout] 731 | return Err(Error::BitmapNotReady); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 731 - return Err(Error::BitmapNotReady); [INFO] [stdout] 731 + Err(Error::BitmapNotReady) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/txhashset/desegmenter.rs:784:3 [INFO] [stdout] | [INFO] [stdout] 784 | return Err(Error::BitmapNotReady); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 784 - return Err(Error::BitmapNotReady); [INFO] [stdout] 784 + Err(Error::BitmapNotReady) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/txhashset/desegmenter.rs:835:3 [INFO] [stdout] | [INFO] [stdout] 835 | return Err(Error::BitmapNotReady); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 835 - return Err(Error::BitmapNotReady); [INFO] [stdout] 835 + Err(Error::BitmapNotReady) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/chain.rs:618:5 [INFO] [stdout] | [INFO] [stdout] 618 | return Ok(tip); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 618 - return Ok(tip); [INFO] [stdout] 618 + Ok(tip) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/chain.rs:626:5 [INFO] [stdout] | [INFO] [stdout] 626 | return Err(e); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 626 - return Err(e); [INFO] [stdout] 626 + Err(e) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/txhashset/desegmenter.rs:845:17 [INFO] [stdout] | [INFO] [stdout] 845 | debug_assert!(leaves_num % 2 == 0); // Ciblings are expected to be here [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: replace with: `leaves_num.is_multiple_of(2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/txhashset/desegmenter.rs:878:32 [INFO] [stdout] | [INFO] [stdout] 878 | let can_increase_capacity = current_leave % (cur_capacity * 2) == 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `current_leave.is_multiple_of(cur_capacity * 2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/txhashset/desegmenter.rs:908:18 [INFO] [stdout] | [INFO] [stdout] 908 | debug_assert!(current_leave % cur_capacity == 0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `current_leave.is_multiple_of(cur_capacity)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/txhashset/desegmenter.rs:919:17 [INFO] [stdout] | [INFO] [stdout] 919 | debug_assert!(current_leave % cur_capacity == 0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `current_leave.is_multiple_of(cur_capacity)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/chain.rs:703:3 [INFO] [stdout] | [INFO] [stdout] 703 | / if header.total_difficulty() <= head.total_difficulty { [INFO] [stdout] 704 | | if self.block_exists(&header.hash())? { [INFO] [stdout] 705 | | return Err(Error::Unfit("duplicate block".into())); [INFO] [stdout] 706 | | } [INFO] [stdout] 707 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 703 ~ if header.total_difficulty() <= head.total_difficulty [INFO] [stdout] 704 ~ && self.block_exists(&header.hash())? { [INFO] [stdout] 705 | return Err(Error::Unfit("duplicate block".into())); [INFO] [stdout] 706 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manually reimplementing `div_ceil` [INFO] [stdout] --> src/txhashset/desegmenter.rs:1012:24 [INFO] [stdout] | [INFO] [stdout] 1012 | let segments_num = (pmmr::n_leaves(target_mmr_size) + leaves_num - 1) / leaves_num; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `pmmr::n_leaves(target_mmr_size).div_ceil(leaves_num)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_div_ceil [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/txhashset/headers_desegmenter.rs:106:3 [INFO] [stdout] | [INFO] [stdout] 106 | return &self.headers_root_hash; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 106 - return &self.headers_root_hash; [INFO] [stdout] 106 + &self.headers_root_hash [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/chain.rs:777:5 [INFO] [stdout] | [INFO] [stdout] 777 | &mut *self.cache_header_difficulty.write(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut self.cache_header_difficulty.write()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` 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/chain.rs:822:5 [INFO] [stdout] | [INFO] [stdout] 822 | &blocks, [INFO] [stdout] | ^^^^^^^ help: change this to: `blocks` [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: deref which would be done by auto-deref [INFO] [stdout] --> src/chain.rs:824:5 [INFO] [stdout] | [INFO] [stdout] 824 | &mut *self.cache_header_difficulty.write(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut self.cache_header_difficulty.write()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/txhashset/headers_desegmenter.rs:197:19 [INFO] [stdout] | [INFO] [stdout] 197 | ... .map_err(&Error::TxHashSetErr)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `Error::TxHashSetErr` [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: deref which would be done by auto-deref [INFO] [stdout] --> src/chain.rs:866:44 [INFO] [stdout] | [INFO] [stdout] 866 | pipe::process_block_header(bh, &mut ctx, &mut *self.cache_header_difficulty.write())?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut self.cache_header_difficulty.write()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if let` can be collapsed into the outer `if let` [INFO] [stdout] --> src/txhashset/headers_desegmenter.rs:264:6 [INFO] [stdout] | [INFO] [stdout] 264 | / if let Some(hash) = hash { [INFO] [stdout] 265 | | if header.hash() != *hash { [INFO] [stdout] ... | [INFO] [stdout] 272 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] help: the outer pattern can be modified to include the inner pattern [INFO] [stdout] --> src/txhashset/headers_desegmenter.rs:257:17 [INFO] [stdout] | [INFO] [stdout] 257 | if let Some(hash) = header_desegmenter [INFO] [stdout] | ^^^^ replace this binding [INFO] [stdout] ... [INFO] [stdout] 264 | if let Some(hash) = hash { [INFO] [stdout] | ^^^^^^^^^^ with this pattern [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/chain.rs:891:4 [INFO] [stdout] | [INFO] [stdout] 891 | &mut *self.cache_header_difficulty.write(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut self.cache_header_difficulty.write()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/txhashset/headers_desegmenter.rs:301:7 [INFO] [stdout] | [INFO] [stdout] 301 | ) -> Result<(Vec<(Hash, u64)>, Vec<(Hash, u64)>, Vec<(Hash, u64)>), Error> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Hash` which implements the `Copy` trait [INFO] [stdout] --> src/txhashset/headers_desegmenter.rs:351:22 [INFO] [stdout] | [INFO] [stdout] 351 | let request = (h.clone(), hash_idx * HEADERS_PER_BATCH as u64); [INFO] [stdout] | ^^^^^^^^^ help: try dereferencing it: `*h` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `(Hash, u64)` which implements the `Copy` trait [INFO] [stdout] --> src/txhashset/headers_desegmenter.rs:376:20 [INFO] [stdout] | [INFO] [stdout] 376 | retry_vec.push(req.clone()); [INFO] [stdout] | ^^^^^^^^^^^ help: try dereferencing it: `*req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if let` can be collapsed into the outer `if let` [INFO] [stdout] --> src/txhashset/headers_desegmenter.rs:414:4 [INFO] [stdout] | [INFO] [stdout] 414 | / if let Some(next_hash) = next_hash { [INFO] [stdout] 415 | | let last_header = bhs.last().unwrap(); [INFO] [stdout] 416 | | if last_header.hash() != *next_hash { [INFO] [stdout] 417 | | return Err(( [INFO] [stdout] ... | [INFO] [stdout] 424 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] help: the outer pattern can be modified to include the inner pattern [INFO] [stdout] --> src/txhashset/headers_desegmenter.rs:407:15 [INFO] [stdout] | [INFO] [stdout] 407 | if let Some(next_hash) = headers [INFO] [stdout] | ^^^^^^^^^ replace this binding [INFO] [stdout] ... [INFO] [stdout] 414 | if let Some(next_hash) = next_hash { [INFO] [stdout] | ^^^^^^^^^^^^^^^ with this pattern [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Options` which implements the `Copy` trait [INFO] [stdout] --> src/chain.rs:968:41 [INFO] [stdout] | [INFO] [stdout] 968 | if self.check_block(&orphan.block, orphan.opts.clone()).is_ok() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `orphan.opts` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/chain.rs:1026:52 [INFO] [stdout] | [INFO] [stdout] 1026 | let has_nrd_kernel = tx.kernels().iter().any(|k| match k.features { [INFO] [stdout] | __________________________________________________________^ [INFO] [stdout] 1027 | | KernelFeatures::NoRecentDuplicate { .. } => true, [INFO] [stdout] 1028 | | _ => false, [INFO] [stdout] 1029 | | }); [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] = note: `#[warn(clippy::match_like_matches_macro)]` on by default [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 1026 - let has_nrd_kernel = tx.kernels().iter().any(|k| match k.features { [INFO] [stdout] 1027 - KernelFeatures::NoRecentDuplicate { .. } => true, [INFO] [stdout] 1028 - _ => false, [INFO] [stdout] 1029 - }); [INFO] [stdout] 1026 + let has_nrd_kernel = tx.kernels().iter().any(|k| matches!(k.features, KernelFeatures::NoRecentDuplicate { .. })); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/txhashset/request_lookup.rs:23:6 [INFO] [stdout] | [INFO] [stdout] 23 | impl<'a, K, V> RequestLookup for &'a HashMap [INFO] [stdout] | ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] = note: `#[warn(clippy::needless_lifetimes)]` on by default [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 23 - impl<'a, K, V> RequestLookup for &'a HashMap [INFO] [stdout] 23 + impl RequestLookup for &HashMap [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/txhashset/rewindable_kernel_view.rs:44:13 [INFO] [stdout] | [INFO] [stdout] 44 | .map_err(|e| Error::TxHashSetErr(e))?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `Error::TxHashSetErr` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/txhashset/rewindable_kernel_view.rs:61:13 [INFO] [stdout] | [INFO] [stdout] 61 | .map_err(|e| Error::InvalidRoot(e))?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `Error::InvalidRoot` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/txhashset/segmenter.rs:70:34 [INFO] [stdout] | [INFO] [stdout] 70 | let root = pmmr.root().map_err(&Error::TxHashSetErr)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `Error::TxHashSetErr` [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: the borrowed expression implements the required traits [INFO] [stdout] --> src/txhashset/segmenter.rs:77:34 [INFO] [stdout] | [INFO] [stdout] 77 | let root = pmmr.root().map_err(&Error::TxHashSetErr)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `Error::TxHashSetErr` [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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/chain.rs:1208:32 [INFO] [stdout] | [INFO] [stdout] 1208 | self.rewind_and_apply_fork(&header, ext, batch)?; [INFO] [stdout] | ^^^^^^^ help: change this to: `header` [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: unneeded `return` statement [INFO] [stdout] --> src/txhashset/segments_cache.rs:57:15 [INFO] [stdout] | [INFO] [stdout] 57 | Ok(idx) => return self.required_segments[idx] == *seg_id, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 57 - Ok(idx) => return self.required_segments[idx] == *seg_id, [INFO] [stdout] 57 + Ok(idx) => self.required_segments[idx] == *seg_id, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/txhashset/segments_cache.rs:58:14 [INFO] [stdout] | [INFO] [stdout] 58 | Err(_) => return false, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 58 - Err(_) => return false, [INFO] [stdout] 58 + Err(_) => false, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/chain.rs:1306:3 [INFO] [stdout] | [INFO] [stdout] 1306 | return Ok(segmenter); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 1306 - return Ok(segmenter); [INFO] [stdout] 1306 + Ok(segmenter) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stdout] --> src/chain.rs:1291:7 [INFO] [stdout] | [INFO] [stdout] 1291 | let ref archive_header = self.txhashset_archive_header()?; [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^------------------------------------ help: try: `let archive_header = &self.txhashset_archive_header()?;` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stdout] = note: `#[warn(clippy::toplevel_ref_arg)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `u64` which implements the `Copy` trait [INFO] [stdout] --> src/txhashset/segments_cache.rs:130:60 [INFO] [stdout] | [INFO] [stdout] 130 | if !requested.contains_request(&(self.seg_type.clone(), segm.leaf_offset().clone())) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `segm.leaf_offset()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `SegmentIdentifier` which implements the `Copy` trait [INFO] [stdout] --> src/txhashset/segments_cache.rs:131:17 [INFO] [stdout] | [INFO] [stdout] 131 | result.push(segm.clone()); [INFO] [stdout] | ^^^^^^^^^^^^ help: try dereferencing it: `*segm` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `SegmentIdentifier` which implements the `Copy` trait [INFO] [stdout] --> src/txhashset/segments_cache.rs:136:32 [INFO] [stdout] | [INFO] [stdout] 136 | waiting_indexes.push((idx, segm.clone())); [INFO] [stdout] | ^^^^^^^^^^^^ help: try dereferencing it: `*segm` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `SegmentIdentifier` which implements the `Copy` trait [INFO] [stdout] --> src/txhashset/segments_cache.rs:147:20 [INFO] [stdout] | [INFO] [stdout] 147 | retry_vec.push(req.clone()); [INFO] [stdout] | ^^^^^^^^^^^ help: try dereferencing it: `*req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/chain.rs:1339:5 [INFO] [stdout] | [INFO] [stdout] 1339 | Ok(extension.build_bitmap_accumulator()?) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] = note: `#[warn(clippy::needless_question_mark)]` on by default [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 1339 - Ok(extension.build_bitmap_accumulator()?) [INFO] [stdout] 1339 + extension.build_bitmap_accumulator() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/txhashset/segments_cache.rs:184:3 [INFO] [stdout] | [INFO] [stdout] 184 | / if !pruned { [INFO] [stdout] 185 | | if !segment.is_no_prune() { [INFO] [stdout] 186 | | return Err(Error::InvalidPruneState); [INFO] [stdout] 187 | | } [INFO] [stdout] 188 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 184 ~ if !pruned [INFO] [stdout] 185 ~ && !segment.is_no_prune() { [INFO] [stdout] 186 | return Err(Error::InvalidPruneState); [INFO] [stdout] 187 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/txhashset.rs:27:1 [INFO] [stdout] | [INFO] [stdout] 27 | mod txhashset; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] = note: `#[warn(clippy::module_inception)]` 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/chain.rs:1371:47 [INFO] [stdout] | [INFO] [stdout] 1371 | let output_pmmr = txhashset.output_pmmr_at(&header); [INFO] [stdout] | ^^^^^^^ help: change this to: `header` [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/chain.rs:1375:55 [INFO] [stdout] | [INFO] [stdout] 1375 | let rangeproof_pmmr = txhashset.rangeproof_pmmr_at(&header); [INFO] [stdout] | ^^^^^^^ help: change this to: `header` [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/chain.rs:1379:47 [INFO] [stdout] | [INFO] [stdout] 1379 | let kernel_pmmr = txhashset.kernel_pmmr_at(&header); [INFO] [stdout] | ^^^^^^^ help: change this to: `header` [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/txhashset/txhashset.rs:90:13 [INFO] [stdout] | [INFO] [stdout] 90 | a_val.cmp(&b_val) [INFO] [stdout] | ^^^^^^ help: change this to: `b_val` [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: non-canonical implementation of `partial_cmp` on an `Ord` type [INFO] [stdout] --> src/txhashset/txhashset.rs:94:1 [INFO] [stdout] | [INFO] [stdout] 94 | / impl PartialOrd for OrderedHashLeafNode { [INFO] [stdout] 95 | | fn partial_cmp(&self, other: &Self) -> Option { [INFO] [stdout] 96 | | let a_val = match self { [INFO] [stdout] 97 | | OrderedHashLeafNode::Hash(_, pos0) => pos0, [INFO] [stdout] ... | [INFO] [stdout] 106 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#non_canonical_partial_ord_impl [INFO] [stdout] = note: `#[warn(clippy::non_canonical_partial_ord_impl)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 95 - fn partial_cmp(&self, other: &Self) -> Option { [INFO] [stdout] 96 - let a_val = match self { [INFO] [stdout] 97 - OrderedHashLeafNode::Hash(_, pos0) => pos0, [INFO] [stdout] 98 - OrderedHashLeafNode::Leaf(_, pos0) => pos0, [INFO] [stdout] 99 - }; [INFO] [stdout] 100 - let b_val = match other { [INFO] [stdout] 101 - OrderedHashLeafNode::Hash(_, pos0) => pos0, [INFO] [stdout] 102 - OrderedHashLeafNode::Leaf(_, pos0) => pos0, [INFO] [stdout] 103 - }; [INFO] [stdout] 104 - Some(a_val.cmp(b_val)) [INFO] [stdout] 105 - } [INFO] [stdout] 95 + fn partial_cmp(&self, other: &Self) -> Option { Some(self.cmp(other)) } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/chain.rs:1467:37 [INFO] [stdout] | [INFO] [stdout] 1467 | txhashset::rewindable_kernel_view(&txhashset, |view, batch| { [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `txhashset` [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 boolean expression can be simplified [INFO] [stdout] --> src/chain.rs:1492:9 [INFO] [stdout] | [INFO] [stdout] 1492 | while !self.is_on_current_chain(¤t, body_head).is_ok() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.is_on_current_chain(¤t, body_head).is_err()` [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 expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/txhashset/txhashset.rs:378:41 [INFO] [stdout] | [INFO] [stdout] 378 | Ok(self.commit_index.get_block_header(&hash)?) [INFO] [stdout] | ^^^^^ help: change this to: `hash` [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: redundant closure [INFO] [stdout] --> src/txhashset/txhashset.rs:456:44 [INFO] [stdout] | [INFO] [stdout] 456 | output_root: output_pmmr.root().map_err(|e| Error::InvalidRoot(e))?, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `Error::InvalidRoot` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/txhashset/txhashset.rs:458:44 [INFO] [stdout] | [INFO] [stdout] 458 | rproof_root: rproof_pmmr.root().map_err(|e| Error::InvalidRoot(e))?, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `Error::InvalidRoot` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/txhashset/txhashset.rs:460:44 [INFO] [stdout] | [INFO] [stdout] 460 | kernel_root: kernel_pmmr.root().map_err(|e| Error::InvalidRoot(e))?, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `Error::InvalidRoot` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/txhashset/txhashset.rs:467:39 [INFO] [stdout] | [INFO] [stdout] 467 | Ok(self.commit_index.get_output_pos(&commit)?) [INFO] [stdout] | ^^^^^^^ help: change this to: `commit` [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/txhashset/txhashset.rs:488:43 [INFO] [stdout] | [INFO] [stdout] 488 | let rewind_rm_pos = input_pos_to_rewind(&horizon_header, &head_header, batch)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `horizon_header` [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: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/chain.rs:1808:3 [INFO] [stdout] | [INFO] [stdout] 1808 | Ok(self.txhashset.read().get_output_pos(commit)?) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 1808 - Ok(self.txhashset.read().get_output_pos(commit)?) [INFO] [stdout] 1808 + self.txhashset.read().get_output_pos(commit) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this pattern creates a reference to a reference [INFO] [stdout] --> src/chain.rs:1832:8 [INFO] [stdout] | [INFO] [stdout] 1832 | for (ref x, &y) in outputs.1.iter().zip(rangeproofs.1.iter()) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 1832 - for (ref x, &y) in outputs.1.iter().zip(rangeproofs.1.iter()) { [INFO] [stdout] 1832 + for (x, &y) in outputs.1.iter().zip(rangeproofs.1.iter()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/txhashset/txhashset.rs:538:48 [INFO] [stdout] | [INFO] [stdout] 538 | let prev_header = batch.get_previous_header(&from_header)?; [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `from_header` [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: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/txhashset/txhashset.rs:559:6 [INFO] [stdout] | [INFO] [stdout] 559 | / match kernel.features { [INFO] [stdout] 560 | | KernelFeatures::NoRecentDuplicate { .. } => { [INFO] [stdout] 561 | | while current_pos > current_header.kernel_mmr_size { [INFO] [stdout] 562 | | let hash = header_pmmr [INFO] [stdout] ... | [INFO] [stdout] 573 | | _ => {} [INFO] [stdout] 574 | | } [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] 559 ~ if let KernelFeatures::NoRecentDuplicate { .. } = kernel.features { [INFO] [stdout] 560 ~ while current_pos > current_header.kernel_mmr_size { [INFO] [stdout] 561 ~ let hash = header_pmmr [INFO] [stdout] 562 ~ .get_header_hash_by_height(current_header.height + 1)?; [INFO] [stdout] 563 ~ current_header = batch.get_block_header(&hash)?; [INFO] [stdout] 564 ~ } [INFO] [stdout] 565 ~ let new_pos = CommitPos { [INFO] [stdout] 566 ~ pos: current_pos, [INFO] [stdout] 567 ~ height: current_header.height, [INFO] [stdout] 568 ~ }; [INFO] [stdout] 569 ~ apply_kernel_rules(&kernel, new_pos, batch)?; [INFO] [stdout] 570 ~ count += 1; [INFO] [stdout] 571 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/chain.rs:1982:26 [INFO] [stdout] | [INFO] [stdout] 1982 | batch.migrate_block(&key, ProtocolVersion(2), ProtocolVersion(3))?; [INFO] [stdout] | ^^^^ help: change this to: `key` [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: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/chain.rs:2013:3 [INFO] [stdout] | [INFO] [stdout] 2013 | Ok(self.get_block_header(&hash)?) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 2013 - Ok(self.get_block_header(&hash)?) [INFO] [stdout] 2013 + self.get_block_header(&hash) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/chain.rs:2059:17 [INFO] [stdout] | [INFO] [stdout] 2059 | .find_kernel(&excess, min_index, max_index) [INFO] [stdout] | ^^^^^^^ help: change this to: `excess` [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 use of `format!` [INFO] [stdout] --> src/chain.rs:2118:21 [INFO] [stdout] | [INFO] [stdout] 2118 | Err(Error::Other(format!("header is not on current chain"))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"header is not on current chain".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/txhashset/txhashset.rs:870:34 [INFO] [stdout] | [INFO] [stdout] 870 | pub fn header_extending_readonly<'a, F, T>( [INFO] [stdout] | ^^ [INFO] [stdout] 871 | handle: &'a mut PMMRHandle, [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 870 ~ pub fn header_extending_readonly( [INFO] [stdout] 871 ~ handle: &mut PMMRHandle, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Tip` which implements the `Copy` trait [INFO] [stdout] --> src/txhashset/txhashset.rs:982:3 [INFO] [stdout] | [INFO] [stdout] 982 | self.head.clone() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.head` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/chain.rs:2199:46 [INFO] [stdout] | [INFO] [stdout] 2199 | if let Ok(header) = self.get_block_header(&hash) { [INFO] [stdout] | ^^^^^ help: change this to: `hash` [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: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/txhashset/txhashset.rs:1073:3 [INFO] [stdout] | [INFO] [stdout] 1073 | Ok(self.pmmr.root().map_err(|e| Error::InvalidRoot(e))?) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 1073 - Ok(self.pmmr.root().map_err(|e| Error::InvalidRoot(e))?) [INFO] [stdout] 1073 + self.pmmr.root().map_err(|e| Error::InvalidRoot(e)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/txhashset/txhashset.rs:1073:31 [INFO] [stdout] | [INFO] [stdout] 1073 | Ok(self.pmmr.root().map_err(|e| Error::InvalidRoot(e))?) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `Error::InvalidRoot` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/chain.rs:2337:21 [INFO] [stdout] | [INFO] [stdout] 2337 | batch.save_block(&genesis)?; [INFO] [stdout] | ^^^^^^^^ help: change this to: `genesis` [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: using `clone` on type `Tip` which implements the `Copy` trait [INFO] [stdout] --> src/txhashset/txhashset.rs:1158:3 [INFO] [stdout] | [INFO] [stdout] 1158 | self.head.clone() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.head` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/chain.rs:2354:19 [INFO] [stdout] | [INFO] [stdout] 2354 | .apply_block(&genesis, ext.header_extension, batch) [INFO] [stdout] | ^^^^^^^^ help: change this to: `genesis` [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: using `clone` on type `Hash` which implements the `Copy` trait [INFO] [stdout] --> src/txhashset/txhashset.rs:1229:11 [INFO] [stdout] | [INFO] [stdout] 1229 | hash: b.hash().clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `b.hash()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `u64` which implements the `Copy` trait [INFO] [stdout] --> src/txhashset/txhashset.rs:1230:13 [INFO] [stdout] | [INFO] [stdout] 1230 | height: b.header.height.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `b.header.height` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/txhashset/txhashset.rs:1351:19 [INFO] [stdout] | [INFO] [stdout] 1351 | ... .map_err(&Error::TxHashSetErr)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `Error::TxHashSetErr` [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: the borrowed expression implements the required traits [INFO] [stdout] --> src/txhashset/txhashset.rs:1355:18 [INFO] [stdout] | [INFO] [stdout] 1355 | ... .map_err(&Error::TxHashSetErr)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `Error::TxHashSetErr` [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: the borrowed expression implements the required traits [INFO] [stdout] --> src/txhashset/txhashset.rs:1362:18 [INFO] [stdout] | [INFO] [stdout] 1362 | ... .map_err(&Error::TxHashSetErr)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `Error::TxHashSetErr` [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: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/txhashset/txhashset.rs:1375:7 [INFO] [stdout] | [INFO] [stdout] 1375 | / if !bitmap.contains(i as u32) { [INFO] [stdout] 1376 | | let res = self.output_pmmr.prune(pos0); [INFO] [stdout] 1377 | | debug_assert!(res.is_ok()); [INFO] [stdout] 1378 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 1374 ~ Some(i) [INFO] [stdout] 1375 ~ if !bitmap.contains(i as u32) => { [INFO] [stdout] 1376 | let res = self.output_pmmr.prune(pos0); [INFO] [stdout] 1377 | debug_assert!(res.is_ok()); [INFO] [stdout] 1378 ~ } [INFO] [stdout] | [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/txhashset/txhashset.rs:1373:5 [INFO] [stdout] | [INFO] [stdout] 1373 | / match pmmr_index { [INFO] [stdout] 1374 | | Some(i) => { [INFO] [stdout] 1375 | | if !bitmap.contains(i as u32) { [INFO] [stdout] 1376 | | let res = self.output_pmmr.prune(pos0); [INFO] [stdout] ... | [INFO] [stdout] 1380 | | None => {} [INFO] [stdout] 1381 | | }; [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] help: try [INFO] [stdout] | [INFO] [stdout] 1373 ~ if let Some(i) = pmmr_index { [INFO] [stdout] 1374 ~ if !bitmap.contains(i as u32) { [INFO] [stdout] 1375 ~ let res = self.output_pmmr.prune(pos0); [INFO] [stdout] 1376 ~ debug_assert!(res.is_ok()); [INFO] [stdout] 1377 ~ } [INFO] [stdout] 1378 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/txhashset/txhashset.rs:1411:19 [INFO] [stdout] | [INFO] [stdout] 1411 | ... .map_err(&Error::TxHashSetErr)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `Error::TxHashSetErr` [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: the borrowed expression implements the required traits [INFO] [stdout] --> src/txhashset/txhashset.rs:1415:18 [INFO] [stdout] | [INFO] [stdout] 1415 | ... .map_err(&Error::TxHashSetErr)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `Error::TxHashSetErr` [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: the borrowed expression implements the required traits [INFO] [stdout] --> src/txhashset/txhashset.rs:1422:18 [INFO] [stdout] | [INFO] [stdout] 1422 | ... .map_err(&Error::TxHashSetErr)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `Error::TxHashSetErr` [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: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/txhashset/txhashset.rs:1436:7 [INFO] [stdout] | [INFO] [stdout] 1436 | / if !bitmap.contains(i as u32) { [INFO] [stdout] 1437 | | let res = self.rproof_pmmr.prune(pos0); [INFO] [stdout] 1438 | | debug_assert!(res.is_ok()); [INFO] [stdout] 1439 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 1435 ~ Some(i) [INFO] [stdout] 1436 ~ if !bitmap.contains(i as u32) => { [INFO] [stdout] 1437 | let res = self.rproof_pmmr.prune(pos0); [INFO] [stdout] 1438 | debug_assert!(res.is_ok()); [INFO] [stdout] 1439 ~ } [INFO] [stdout] | [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/txhashset/txhashset.rs:1434:5 [INFO] [stdout] | [INFO] [stdout] 1434 | / match pmmr_index { [INFO] [stdout] 1435 | | Some(i) => { [INFO] [stdout] 1436 | | if !bitmap.contains(i as u32) { [INFO] [stdout] 1437 | | let res = self.rproof_pmmr.prune(pos0); [INFO] [stdout] ... | [INFO] [stdout] 1441 | | None => {} [INFO] [stdout] 1442 | | }; [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] help: try [INFO] [stdout] | [INFO] [stdout] 1434 ~ if let Some(i) = pmmr_index { [INFO] [stdout] 1435 ~ if !bitmap.contains(i as u32) { [INFO] [stdout] 1436 ~ let res = self.rproof_pmmr.prune(pos0); [INFO] [stdout] 1437 ~ debug_assert!(res.is_ok()); [INFO] [stdout] 1438 ~ } [INFO] [stdout] 1439 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/txhashset/txhashset.rs:1483:18 [INFO] [stdout] | [INFO] [stdout] 1483 | ... .map_err(&Error::TxHashSetErr)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `Error::TxHashSetErr` [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: the borrowed expression implements the required traits [INFO] [stdout] --> src/txhashset/txhashset.rs:1543:27 [INFO] [stdout] | [INFO] [stdout] 1543 | bitmap_accumulator.init(&mut pmmr.leaf_idx_iter(0), nbits)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `pmmr.leaf_idx_iter(0)` [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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/txhashset/txhashset.rs:1600:47 [INFO] [stdout] | [INFO] [stdout] 1600 | let prev_header = batch.get_previous_header(&header)?; [INFO] [stdout] | ^^^^^^^ help: change this to: `header` [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: match expression looks like `matches!` macro [INFO] [stdout] --> src/error.rs:235:3 [INFO] [stdout] | [INFO] [stdout] 235 | / match self { [INFO] [stdout] 236 | | Error::Unfit(_) [INFO] [stdout] 237 | | | Error::Orphan(_) [INFO] [stdout] 238 | | | Error::StoreErr(_, _) [INFO] [stdout] ... | [INFO] [stdout] 243 | | _ => true, [INFO] [stdout] 244 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 235 ~ !matches!(self, Error::Unfit(_) [INFO] [stdout] 236 ~ | Error::Orphan(_) [INFO] [stdout] 237 ~ | Error::StoreErr(_, _) [INFO] [stdout] 238 ~ | Error::SerErr { .. } [INFO] [stdout] 239 ~ | Error::TxHashSetErr(_) [INFO] [stdout] 240 ~ | Error::GenesisBlockRequired [INFO] [stdout] 241 ~ | Error::Other(_)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/txhashset/txhashset.rs:1702:49 [INFO] [stdout] | [INFO] [stdout] 1702 | output_root: self.output_pmmr.root().map_err(|e| Error::InvalidRoot(e))?, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `Error::InvalidRoot` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/txhashset/txhashset.rs:1704:49 [INFO] [stdout] | [INFO] [stdout] 1704 | rproof_root: self.rproof_pmmr.root().map_err(|e| Error::InvalidRoot(e))?, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `Error::InvalidRoot` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/txhashset/txhashset.rs:1706:49 [INFO] [stdout] | [INFO] [stdout] 1706 | kernel_root: self.kernel_pmmr.root().map_err(|e| Error::InvalidRoot(e))?, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `Error::InvalidRoot` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `error::Error` [INFO] [stdout] --> src/txhashset/txhashset.rs:1818:17 [INFO] [stdout] | [INFO] [stdout] 1818 | return Err(Error::Stopped.into()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Error::Stopped` [INFO] [stdout] | [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: the borrowed expression implements the required traits [INFO] [stdout] --> src/linked_list.rs:242:28 [INFO] [stdout] | [INFO] [stdout] 242 | to_key(self.list_prefix, &mut commit.as_ref().to_vec()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `commit.as_ref().to_vec()` [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: useless conversion to the same type: `error::Error` [INFO] [stdout] --> src/txhashset/txhashset.rs:1826:17 [INFO] [stdout] | [INFO] [stdout] 1826 | return Err(Error::Stopped.into()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Error::Stopped` [INFO] [stdout] | [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: the borrowed expression implements the required traits [INFO] [stdout] --> src/linked_list.rs:246:33 [INFO] [stdout] | [INFO] [stdout] 246 | to_key_u64(self.entry_prefix, &mut commit.as_ref().to_vec(), pos) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `commit.as_ref().to_vec()` [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: returning the result of a `let` binding from a block [INFO] [stdout] --> src/txhashset/txhashset.rs:1959:3 [INFO] [stdout] | [INFO] [stdout] 1957 | / let verify_result = [INFO] [stdout] 1958 | | verify_result.map_err(|_| Error::Other("crossbeam runtime error".to_string()))?; [INFO] [stdout] | |____________________________________________________________________________________________- unnecessary `let` binding [INFO] [stdout] 1959 | verify_result [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 1957 ~ [INFO] [stdout] 1958 ~ verify_result.map_err(|_| Error::Other("crossbeam runtime error".to_string()))? [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/txhashset/txhashset.rs:1891:19 [INFO] [stdout] | [INFO] [stdout] 1891 | let kernel = self [INFO] [stdout] | __________________________________^ [INFO] [stdout] 1892 | | .kernel_pmmr [INFO] [stdout] 1893 | | .get_data(n) [INFO] [stdout] 1894 | | .ok_or_else(|| Error::TxKernelNotFound)?; [INFO] [stdout] | |_______________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] = note: `#[warn(clippy::unnecessary_lazy_evaluations)]` on by default [INFO] [stdout] help: use `ok_or` instead [INFO] [stdout] | [INFO] [stdout] 1894 - .ok_or_else(|| Error::TxKernelNotFound)?; [INFO] [stdout] 1894 + .ok_or(Error::TxKernelNotFound)?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/txhashset/txhashset.rs:1936:10 [INFO] [stdout] | [INFO] [stdout] 1936 | while running_threads.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!running_threads.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/txhashset/txhashset.rs:2110:3 [INFO] [stdout] | [INFO] [stdout] 2108 | / let verify_result = [INFO] [stdout] 2109 | | verify_result.map_err(|_| Error::Other("crossbeam runtime error".to_string()))?; [INFO] [stdout] | |____________________________________________________________________________________________- unnecessary `let` binding [INFO] [stdout] 2110 | verify_result [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 2108 ~ [INFO] [stdout] 2109 ~ verify_result.map_err(|_| Error::Other("crossbeam runtime error".to_string()))? [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `u64` which implements the `Copy` trait [INFO] [stdout] --> src/txhashset/txhashset.rs:2061:24 [INFO] [stdout] | [INFO] [stdout] 2061 | let proof_count = proof_count.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `proof_count` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/txhashset/txhashset.rs:2089:10 [INFO] [stdout] | [INFO] [stdout] 2089 | while running_threads.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!running_threads.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `format!` args [INFO] [stdout] --> src/txhashset/txhashset.rs:2152:71 [INFO] [stdout] | [INFO] [stdout] 2152 | let txhashset_zip = format!("{}_{}.zip", TXHASHSET_ZIP, header.hash().to_string()); [INFO] [stdout] | ^^^^^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] = note: `#[warn(clippy::to_string_in_format_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `PibdParams` [INFO] [stdout] --> src/pibd_params.rs:80:2 [INFO] [stdout] | [INFO] [stdout] 80 | / pub fn new() -> Self { [INFO] [stdout] 81 | | let num_cores = num_cpus::get(); [INFO] [stdout] 82 | | let mem_info = SysMemoryInfo::update(); [INFO] [stdout] 83 | | let res = PibdParams { [INFO] [stdout] ... | [INFO] [stdout] 96 | | res [INFO] [stdout] 97 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 78 + impl Default for PibdParams { [INFO] [stdout] 79 + fn default() -> Self { [INFO] [stdout] 80 + Self::new() [INFO] [stdout] 81 + } [INFO] [stdout] 82 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `format!` args [INFO] [stdout] --> src/txhashset/txhashset.rs:2187:17 [INFO] [stdout] | [INFO] [stdout] 2187 | header.hash().to_string() [INFO] [stdout] | ^^^^^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/pibd_params.rs:192:19 [INFO] [stdout] | [INFO] [stdout] 192 | debug_assert!(update_mul >= 0.0 && update_mul <= 1.0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(0.0..=1.0).contains(&update_mul)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] = note: `#[warn(clippy::manual_range_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/pibd_params.rs:199:19 [INFO] [stdout] | [INFO] [stdout] 199 | debug_assert!(update_mul >= 0.0 && update_mul <= 1.0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(0.0..=1.0).contains(&update_mul)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&PathBuf` instead of `&Path` involves a new object where a slice will do [INFO] [stdout] --> src/txhashset/txhashset.rs:2290:41 [INFO] [stdout] | [INFO] [stdout] 2290 | pub fn clean_txhashset_folder(root_dir: &PathBuf) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 2290 ~ pub fn clean_txhashset_folder(root_dir: &Path) { [INFO] [stdout] 2291 ~ let txhashset_path = root_dir.to_path_buf().join(TXHASHSET_SUBDIR); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/pibd_params.rs:226:17 [INFO] [stdout] | [INFO] [stdout] 226 | debug_assert!(vals.len() > 0); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!vals.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/pipe.rs:45:22 [INFO] [stdout] | [INFO] [stdout] 45 | pub header_allowed: Box Result<(), Error>>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [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/txhashset/txhashset.rs:2328:2 [INFO] [stdout] | [INFO] [stdout] 2328 | / match kernel.features { [INFO] [stdout] 2329 | | KernelFeatures::NoRecentDuplicate { [INFO] [stdout] 2330 | | relative_height, .. [INFO] [stdout] 2331 | | } => { [INFO] [stdout] ... | [INFO] [stdout] 2351 | | _ => {} [INFO] [stdout] 2352 | | } [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] help: try [INFO] [stdout] | [INFO] [stdout] 2328 ~ if let KernelFeatures::NoRecentDuplicate { [INFO] [stdout] 2329 ~ relative_height, .. [INFO] [stdout] 2330 ~ } = kernel.features { [INFO] [stdout] 2331 ~ let kernel_index = store::nrd_recent_kernel_index(); [INFO] [stdout] 2332 ~ debug!("checking NRD index: {:?}", kernel.excess()); [INFO] [stdout] 2333 ~ if let Some(prev) = kernel_index.peek_pos(batch, kernel.excess())? { [INFO] [stdout] 2334 ~ let diff = pos.height.saturating_sub(prev.height); [INFO] [stdout] 2335 ~ debug!( [INFO] [stdout] 2336 ~ "NRD check: {}, {:?}, {:?}", [INFO] [stdout] 2337 ~ pos.height, prev, relative_height [INFO] [stdout] 2338 ~ ); [INFO] [stdout] 2339 ~ if diff < relative_height.into() { [INFO] [stdout] 2340 ~ return Err(Error::NRDRelativeHeight); [INFO] [stdout] 2341 ~ } [INFO] [stdout] 2342 ~ } [INFO] [stdout] 2343 ~ debug!( [INFO] [stdout] 2344 ~ "pushing entry to NRD index: {:?}: {:?}", [INFO] [stdout] 2345 ~ kernel.excess(), [INFO] [stdout] 2346 ~ pos, [INFO] [stdout] 2347 ~ ); [INFO] [stdout] 2348 ~ kernel_index.push_pos(batch, kernel.excess(), pos)?; [INFO] [stdout] 2349 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `error::Error` [INFO] [stdout] --> src/pipe.rs:111:17 [INFO] [stdout] | [INFO] [stdout] 111 | return Err(Error::Other( [INFO] [stdout] | ________________________________^ [INFO] [stdout] 112 | | "output invalid, could be a replay attack".to_string(), [INFO] [stdout] 113 | | ) [INFO] [stdout] 114 | | .into()); [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] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] help: consider removing `.into()` [INFO] [stdout] | [INFO] [stdout] 111 ~ return Err(Error::Other( [INFO] [stdout] 112 ~ "output invalid, could be a replay attack".to_string(), [INFO] [stdout] 113 ~ )); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Result.and_then(|x| Ok(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/txhashset/utxo_view.rs:90:7 [INFO] [stdout] | [INFO] [stdout] 90 | / self.validate_input(input.commitment(), batch) [INFO] [stdout] 91 | | .and_then(|(out, pos)| Ok((out, pos))) [INFO] [stdout] | |__________________________________________________________________^ help: try: `self.validate_input(input.commitment(), batch).map(|(out, pos)| (out, pos))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] = note: `#[warn(clippy::bind_instead_of_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `error::Error` [INFO] [stdout] --> src/pipe.rs:126:18 [INFO] [stdout] | [INFO] [stdout] 126 | return Err(Error::Other( [INFO] [stdout] | ____________________________________^ [INFO] [stdout] 127 | | "output invalid, could be a replay attack".to_string(), [INFO] [stdout] 128 | | ) [INFO] [stdout] 129 | | .into()); [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 `.into()` [INFO] [stdout] | [INFO] [stdout] 126 ~ return Err(Error::Other( [INFO] [stdout] 127 ~ "output invalid, could be a replay attack".to_string(), [INFO] [stdout] 128 ~ )); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `error::Error` [INFO] [stdout] --> src/pipe.rs:145:14 [INFO] [stdout] | [INFO] [stdout] 145 | return Err(Error::InvalidHash.into()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Error::InvalidHash` [INFO] [stdout] | [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: returning the result of a `let` binding from a block [INFO] [stdout] --> src/pipe.rs:301:2 [INFO] [stdout] | [INFO] [stdout] 294 | / let res = if has_more_work(&last_block.header, &head) { [INFO] [stdout] 295 | | let head = Tip::from_header(&last_block.header); [INFO] [stdout] 296 | | update_head(&head, &mut ctx.batch)?; [INFO] [stdout] 297 | | Ok((Some(head), fork_point)) [INFO] [stdout] 298 | | } else { [INFO] [stdout] 299 | | Ok((None, fork_point)) [INFO] [stdout] 300 | | }; [INFO] [stdout] | |______- unnecessary `let` binding [INFO] [stdout] 301 | res [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] = note: `#[warn(clippy::let_and_return)]` on by default [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 294 ~ [INFO] [stdout] 295 ~ if has_more_work(&last_block.header, &head) { [INFO] [stdout] 296 ~ let head = Tip::from_header(&last_block.header); [INFO] [stdout] 297 ~ update_head(&head, &mut ctx.batch)?; [INFO] [stdout] 298 ~ Ok((Some(head), fork_point)) [INFO] [stdout] 299 ~ } else { [INFO] [stdout] 300 ~ Ok((None, fork_point)) [INFO] [stdout] 301 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the function `prev_header_store` doesn't need a mutable reference [INFO] [stdout] --> src/pipe.rs:227:52 [INFO] [stdout] | [INFO] [stdout] 227 | let prev = prev_header_store(&first_block.header, &mut ctx.batch)?; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stdout] = note: `#[warn(clippy::unnecessary_mut_passed)]` on by default [INFO] [stdout] help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] 227 - let prev = prev_header_store(&first_block.header, &mut ctx.batch)?; [INFO] [stdout] 227 + let prev = prev_header_store(&first_block.header, &ctx.batch)?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the function `update_head` doesn't need a mutable reference [INFO] [stdout] --> src/pipe.rs:296:22 [INFO] [stdout] | [INFO] [stdout] 296 | update_head(&head, &mut ctx.batch)?; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stdout] help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] 296 - update_head(&head, &mut ctx.batch)?; [INFO] [stdout] 296 + update_head(&head, &ctx.batch)?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty doc comment [INFO] [stdout] --> src/pipe.rs:304:1 [INFO] [stdout] | [INFO] [stdout] 304 | /// [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider removing or filling it [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_docs [INFO] [stdout] = note: `#[warn(clippy::empty_docs)]` 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/pipe.rs:352:30 [INFO] [stdout] | [INFO] [stdout] 352 | txhashset::header_extending(&mut ctx.header_pmmr, &mut ctx.batch, |ext, batch| { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `ctx.header_pmmr` [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/pipe.rs:353:32 [INFO] [stdout] | [INFO] [stdout] 353 | rewind_and_apply_header_fork(&last_header, ext, batch, ctx_specific_validation)?; [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `last_header` [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/pipe.rs:364:37 [INFO] [stdout] | [INFO] [stdout] 364 | update_header_head(&header_head, &batch)?; [INFO] [stdout] | ^^^^^^ help: change this to: `batch` [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/pipe.rs:396:50 [INFO] [stdout] | [INFO] [stdout] 396 | let prev_header = ctx.batch.get_previous_header(&header)?; [INFO] [stdout] | ^^^^^^^ help: change this to: `header` [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/pipe.rs:416:30 [INFO] [stdout] | [INFO] [stdout] 416 | txhashset::header_extending(&mut ctx.header_pmmr, &mut ctx.batch, |ext, batch| { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `ctx.header_pmmr` [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/pipe.rs:420:21 [INFO] [stdout] | [INFO] [stdout] 420 | if !has_more_work(&header, &header_head) { [INFO] [stdout] | ^^^^^^^ help: change this to: `header` [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: the function `update_header_head` doesn't need a mutable reference [INFO] [stdout] --> src/pipe.rs:430:49 [INFO] [stdout] | [INFO] [stdout] 430 | update_header_head(&Tip::from_header(header), &mut ctx.batch)?; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stdout] help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] 430 - update_header_head(&Tip::from_header(header), &mut ctx.batch)?; [INFO] [stdout] 430 + update_header_head(&Tip::from_header(header), &ctx.batch)?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/pipe.rs:474:39 [INFO] [stdout] | [INFO] [stdout] 474 | let prev = batch.get_previous_header(&header)?; [INFO] [stdout] | ^^^^^^^ help: change this to: `header` [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: unneeded `return` statement [INFO] [stdout] --> src/pipe.rs:514:3 [INFO] [stdout] | [INFO] [stdout] 514 | / return Err(Error::Block(block::Error::Other( [INFO] [stdout] 515 | | "header hash denied".into(), [INFO] [stdout] 516 | | ))); [INFO] [stdout] | |___________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 514 ~ Err(Error::Block(block::Error::Other( [INFO] [stdout] 515 ~ "header hash denied".into(), [INFO] [stdout] 516 ~ ))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/pipe.rs:518:3 [INFO] [stdout] | [INFO] [stdout] 518 | return Ok(()); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 518 - return Ok(()); [INFO] [stdout] 518 + Ok(()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/pipe.rs:630:12 [INFO] [stdout] | [INFO] [stdout] 630 | .map_err(|e| Error::Block(e))?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `Error::Block` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/pipe.rs:717:21 [INFO] [stdout] | [INFO] [stdout] 717 | .save_header_head(&head) [INFO] [stdout] | ^^^^^ help: change this to: `head` [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/pipe.rs:730:19 [INFO] [stdout] | [INFO] [stdout] 730 | .save_body_head(&head) [INFO] [stdout] | ^^^^^ help: change this to: `head` [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 `match` expression can be replaced with `?` [INFO] [stdout] --> src/pipe.rs:817:12 [INFO] [stdout] | [INFO] [stdout] 817 | let fb = match batch [INFO] [stdout] | __________________^ [INFO] [stdout] 818 | | .get_block(&h) [INFO] [stdout] 819 | | .map_err(|e| Error::StoreErr(e, "getting forked blocks".to_string())) [INFO] [stdout] ... | [INFO] [stdout] 822 | | Err(e) => return Err(e), [INFO] [stdout] 823 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] = note: `#[warn(clippy::question_mark)]` on by default [INFO] [stdout] help: try instead [INFO] [stdout] | [INFO] [stdout] 817 ~ let fb = batch [INFO] [stdout] 818 ~ .get_block(&h) [INFO] [stdout] 819 ~ .map_err(|e| Error::StoreErr(e, "getting forked blocks".to_string()))?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/pipe.rs:818:15 [INFO] [stdout] | [INFO] [stdout] 818 | .get_block(&h) [INFO] [stdout] | ^^ help: change this to: `h` [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: length comparison to zero [INFO] [stdout] --> src/store.rs:398:6 [INFO] [stdout] | [INFO] [stdout] 398 | if filtered_list.len() != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!filtered_list.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `SyncState` [INFO] [stdout] --> src/types.rs:157:2 [INFO] [stdout] | [INFO] [stdout] 157 | / pub fn new() -> SyncState { [INFO] [stdout] 158 | | SyncState { [INFO] [stdout] 159 | | current: RwLock::new(SyncStatus::Initial), [INFO] [stdout] 160 | | } [INFO] [stdout] 161 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 155 + impl Default for SyncState { [INFO] [stdout] 156 + fn default() -> Self { [INFO] [stdout] 157 + Self::new() [INFO] [stdout] 158 + } [INFO] [stdout] 159 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/types.rs:184:3 [INFO] [stdout] | [INFO] [stdout] 184 | / match *self.current.read() { [INFO] [stdout] 185 | | SyncStatus::Initial => false, [INFO] [stdout] 186 | | SyncStatus::HeaderHashSync { [INFO] [stdout] 187 | | completed_blocks: _, [INFO] [stdout] ... | [INFO] [stdout] 194 | | _ => true, [INFO] [stdout] 195 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 184 ~ !matches!(*self.current.read(), SyncStatus::Initial | SyncStatus::HeaderHashSync { [INFO] [stdout] 185 ~ completed_blocks: _, [INFO] [stdout] 186 ~ total_blocks: _, [INFO] [stdout] 187 ~ } | SyncStatus::HeaderSync { [INFO] [stdout] 188 ~ current_height: _, [INFO] [stdout] 189 ~ archive_height: _, [INFO] [stdout] 190 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this pattern creates a reference to a reference [INFO] [stdout] --> src/store.rs:633:16 [INFO] [stdout] | [INFO] [stdout] 633 | if let Some(ref batch) = self.batch { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 633 - if let Some(ref batch) = self.batch { [INFO] [stdout] 633 + if let Some(batch) = self.batch { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this pattern creates a reference to a reference [INFO] [stdout] --> src/store.rs:655:16 [INFO] [stdout] | [INFO] [stdout] 655 | if let Some(ref batch) = self.batch { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 655 - if let Some(ref batch) = self.batch { [INFO] [stdout] 655 + if let Some(batch) = self.batch { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `BitmapAccumulator` [INFO] [stdout] --> src/txhashset/bitmap_accumulator.rs:57:2 [INFO] [stdout] | [INFO] [stdout] 57 | / pub fn new() -> BitmapAccumulator { [INFO] [stdout] 58 | | BitmapAccumulator { [INFO] [stdout] 59 | | backend: VecBackend::new(), [INFO] [stdout] 60 | | } [INFO] [stdout] 61 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 53 + impl Default for BitmapAccumulator { [INFO] [stdout] 54 + fn default() -> Self { [INFO] [stdout] 55 + Self::new() [INFO] [stdout] 56 + } [INFO] [stdout] 57 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/types.rs:413:28 [INFO] [stdout] | [INFO] [stdout] 413 | writer.write_fixed_bytes(&self.last_block_h)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: change this to: `self.last_block_h` [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: the borrowed expression implements the required traits [INFO] [stdout] --> src/types.rs:414:28 [INFO] [stdout] | [INFO] [stdout] 414 | writer.write_fixed_bytes(&self.prev_block_h)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: change this to: `self.prev_block_h` [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: casting to the same type is unnecessary (`u64` -> `u64`) [INFO] [stdout] --> src/txhashset/bitmap_accumulator.rs:204:38 [INFO] [stdout] | [INFO] [stdout] 204 | let chunk = self.backend.get_data(chunk_pos as u64).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `chunk_pos` [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: you should consider adding a `Default` implementation for `BitmapChunk` [INFO] [stdout] --> src/txhashset/bitmap_accumulator.rs:223:2 [INFO] [stdout] | [INFO] [stdout] 223 | / pub fn new() -> BitmapChunk { [INFO] [stdout] 224 | | BitmapChunk(BitVec::from_elem(Self::LEN_BITS, false)) [INFO] [stdout] 225 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 217 + impl Default for BitmapChunk { [INFO] [stdout] 218 + fn default() -> Self { [INFO] [stdout] 219 + Self::new() [INFO] [stdout] 220 + } [INFO] [stdout] 221 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/types.rs:482:3 [INFO] [stdout] | [INFO] [stdout] 482 | / match *self { [INFO] [stdout] 483 | | BlockStatus::Next { .. } => true, [INFO] [stdout] 484 | | _ => false, [INFO] [stdout] 485 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 482 - match *self { [INFO] [stdout] 483 - BlockStatus::Next { .. } => true, [INFO] [stdout] 484 - _ => false, [INFO] [stdout] 485 - } [INFO] [stdout] 482 + matches!(*self, BlockStatus::Next { .. }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/types.rs:490:3 [INFO] [stdout] | [INFO] [stdout] 490 | / match *self { [INFO] [stdout] 491 | | BlockStatus::Reorg { .. } => true, [INFO] [stdout] 492 | | _ => false, [INFO] [stdout] 493 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 490 - match *self { [INFO] [stdout] 491 - BlockStatus::Reorg { .. } => true, [INFO] [stdout] 492 - _ => false, [INFO] [stdout] 493 - } [INFO] [stdout] 490 + matches!(*self, BlockStatus::Reorg { .. }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/chain.rs:2338:44 [INFO] [stdout] | [INFO] [stdout] 2338 | batch.save_spent_index(&genesis.hash(), &vec![])?; [INFO] [stdout] | ^^^^^^^ help: you can use a slice directly: `&[]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] = note: `#[warn(clippy::useless_vec)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/txhashset/bitmap_accumulator.rs:262:3 [INFO] [stdout] | [INFO] [stdout] 262 | return format!("BitmapChunk(Len:{} Data:{})", self.0.len(), hex_str); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 262 - return format!("BitmapChunk(Len:{} Data:{})", self.0.len(), hex_str); [INFO] [stdout] 262 + format!("BitmapChunk(Len:{} Data:{})", self.0.len(), hex_str) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty doc comment [INFO] [stdout] --> src/txhashset/bitmap_accumulator.rs:295:1 [INFO] [stdout] | [INFO] [stdout] 295 | /// [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider removing or filling it [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_docs [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manually reimplementing `div_ceil` [INFO] [stdout] --> src/txhashset/bitmap_accumulator.rs:342:23 [INFO] [stdout] | [INFO] [stdout] 342 | Vec::with_capacity((chunks_left + BitmapBlock::NCHUNKS - 1) / BitmapBlock::NCHUNKS); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `chunks_left.div_ceil(BitmapBlock::NCHUNKS)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_div_ceil [INFO] [stdout] = note: `#[warn(clippy::manual_div_ceil)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/txhashset/bitmap_accumulator.rs:196:23 [INFO] [stdout] | [INFO] [stdout] 196 | pub fn readonly_pmmr(&self) -> ReadonlyPMMR> { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 196 | pub fn readonly_pmmr(&self) -> ReadonlyPMMR<'_, BitmapChunk, VecBackend> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/txhashset/rewindable_kernel_view.rs:72:23 [INFO] [stdout] | [INFO] [stdout] 72 | pub fn readonly_pmmr(&self) -> ReadonlyPMMR> { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 72 | pub fn readonly_pmmr(&self) -> ReadonlyPMMR<'_, TxKernel, PMMRBackend> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/txhashset/txhashset.rs:354:3 [INFO] [stdout] | [INFO] [stdout] 354 | &self, [INFO] [stdout] | ^^^^^ the lifetime is elided here [INFO] [stdout] 355 | header: &BlockHeader, [INFO] [stdout] 356 | ) -> ReadonlyPMMR> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 356 | ) -> ReadonlyPMMR<'_, TxKernel, PMMRBackend> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/txhashset/txhashset.rs:362:3 [INFO] [stdout] | [INFO] [stdout] 362 | &self, [INFO] [stdout] | ^^^^^ the lifetime is elided here [INFO] [stdout] 363 | header: &BlockHeader, [INFO] [stdout] 364 | ) -> ReadonlyPMMR> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 364 | ) -> ReadonlyPMMR<'_, OutputIdentifier, PMMRBackend> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/txhashset/txhashset.rs:370:3 [INFO] [stdout] | [INFO] [stdout] 370 | &self, [INFO] [stdout] | ^^^^^ the lifetime is elided here [INFO] [stdout] 371 | header: &BlockHeader, [INFO] [stdout] 372 | ) -> ReadonlyPMMR> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 372 | ) -> ReadonlyPMMR<'_, RangeProof, PMMRBackend> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/txhashset/txhashset.rs:1173:3 [INFO] [stdout] | [INFO] [stdout] 1173 | &self, [INFO] [stdout] | ^^^^^ the lifetime is elided here [INFO] [stdout] 1174 | ) -> ReadonlyPMMR> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 1174 | ) -> ReadonlyPMMR<'_, OutputIdentifier, PMMRBackend> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/txhashset/txhashset.rs:1179:30 [INFO] [stdout] | [INFO] [stdout] 1179 | pub fn rproof_readonly_pmmr(&self) -> ReadonlyPMMR> { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 1179 | pub fn rproof_readonly_pmmr(&self) -> ReadonlyPMMR<'_, RangeProof, PMMRBackend> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/txhashset/bitmap_accumulator.rs:535:68 [INFO] [stdout] | [INFO] [stdout] 535 | Self::from_u8(reader.read_u8()?).ok_or(ser::Error::CorruptedData(format!( [INFO] [stdout] | __________________________________________________________________________^ [INFO] [stdout] 536 | | "Failed to read the next byte" [INFO] [stdout] 537 | | ))) [INFO] [stdout] | |_________^ help: consider using `.to_string()`: `"Failed to read the next byte".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/txhashset/desegmenter.rs:291:42 [INFO] [stdout] | [INFO] [stdout] 291 | ... txhashset::rewindable_kernel_view(&*txhashset.read(), |view, batch| { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `&txhashset.read()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/txhashset/desegmenter.rs:298:13 [INFO] [stdout] | [INFO] [stdout] 298 | ... if processed % 100000 == 0 || processed == total { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `processed.is_multiple_of(100000)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/txhashset/desegmenter.rs:438:7 [INFO] [stdout] | [INFO] [stdout] 438 | ) -> Result< [INFO] [stdout] | __________^ [INFO] [stdout] 439 | | ( [INFO] [stdout] 440 | | Vec, [INFO] [stdout] 441 | | Vec, [INFO] [stdout] ... | [INFO] [stdout] 444 | | Error, [INFO] [stdout] 445 | | > { [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/txhashset/desegmenter.rs:462:4 [INFO] [stdout] | [INFO] [stdout] 462 | return Ok((bitmap_result, Vec::new(), Vec::new())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 462 - return Ok((bitmap_result, Vec::new(), Vec::new())); [INFO] [stdout] 462 + Ok((bitmap_result, Vec::new(), Vec::new())) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/txhashset/desegmenter.rs:508:4 [INFO] [stdout] | [INFO] [stdout] 508 | return Ok((res_req, res_dup_req, waiting_req)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 508 - return Ok((res_req, res_dup_req, waiting_req)); [INFO] [stdout] 508 + Ok((res_req, res_dup_req, waiting_req)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manually reimplementing `div_ceil` [INFO] [stdout] --> src/txhashset/desegmenter.rs:610:31 [INFO] [stdout] | [INFO] [stdout] 610 | let bitmap_mmr_leaf_count = (pmmr::n_leaves(archive_header.output_mmr_size) + 1023) / 1024; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `pmmr::n_leaves(archive_header.output_mmr_size).div_ceil(1024)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_div_ceil [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `u64` which implements the `Copy` trait [INFO] [stdout] --> src/txhashset/desegmenter.rs:616:29 [INFO] [stdout] | [INFO] [stdout] 616 | let bitmap_mmr_size = 1 + pmmr::peaks(pmmr::insertion_to_pmmr_index(bitmap_mmr_leaf_count)) [INFO] [stdout] | ___________________________________^ [INFO] [stdout] 617 | | .last() [INFO] [stdout] 618 | | .unwrap_or( [INFO] [stdout] 619 | | &(pmmr::peaks(pmmr::insertion_to_pmmr_index(bitmap_mmr_leaf_count - 1)) [INFO] [stdout] ... | [INFO] [stdout] 623 | | .clone(); [INFO] [stdout] | |____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] help: try dereferencing it [INFO] [stdout] | [INFO] [stdout] 616 ~ let bitmap_mmr_size = 1 + *pmmr::peaks(pmmr::insertion_to_pmmr_index(bitmap_mmr_leaf_count)) [INFO] [stdout] 617 ~ .last() [INFO] [stdout] 618 ~ .unwrap_or( [INFO] [stdout] 619 ~ &(pmmr::peaks(pmmr::insertion_to_pmmr_index(bitmap_mmr_leaf_count - 1)) [INFO] [stdout] 620 ~ .last() [INFO] [stdout] 621 ~ .unwrap()), [INFO] [stdout] 622 ~ ); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/txhashset/desegmenter.rs:619:5 [INFO] [stdout] | [INFO] [stdout] 619 | / &(pmmr::peaks(pmmr::insertion_to_pmmr_index(bitmap_mmr_leaf_count - 1)) [INFO] [stdout] 620 | | .last() [INFO] [stdout] 621 | | .unwrap()), [INFO] [stdout] | |______________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 619 ~ (pmmr::peaks(pmmr::insertion_to_pmmr_index(bitmap_mmr_leaf_count - 1)) [INFO] [stdout] 620 ~ .last() [INFO] [stdout] 621 ~ .unwrap()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/txhashset/desegmenter.rs:642:52 [INFO] [stdout] | [INFO] [stdout] 642 | if !self.bitmap_segment_cache.read().has_segment(&segment.id()) { [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `segment.id()` [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: unneeded `return` statement [INFO] [stdout] --> src/txhashset/desegmenter.rs:731:3 [INFO] [stdout] | [INFO] [stdout] 731 | return Err(Error::BitmapNotReady); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 731 - return Err(Error::BitmapNotReady); [INFO] [stdout] 731 + Err(Error::BitmapNotReady) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/txhashset/desegmenter.rs:784:3 [INFO] [stdout] | [INFO] [stdout] 784 | return Err(Error::BitmapNotReady); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 784 - return Err(Error::BitmapNotReady); [INFO] [stdout] 784 + Err(Error::BitmapNotReady) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/txhashset/desegmenter.rs:835:3 [INFO] [stdout] | [INFO] [stdout] 835 | return Err(Error::BitmapNotReady); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 835 - return Err(Error::BitmapNotReady); [INFO] [stdout] 835 + Err(Error::BitmapNotReady) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/txhashset/desegmenter.rs:845:17 [INFO] [stdout] | [INFO] [stdout] 845 | debug_assert!(leaves_num % 2 == 0); // Ciblings are expected to be here [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: replace with: `leaves_num.is_multiple_of(2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/txhashset/desegmenter.rs:878:32 [INFO] [stdout] | [INFO] [stdout] 878 | let can_increase_capacity = current_leave % (cur_capacity * 2) == 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `current_leave.is_multiple_of(cur_capacity * 2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/txhashset/desegmenter.rs:908:18 [INFO] [stdout] | [INFO] [stdout] 908 | debug_assert!(current_leave % cur_capacity == 0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `current_leave.is_multiple_of(cur_capacity)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/txhashset/desegmenter.rs:919:17 [INFO] [stdout] | [INFO] [stdout] 919 | debug_assert!(current_leave % cur_capacity == 0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `current_leave.is_multiple_of(cur_capacity)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manually reimplementing `div_ceil` [INFO] [stdout] --> src/txhashset/desegmenter.rs:1012:24 [INFO] [stdout] | [INFO] [stdout] 1012 | let segments_num = (pmmr::n_leaves(target_mmr_size) + leaves_num - 1) / leaves_num; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `pmmr::n_leaves(target_mmr_size).div_ceil(leaves_num)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_div_ceil [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/txhashset/headers_desegmenter.rs:106:3 [INFO] [stdout] | [INFO] [stdout] 106 | return &self.headers_root_hash; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 106 - return &self.headers_root_hash; [INFO] [stdout] 106 + &self.headers_root_hash [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/txhashset/headers_desegmenter.rs:197:19 [INFO] [stdout] | [INFO] [stdout] 197 | ... .map_err(&Error::TxHashSetErr)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `Error::TxHashSetErr` [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: this `if let` can be collapsed into the outer `if let` [INFO] [stdout] --> src/txhashset/headers_desegmenter.rs:264:6 [INFO] [stdout] | [INFO] [stdout] 264 | / if let Some(hash) = hash { [INFO] [stdout] 265 | | if header.hash() != *hash { [INFO] [stdout] ... | [INFO] [stdout] 272 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] help: the outer pattern can be modified to include the inner pattern [INFO] [stdout] --> src/txhashset/headers_desegmenter.rs:257:17 [INFO] [stdout] | [INFO] [stdout] 257 | if let Some(hash) = header_desegmenter [INFO] [stdout] | ^^^^ replace this binding [INFO] [stdout] ... [INFO] [stdout] 264 | if let Some(hash) = hash { [INFO] [stdout] | ^^^^^^^^^^ with this pattern [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/txhashset/headers_desegmenter.rs:301:7 [INFO] [stdout] | [INFO] [stdout] 301 | ) -> Result<(Vec<(Hash, u64)>, Vec<(Hash, u64)>, Vec<(Hash, u64)>), Error> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Hash` which implements the `Copy` trait [INFO] [stdout] --> src/txhashset/headers_desegmenter.rs:351:22 [INFO] [stdout] | [INFO] [stdout] 351 | let request = (h.clone(), hash_idx * HEADERS_PER_BATCH as u64); [INFO] [stdout] | ^^^^^^^^^ help: try dereferencing it: `*h` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `(Hash, u64)` which implements the `Copy` trait [INFO] [stdout] --> src/txhashset/headers_desegmenter.rs:376:20 [INFO] [stdout] | [INFO] [stdout] 376 | retry_vec.push(req.clone()); [INFO] [stdout] | ^^^^^^^^^^^ help: try dereferencing it: `*req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if let` can be collapsed into the outer `if let` [INFO] [stdout] --> src/txhashset/headers_desegmenter.rs:414:4 [INFO] [stdout] | [INFO] [stdout] 414 | / if let Some(next_hash) = next_hash { [INFO] [stdout] 415 | | let last_header = bhs.last().unwrap(); [INFO] [stdout] 416 | | if last_header.hash() != *next_hash { [INFO] [stdout] 417 | | return Err(( [INFO] [stdout] ... | [INFO] [stdout] 424 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] help: the outer pattern can be modified to include the inner pattern [INFO] [stdout] --> src/txhashset/headers_desegmenter.rs:407:15 [INFO] [stdout] | [INFO] [stdout] 407 | if let Some(next_hash) = headers [INFO] [stdout] | ^^^^^^^^^ replace this binding [INFO] [stdout] ... [INFO] [stdout] 414 | if let Some(next_hash) = next_hash { [INFO] [stdout] | ^^^^^^^^^^^^^^^ with this pattern [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/txhashset/request_lookup.rs:23:6 [INFO] [stdout] | [INFO] [stdout] 23 | impl<'a, K, V> RequestLookup for &'a HashMap [INFO] [stdout] | ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] = note: `#[warn(clippy::needless_lifetimes)]` on by default [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 23 - impl<'a, K, V> RequestLookup for &'a HashMap [INFO] [stdout] 23 + impl RequestLookup for &HashMap [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/txhashset/rewindable_kernel_view.rs:44:13 [INFO] [stdout] | [INFO] [stdout] 44 | .map_err(|e| Error::TxHashSetErr(e))?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `Error::TxHashSetErr` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/txhashset/rewindable_kernel_view.rs:61:13 [INFO] [stdout] | [INFO] [stdout] 61 | .map_err(|e| Error::InvalidRoot(e))?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `Error::InvalidRoot` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/txhashset/segmenter.rs:70:34 [INFO] [stdout] | [INFO] [stdout] 70 | let root = pmmr.root().map_err(&Error::TxHashSetErr)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `Error::TxHashSetErr` [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: the borrowed expression implements the required traits [INFO] [stdout] --> src/txhashset/segmenter.rs:77:34 [INFO] [stdout] | [INFO] [stdout] 77 | let root = pmmr.root().map_err(&Error::TxHashSetErr)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `Error::TxHashSetErr` [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: unneeded `return` statement [INFO] [stdout] --> src/txhashset/segments_cache.rs:57:15 [INFO] [stdout] | [INFO] [stdout] 57 | Ok(idx) => return self.required_segments[idx] == *seg_id, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 57 - Ok(idx) => return self.required_segments[idx] == *seg_id, [INFO] [stdout] 57 + Ok(idx) => self.required_segments[idx] == *seg_id, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/txhashset/segments_cache.rs:58:14 [INFO] [stdout] | [INFO] [stdout] 58 | Err(_) => return false, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 58 - Err(_) => return false, [INFO] [stdout] 58 + Err(_) => false, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `u64` which implements the `Copy` trait [INFO] [stdout] --> src/txhashset/segments_cache.rs:130:60 [INFO] [stdout] | [INFO] [stdout] 130 | if !requested.contains_request(&(self.seg_type.clone(), segm.leaf_offset().clone())) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `segm.leaf_offset()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `SegmentIdentifier` which implements the `Copy` trait [INFO] [stdout] --> src/txhashset/segments_cache.rs:131:17 [INFO] [stdout] | [INFO] [stdout] 131 | result.push(segm.clone()); [INFO] [stdout] | ^^^^^^^^^^^^ help: try dereferencing it: `*segm` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `SegmentIdentifier` which implements the `Copy` trait [INFO] [stdout] --> src/txhashset/segments_cache.rs:136:32 [INFO] [stdout] | [INFO] [stdout] 136 | waiting_indexes.push((idx, segm.clone())); [INFO] [stdout] | ^^^^^^^^^^^^ help: try dereferencing it: `*segm` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `SegmentIdentifier` which implements the `Copy` trait [INFO] [stdout] --> src/txhashset/segments_cache.rs:147:20 [INFO] [stdout] | [INFO] [stdout] 147 | retry_vec.push(req.clone()); [INFO] [stdout] | ^^^^^^^^^^^ help: try dereferencing it: `*req` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/txhashset/segments_cache.rs:184:3 [INFO] [stdout] | [INFO] [stdout] 184 | / if !pruned { [INFO] [stdout] 185 | | if !segment.is_no_prune() { [INFO] [stdout] 186 | | return Err(Error::InvalidPruneState); [INFO] [stdout] 187 | | } [INFO] [stdout] 188 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 184 ~ if !pruned [INFO] [stdout] 185 ~ && !segment.is_no_prune() { [INFO] [stdout] 186 | return Err(Error::InvalidPruneState); [INFO] [stdout] 187 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/txhashset.rs:27:1 [INFO] [stdout] | [INFO] [stdout] 27 | mod txhashset; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] = note: `#[warn(clippy::module_inception)]` 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/txhashset/txhashset.rs:90:13 [INFO] [stdout] | [INFO] [stdout] 90 | a_val.cmp(&b_val) [INFO] [stdout] | ^^^^^^ help: change this to: `b_val` [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: non-canonical implementation of `partial_cmp` on an `Ord` type [INFO] [stdout] --> src/txhashset/txhashset.rs:94:1 [INFO] [stdout] | [INFO] [stdout] 94 | / impl PartialOrd for OrderedHashLeafNode { [INFO] [stdout] 95 | | fn partial_cmp(&self, other: &Self) -> Option { [INFO] [stdout] 96 | | let a_val = match self { [INFO] [stdout] 97 | | OrderedHashLeafNode::Hash(_, pos0) => pos0, [INFO] [stdout] ... | [INFO] [stdout] 106 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#non_canonical_partial_ord_impl [INFO] [stdout] = note: `#[warn(clippy::non_canonical_partial_ord_impl)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 95 - fn partial_cmp(&self, other: &Self) -> Option { [INFO] [stdout] 96 - let a_val = match self { [INFO] [stdout] 97 - OrderedHashLeafNode::Hash(_, pos0) => pos0, [INFO] [stdout] 98 - OrderedHashLeafNode::Leaf(_, pos0) => pos0, [INFO] [stdout] 99 - }; [INFO] [stdout] 100 - let b_val = match other { [INFO] [stdout] 101 - OrderedHashLeafNode::Hash(_, pos0) => pos0, [INFO] [stdout] 102 - OrderedHashLeafNode::Leaf(_, pos0) => pos0, [INFO] [stdout] 103 - }; [INFO] [stdout] 104 - Some(a_val.cmp(b_val)) [INFO] [stdout] 105 - } [INFO] [stdout] 95 + fn partial_cmp(&self, other: &Self) -> Option { Some(self.cmp(other)) } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/txhashset/txhashset.rs:378:41 [INFO] [stdout] | [INFO] [stdout] 378 | Ok(self.commit_index.get_block_header(&hash)?) [INFO] [stdout] | ^^^^^ help: change this to: `hash` [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: redundant closure [INFO] [stdout] --> src/txhashset/txhashset.rs:456:44 [INFO] [stdout] | [INFO] [stdout] 456 | output_root: output_pmmr.root().map_err(|e| Error::InvalidRoot(e))?, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `Error::InvalidRoot` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/txhashset/txhashset.rs:458:44 [INFO] [stdout] | [INFO] [stdout] 458 | rproof_root: rproof_pmmr.root().map_err(|e| Error::InvalidRoot(e))?, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `Error::InvalidRoot` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/txhashset/txhashset.rs:460:44 [INFO] [stdout] | [INFO] [stdout] 460 | kernel_root: kernel_pmmr.root().map_err(|e| Error::InvalidRoot(e))?, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `Error::InvalidRoot` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/txhashset/txhashset.rs:467:39 [INFO] [stdout] | [INFO] [stdout] 467 | Ok(self.commit_index.get_output_pos(&commit)?) [INFO] [stdout] | ^^^^^^^ help: change this to: `commit` [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/txhashset/txhashset.rs:488:43 [INFO] [stdout] | [INFO] [stdout] 488 | let rewind_rm_pos = input_pos_to_rewind(&horizon_header, &head_header, batch)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `horizon_header` [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/txhashset/txhashset.rs:538:48 [INFO] [stdout] | [INFO] [stdout] 538 | let prev_header = batch.get_previous_header(&from_header)?; [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `from_header` [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: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/txhashset/txhashset.rs:559:6 [INFO] [stdout] | [INFO] [stdout] 559 | / match kernel.features { [INFO] [stdout] 560 | | KernelFeatures::NoRecentDuplicate { .. } => { [INFO] [stdout] 561 | | while current_pos > current_header.kernel_mmr_size { [INFO] [stdout] 562 | | let hash = header_pmmr [INFO] [stdout] ... | [INFO] [stdout] 573 | | _ => {} [INFO] [stdout] 574 | | } [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] 559 ~ if let KernelFeatures::NoRecentDuplicate { .. } = kernel.features { [INFO] [stdout] 560 ~ while current_pos > current_header.kernel_mmr_size { [INFO] [stdout] 561 ~ let hash = header_pmmr [INFO] [stdout] 562 ~ .get_header_hash_by_height(current_header.height + 1)?; [INFO] [stdout] 563 ~ current_header = batch.get_block_header(&hash)?; [INFO] [stdout] 564 ~ } [INFO] [stdout] 565 ~ let new_pos = CommitPos { [INFO] [stdout] 566 ~ pos: current_pos, [INFO] [stdout] 567 ~ height: current_header.height, [INFO] [stdout] 568 ~ }; [INFO] [stdout] 569 ~ apply_kernel_rules(&kernel, new_pos, batch)?; [INFO] [stdout] 570 ~ count += 1; [INFO] [stdout] 571 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/txhashset/txhashset.rs:870:34 [INFO] [stdout] | [INFO] [stdout] 870 | pub fn header_extending_readonly<'a, F, T>( [INFO] [stdout] | ^^ [INFO] [stdout] 871 | handle: &'a mut PMMRHandle, [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 870 ~ pub fn header_extending_readonly( [INFO] [stdout] 871 ~ handle: &mut PMMRHandle, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Tip` which implements the `Copy` trait [INFO] [stdout] --> src/txhashset/txhashset.rs:982:3 [INFO] [stdout] | [INFO] [stdout] 982 | self.head.clone() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.head` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/txhashset/txhashset.rs:1073:3 [INFO] [stdout] | [INFO] [stdout] 1073 | Ok(self.pmmr.root().map_err(|e| Error::InvalidRoot(e))?) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 1073 - Ok(self.pmmr.root().map_err(|e| Error::InvalidRoot(e))?) [INFO] [stdout] 1073 + self.pmmr.root().map_err(|e| Error::InvalidRoot(e)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/txhashset/txhashset.rs:1073:31 [INFO] [stdout] | [INFO] [stdout] 1073 | Ok(self.pmmr.root().map_err(|e| Error::InvalidRoot(e))?) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `Error::InvalidRoot` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Tip` which implements the `Copy` trait [INFO] [stdout] --> src/txhashset/txhashset.rs:1158:3 [INFO] [stdout] | [INFO] [stdout] 1158 | self.head.clone() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.head` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Hash` which implements the `Copy` trait [INFO] [stdout] --> src/txhashset/txhashset.rs:1229:11 [INFO] [stdout] | [INFO] [stdout] 1229 | hash: b.hash().clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `b.hash()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `u64` which implements the `Copy` trait [INFO] [stdout] --> src/txhashset/txhashset.rs:1230:13 [INFO] [stdout] | [INFO] [stdout] 1230 | height: b.header.height.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `b.header.height` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/txhashset/txhashset.rs:1351:19 [INFO] [stdout] | [INFO] [stdout] 1351 | ... .map_err(&Error::TxHashSetErr)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `Error::TxHashSetErr` [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: the borrowed expression implements the required traits [INFO] [stdout] --> src/txhashset/txhashset.rs:1355:18 [INFO] [stdout] | [INFO] [stdout] 1355 | ... .map_err(&Error::TxHashSetErr)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `Error::TxHashSetErr` [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: the borrowed expression implements the required traits [INFO] [stdout] --> src/txhashset/txhashset.rs:1362:18 [INFO] [stdout] | [INFO] [stdout] 1362 | ... .map_err(&Error::TxHashSetErr)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `Error::TxHashSetErr` [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: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/txhashset/txhashset.rs:1375:7 [INFO] [stdout] | [INFO] [stdout] 1375 | / if !bitmap.contains(i as u32) { [INFO] [stdout] 1376 | | let res = self.output_pmmr.prune(pos0); [INFO] [stdout] 1377 | | debug_assert!(res.is_ok()); [INFO] [stdout] 1378 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 1374 ~ Some(i) [INFO] [stdout] 1375 ~ if !bitmap.contains(i as u32) => { [INFO] [stdout] 1376 | let res = self.output_pmmr.prune(pos0); [INFO] [stdout] 1377 | debug_assert!(res.is_ok()); [INFO] [stdout] 1378 ~ } [INFO] [stdout] | [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/txhashset/txhashset.rs:1373:5 [INFO] [stdout] | [INFO] [stdout] 1373 | / match pmmr_index { [INFO] [stdout] 1374 | | Some(i) => { [INFO] [stdout] 1375 | | if !bitmap.contains(i as u32) { [INFO] [stdout] 1376 | | let res = self.output_pmmr.prune(pos0); [INFO] [stdout] ... | [INFO] [stdout] 1380 | | None => {} [INFO] [stdout] 1381 | | }; [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] help: try [INFO] [stdout] | [INFO] [stdout] 1373 ~ if let Some(i) = pmmr_index { [INFO] [stdout] 1374 ~ if !bitmap.contains(i as u32) { [INFO] [stdout] 1375 ~ let res = self.output_pmmr.prune(pos0); [INFO] [stdout] 1376 ~ debug_assert!(res.is_ok()); [INFO] [stdout] 1377 ~ } [INFO] [stdout] 1378 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/txhashset/txhashset.rs:1411:19 [INFO] [stdout] | [INFO] [stdout] 1411 | ... .map_err(&Error::TxHashSetErr)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `Error::TxHashSetErr` [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: the borrowed expression implements the required traits [INFO] [stdout] --> src/txhashset/txhashset.rs:1415:18 [INFO] [stdout] | [INFO] [stdout] 1415 | ... .map_err(&Error::TxHashSetErr)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `Error::TxHashSetErr` [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: the borrowed expression implements the required traits [INFO] [stdout] --> src/txhashset/txhashset.rs:1422:18 [INFO] [stdout] | [INFO] [stdout] 1422 | ... .map_err(&Error::TxHashSetErr)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `Error::TxHashSetErr` [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: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/txhashset/txhashset.rs:1436:7 [INFO] [stdout] | [INFO] [stdout] 1436 | / if !bitmap.contains(i as u32) { [INFO] [stdout] 1437 | | let res = self.rproof_pmmr.prune(pos0); [INFO] [stdout] 1438 | | debug_assert!(res.is_ok()); [INFO] [stdout] 1439 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 1435 ~ Some(i) [INFO] [stdout] 1436 ~ if !bitmap.contains(i as u32) => { [INFO] [stdout] 1437 | let res = self.rproof_pmmr.prune(pos0); [INFO] [stdout] 1438 | debug_assert!(res.is_ok()); [INFO] [stdout] 1439 ~ } [INFO] [stdout] | [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/txhashset/txhashset.rs:1434:5 [INFO] [stdout] | [INFO] [stdout] 1434 | / match pmmr_index { [INFO] [stdout] 1435 | | Some(i) => { [INFO] [stdout] 1436 | | if !bitmap.contains(i as u32) { [INFO] [stdout] 1437 | | let res = self.rproof_pmmr.prune(pos0); [INFO] [stdout] ... | [INFO] [stdout] 1441 | | None => {} [INFO] [stdout] 1442 | | }; [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] help: try [INFO] [stdout] | [INFO] [stdout] 1434 ~ if let Some(i) = pmmr_index { [INFO] [stdout] 1435 ~ if !bitmap.contains(i as u32) { [INFO] [stdout] 1436 ~ let res = self.rproof_pmmr.prune(pos0); [INFO] [stdout] 1437 ~ debug_assert!(res.is_ok()); [INFO] [stdout] 1438 ~ } [INFO] [stdout] 1439 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/txhashset/txhashset.rs:1483:18 [INFO] [stdout] | [INFO] [stdout] 1483 | ... .map_err(&Error::TxHashSetErr)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `Error::TxHashSetErr` [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: the borrowed expression implements the required traits [INFO] [stdout] --> src/txhashset/txhashset.rs:1543:27 [INFO] [stdout] | [INFO] [stdout] 1543 | bitmap_accumulator.init(&mut pmmr.leaf_idx_iter(0), nbits)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `pmmr.leaf_idx_iter(0)` [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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/txhashset/txhashset.rs:1600:47 [INFO] [stdout] | [INFO] [stdout] 1600 | let prev_header = batch.get_previous_header(&header)?; [INFO] [stdout] | ^^^^^^^ help: change this to: `header` [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: redundant closure [INFO] [stdout] --> src/txhashset/txhashset.rs:1702:49 [INFO] [stdout] | [INFO] [stdout] 1702 | output_root: self.output_pmmr.root().map_err(|e| Error::InvalidRoot(e))?, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `Error::InvalidRoot` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/txhashset/txhashset.rs:1704:49 [INFO] [stdout] | [INFO] [stdout] 1704 | rproof_root: self.rproof_pmmr.root().map_err(|e| Error::InvalidRoot(e))?, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `Error::InvalidRoot` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/txhashset/txhashset.rs:1706:49 [INFO] [stdout] | [INFO] [stdout] 1706 | kernel_root: self.kernel_pmmr.root().map_err(|e| Error::InvalidRoot(e))?, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `Error::InvalidRoot` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `error::Error` [INFO] [stdout] --> src/txhashset/txhashset.rs:1818:17 [INFO] [stdout] | [INFO] [stdout] 1818 | return Err(Error::Stopped.into()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Error::Stopped` [INFO] [stdout] | [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: `error::Error` [INFO] [stdout] --> src/txhashset/txhashset.rs:1826:17 [INFO] [stdout] | [INFO] [stdout] 1826 | return Err(Error::Stopped.into()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Error::Stopped` [INFO] [stdout] | [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: returning the result of a `let` binding from a block [INFO] [stdout] --> src/txhashset/txhashset.rs:1959:3 [INFO] [stdout] | [INFO] [stdout] 1957 | / let verify_result = [INFO] [stdout] 1958 | | verify_result.map_err(|_| Error::Other("crossbeam runtime error".to_string()))?; [INFO] [stdout] | |____________________________________________________________________________________________- unnecessary `let` binding [INFO] [stdout] 1959 | verify_result [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 1957 ~ [INFO] [stdout] 1958 ~ verify_result.map_err(|_| Error::Other("crossbeam runtime error".to_string()))? [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/txhashset/txhashset.rs:1891:19 [INFO] [stdout] | [INFO] [stdout] 1891 | let kernel = self [INFO] [stdout] | __________________________________^ [INFO] [stdout] 1892 | | .kernel_pmmr [INFO] [stdout] 1893 | | .get_data(n) [INFO] [stdout] 1894 | | .ok_or_else(|| Error::TxKernelNotFound)?; [INFO] [stdout] | |_______________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] = note: `#[warn(clippy::unnecessary_lazy_evaluations)]` on by default [INFO] [stdout] help: use `ok_or` instead [INFO] [stdout] | [INFO] [stdout] 1894 - .ok_or_else(|| Error::TxKernelNotFound)?; [INFO] [stdout] 1894 + .ok_or(Error::TxKernelNotFound)?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/txhashset/txhashset.rs:1936:10 [INFO] [stdout] | [INFO] [stdout] 1936 | while running_threads.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!running_threads.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/txhashset/txhashset.rs:2110:3 [INFO] [stdout] | [INFO] [stdout] 2108 | / let verify_result = [INFO] [stdout] 2109 | | verify_result.map_err(|_| Error::Other("crossbeam runtime error".to_string()))?; [INFO] [stdout] | |____________________________________________________________________________________________- unnecessary `let` binding [INFO] [stdout] 2110 | verify_result [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 2108 ~ [INFO] [stdout] 2109 ~ verify_result.map_err(|_| Error::Other("crossbeam runtime error".to_string()))? [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `u64` which implements the `Copy` trait [INFO] [stdout] --> src/txhashset/txhashset.rs:2061:24 [INFO] [stdout] | [INFO] [stdout] 2061 | let proof_count = proof_count.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `proof_count` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/txhashset/txhashset.rs:2089:10 [INFO] [stdout] | [INFO] [stdout] 2089 | while running_threads.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!running_threads.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `format!` args [INFO] [stdout] --> src/txhashset/txhashset.rs:2152:71 [INFO] [stdout] | [INFO] [stdout] 2152 | let txhashset_zip = format!("{}_{}.zip", TXHASHSET_ZIP, header.hash().to_string()); [INFO] [stdout] | ^^^^^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] = note: `#[warn(clippy::to_string_in_format_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `format!` args [INFO] [stdout] --> src/txhashset/txhashset.rs:2187:17 [INFO] [stdout] | [INFO] [stdout] 2187 | header.hash().to_string() [INFO] [stdout] | ^^^^^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&PathBuf` instead of `&Path` involves a new object where a slice will do [INFO] [stdout] --> src/txhashset/txhashset.rs:2290:41 [INFO] [stdout] | [INFO] [stdout] 2290 | pub fn clean_txhashset_folder(root_dir: &PathBuf) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 2290 ~ pub fn clean_txhashset_folder(root_dir: &Path) { [INFO] [stdout] 2291 ~ let txhashset_path = root_dir.to_path_buf().join(TXHASHSET_SUBDIR); [INFO] [stdout] | [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/txhashset/txhashset.rs:2328:2 [INFO] [stdout] | [INFO] [stdout] 2328 | / match kernel.features { [INFO] [stdout] 2329 | | KernelFeatures::NoRecentDuplicate { [INFO] [stdout] 2330 | | relative_height, .. [INFO] [stdout] 2331 | | } => { [INFO] [stdout] ... | [INFO] [stdout] 2351 | | _ => {} [INFO] [stdout] 2352 | | } [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] help: try [INFO] [stdout] | [INFO] [stdout] 2328 ~ if let KernelFeatures::NoRecentDuplicate { [INFO] [stdout] 2329 ~ relative_height, .. [INFO] [stdout] 2330 ~ } = kernel.features { [INFO] [stdout] 2331 ~ let kernel_index = store::nrd_recent_kernel_index(); [INFO] [stdout] 2332 ~ debug!("checking NRD index: {:?}", kernel.excess()); [INFO] [stdout] 2333 ~ if let Some(prev) = kernel_index.peek_pos(batch, kernel.excess())? { [INFO] [stdout] 2334 ~ let diff = pos.height.saturating_sub(prev.height); [INFO] [stdout] 2335 ~ debug!( [INFO] [stdout] 2336 ~ "NRD check: {}, {:?}, {:?}", [INFO] [stdout] 2337 ~ pos.height, prev, relative_height [INFO] [stdout] 2338 ~ ); [INFO] [stdout] 2339 ~ if diff < relative_height.into() { [INFO] [stdout] 2340 ~ return Err(Error::NRDRelativeHeight); [INFO] [stdout] 2341 ~ } [INFO] [stdout] 2342 ~ } [INFO] [stdout] 2343 ~ debug!( [INFO] [stdout] 2344 ~ "pushing entry to NRD index: {:?}: {:?}", [INFO] [stdout] 2345 ~ kernel.excess(), [INFO] [stdout] 2346 ~ pos, [INFO] [stdout] 2347 ~ ); [INFO] [stdout] 2348 ~ kernel_index.push_pos(batch, kernel.excess(), pos)?; [INFO] [stdout] 2349 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `Result.and_then(|x| Ok(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/txhashset/utxo_view.rs:90:7 [INFO] [stdout] | [INFO] [stdout] 90 | / self.validate_input(input.commitment(), batch) [INFO] [stdout] 91 | | .and_then(|(out, pos)| Ok((out, pos))) [INFO] [stdout] | |__________________________________________________________________^ help: try: `self.validate_input(input.commitment(), batch).map(|(out, pos)| (out, pos))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map [INFO] [stdout] = note: `#[warn(clippy::bind_instead_of_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `SyncState` [INFO] [stdout] --> src/types.rs:157:2 [INFO] [stdout] | [INFO] [stdout] 157 | / pub fn new() -> SyncState { [INFO] [stdout] 158 | | SyncState { [INFO] [stdout] 159 | | current: RwLock::new(SyncStatus::Initial), [INFO] [stdout] 160 | | } [INFO] [stdout] 161 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 155 + impl Default for SyncState { [INFO] [stdout] 156 + fn default() -> Self { [INFO] [stdout] 157 + Self::new() [INFO] [stdout] 158 + } [INFO] [stdout] 159 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/types.rs:184:3 [INFO] [stdout] | [INFO] [stdout] 184 | / match *self.current.read() { [INFO] [stdout] 185 | | SyncStatus::Initial => false, [INFO] [stdout] 186 | | SyncStatus::HeaderHashSync { [INFO] [stdout] 187 | | completed_blocks: _, [INFO] [stdout] ... | [INFO] [stdout] 194 | | _ => true, [INFO] [stdout] 195 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 184 ~ !matches!(*self.current.read(), SyncStatus::Initial | SyncStatus::HeaderHashSync { [INFO] [stdout] 185 ~ completed_blocks: _, [INFO] [stdout] 186 ~ total_blocks: _, [INFO] [stdout] 187 ~ } | SyncStatus::HeaderSync { [INFO] [stdout] 188 ~ current_height: _, [INFO] [stdout] 189 ~ archive_height: _, [INFO] [stdout] 190 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/types.rs:413:28 [INFO] [stdout] | [INFO] [stdout] 413 | writer.write_fixed_bytes(&self.last_block_h)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: change this to: `self.last_block_h` [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: the borrowed expression implements the required traits [INFO] [stdout] --> src/types.rs:414:28 [INFO] [stdout] | [INFO] [stdout] 414 | writer.write_fixed_bytes(&self.prev_block_h)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: change this to: `self.prev_block_h` [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: match expression looks like `matches!` macro [INFO] [stdout] --> src/types.rs:482:3 [INFO] [stdout] | [INFO] [stdout] 482 | / match *self { [INFO] [stdout] 483 | | BlockStatus::Next { .. } => true, [INFO] [stdout] 484 | | _ => false, [INFO] [stdout] 485 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 482 - match *self { [INFO] [stdout] 483 - BlockStatus::Next { .. } => true, [INFO] [stdout] 484 - _ => false, [INFO] [stdout] 485 - } [INFO] [stdout] 482 + matches!(*self, BlockStatus::Next { .. }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/types.rs:490:3 [INFO] [stdout] | [INFO] [stdout] 490 | / match *self { [INFO] [stdout] 491 | | BlockStatus::Reorg { .. } => true, [INFO] [stdout] 492 | | _ => false, [INFO] [stdout] 493 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 490 - match *self { [INFO] [stdout] 491 - BlockStatus::Reorg { .. } => true, [INFO] [stdout] 492 - _ => false, [INFO] [stdout] 493 - } [INFO] [stdout] 490 + matches!(*self, BlockStatus::Reorg { .. }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/chain.rs:2338:44 [INFO] [stdout] | [INFO] [stdout] 2338 | batch.save_spent_index(&genesis.hash(), &vec![])?; [INFO] [stdout] | ^^^^^^^ help: you can use a slice directly: `&[]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] = note: `#[warn(clippy::useless_vec)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/txhashset/bitmap_accumulator.rs:196:23 [INFO] [stdout] | [INFO] [stdout] 196 | pub fn readonly_pmmr(&self) -> ReadonlyPMMR> { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 196 | pub fn readonly_pmmr(&self) -> ReadonlyPMMR<'_, BitmapChunk, VecBackend> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/txhashset/rewindable_kernel_view.rs:72:23 [INFO] [stdout] | [INFO] [stdout] 72 | pub fn readonly_pmmr(&self) -> ReadonlyPMMR> { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 72 | pub fn readonly_pmmr(&self) -> ReadonlyPMMR<'_, TxKernel, PMMRBackend> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/txhashset/txhashset.rs:354:3 [INFO] [stdout] | [INFO] [stdout] 354 | &self, [INFO] [stdout] | ^^^^^ the lifetime is elided here [INFO] [stdout] 355 | header: &BlockHeader, [INFO] [stdout] 356 | ) -> ReadonlyPMMR> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 356 | ) -> ReadonlyPMMR<'_, TxKernel, PMMRBackend> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/txhashset/txhashset.rs:362:3 [INFO] [stdout] | [INFO] [stdout] 362 | &self, [INFO] [stdout] | ^^^^^ the lifetime is elided here [INFO] [stdout] 363 | header: &BlockHeader, [INFO] [stdout] 364 | ) -> ReadonlyPMMR> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 364 | ) -> ReadonlyPMMR<'_, OutputIdentifier, PMMRBackend> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/txhashset/txhashset.rs:370:3 [INFO] [stdout] | [INFO] [stdout] 370 | &self, [INFO] [stdout] | ^^^^^ the lifetime is elided here [INFO] [stdout] 371 | header: &BlockHeader, [INFO] [stdout] 372 | ) -> ReadonlyPMMR> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 372 | ) -> ReadonlyPMMR<'_, RangeProof, PMMRBackend> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/txhashset/txhashset.rs:1173:3 [INFO] [stdout] | [INFO] [stdout] 1173 | &self, [INFO] [stdout] | ^^^^^ the lifetime is elided here [INFO] [stdout] 1174 | ) -> ReadonlyPMMR> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 1174 | ) -> ReadonlyPMMR<'_, OutputIdentifier, PMMRBackend> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/txhashset/txhashset.rs:1179:30 [INFO] [stdout] | [INFO] [stdout] 1179 | pub fn rproof_readonly_pmmr(&self) -> ReadonlyPMMR> { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 1179 | pub fn rproof_readonly_pmmr(&self) -> ReadonlyPMMR<'_, RangeProof, PMMRBackend> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> tests/test_txhashset.rs:39:16 [INFO] [stdout] | [INFO] [stdout] 39 | let db_root = format!(".mwc_txhashset_zip"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `".mwc_txhashset_zip".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `format!` args [INFO] [stdout] --> tests/test_txhashset.rs:51:15 [INFO] [stdout] | [INFO] [stdout] 51 | head.hash().to_string() [INFO] [stdout] | ^^^^^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] = note: `#[warn(clippy::to_string_in_format_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `format!` args [INFO] [stdout] --> tests/test_txhashset.rs:57:68 [INFO] [stdout] | [INFO] [stdout] 57 | Path::new(&db_root).join(format!("txhashset_zip_{}", head.hash().to_string())), [INFO] [stdout] | ^^^^^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> tests/test_txhashset.rs:60:16 [INFO] [stdout] | [INFO] [stdout] 60 | File::create(&Path::new(&db_root).join("txhashset").join("badfile")) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `Path::new(&db_root).join("txhashset").join("badfile")` [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] --> tests/test_txhashset.rs:63:4 [INFO] [stdout] | [INFO] [stdout] 63 | / &Path::new(&db_root) [INFO] [stdout] 64 | | .join("txhashset") [INFO] [stdout] 65 | | .join("output") [INFO] [stdout] 66 | | .join("badfile"), [INFO] [stdout] | |________________________________^ [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] help: change this to [INFO] [stdout] | [INFO] [stdout] 63 ~ Path::new(&db_root) [INFO] [stdout] 64 ~ .join("txhashset") [INFO] [stdout] 65 ~ .join("output") [INFO] [stdout] 66 ~ .join("badfile"), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> tests/test_txhashset.rs:86:10 [INFO] [stdout] | [INFO] [stdout] 86 | .map(|x| PathBuf::from(x)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `PathBuf::from` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `format!` args [INFO] [stdout] --> tests/test_txhashset.rs:92:68 [INFO] [stdout] | [INFO] [stdout] 92 | Path::new(&db_root).join(format!("txhashset_zip_{}", head.hash().to_string())), [INFO] [stdout] | ^^^^^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> tests/test_txhashset.rs:113:10 [INFO] [stdout] | [INFO] [stdout] 113 | .map(|x| PathBuf::from(x)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `PathBuf::from` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> tests/store_kernel_pos_index.rs:23:1 [INFO] [stdout] | [INFO] [stdout] 23 | use mwc_store; [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 call to `clone` can be replaced with `std::slice::from_ref` [INFO] [stdout] --> tests/test_coinbase_maturity.rs:123:13 [INFO] [stdout] | [INFO] [stdout] 123 | let txs = &[coinbase_txn.clone()]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `std::slice::from_ref(&coinbase_txn)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cloned_ref_to_slice_refs [INFO] [stdout] = note: `#[warn(clippy::cloned_ref_to_slice_refs)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this call to `clone` can be replaced with `std::slice::from_ref` [INFO] [stdout] --> tests/test_coinbase_maturity.rs:245:14 [INFO] [stdout] | [INFO] [stdout] 245 | let txs = &[coinbase_txn.clone()]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `std::slice::from_ref(&coinbase_txn)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cloned_ref_to_slice_refs [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> tests/process_block_cut_through.rs:67:11 [INFO] [stdout] | [INFO] [stdout] 67 | .map_err(|e| chain::Error::Block(e))?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `chain::Error::Block` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this call to `clone` can be replaced with `std::slice::from_ref` [INFO] [stdout] --> tests/process_block_cut_through.rs:168:45 [INFO] [stdout] | [INFO] [stdout] 168 | let block = build_block(&chain, &keychain, &[tx.clone()], true)?; [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `std::slice::from_ref(&tx)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cloned_ref_to_slice_refs [INFO] [stdout] = note: `#[warn(clippy::cloned_ref_to_slice_refs)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> tests/nrd_validation_rules.rs:82:11 [INFO] [stdout] | [INFO] [stdout] 82 | .map_err(|e| Error::Block(e))?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `Error::Block` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> tests/nrd_validation_rules.rs:137:30 [INFO] [stdout] | [INFO] [stdout] 137 | aggsig::sign_with_blinding(&keychain.secp(), &msg, &excess, Some(&pubkey)).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: change this to: `keychain.secp()` [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] --> tests/nrd_validation_rules.rs:137:68 [INFO] [stdout] | [INFO] [stdout] 137 | aggsig::sign_with_blinding(&keychain.secp(), &msg, &excess, Some(&pubkey)).unwrap(); [INFO] [stdout] | ^^^^^^^ help: change this to: `pubkey` [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: using `clone` on type `TxKernel` which implements the `Copy` trait [INFO] [stdout] --> tests/nrd_validation_rules.rs:149:3 [INFO] [stdout] | [INFO] [stdout] 149 | kernel.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try removing the `clone` call: `kernel` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `TxKernel` which implements the `Copy` trait [INFO] [stdout] --> tests/nrd_validation_rules.rs:161:3 [INFO] [stdout] | [INFO] [stdout] 161 | kernel.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try removing the `clone` call: `kernel` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> tests/nrd_validation_rules.rs:253:30 [INFO] [stdout] | [INFO] [stdout] 253 | aggsig::sign_with_blinding(&keychain.secp(), &msg, &excess, Some(&pubkey)).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: change this to: `keychain.secp()` [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] --> tests/nrd_validation_rules.rs:253:68 [INFO] [stdout] | [INFO] [stdout] 253 | aggsig::sign_with_blinding(&keychain.secp(), &msg, &excess, Some(&pubkey)).unwrap(); [INFO] [stdout] | ^^^^^^^ help: change this to: `pubkey` [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: using `clone` on type `TxKernel` which implements the `Copy` trait [INFO] [stdout] --> tests/nrd_validation_rules.rs:265:3 [INFO] [stdout] | [INFO] [stdout] 265 | kernel.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try removing the `clone` call: `kernel` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `TxKernel` which implements the `Copy` trait [INFO] [stdout] --> tests/nrd_validation_rules.rs:277:3 [INFO] [stdout] | [INFO] [stdout] 277 | kernel.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try removing the `clone` call: `kernel` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> tests/nrd_validation_rules.rs:352:30 [INFO] [stdout] | [INFO] [stdout] 352 | aggsig::sign_with_blinding(&keychain.secp(), &msg, &excess, Some(&pubkey)).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: change this to: `keychain.secp()` [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] --> tests/nrd_validation_rules.rs:352:68 [INFO] [stdout] | [INFO] [stdout] 352 | aggsig::sign_with_blinding(&keychain.secp(), &msg, &excess, Some(&pubkey)).unwrap(); [INFO] [stdout] | ^^^^^^^ help: change this to: `pubkey` [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: using `clone` on type `TxKernel` which implements the `Copy` trait [INFO] [stdout] --> tests/nrd_validation_rules.rs:364:3 [INFO] [stdout] | [INFO] [stdout] 364 | kernel.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try removing the `clone` call: `kernel` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `TxKernel` which implements the `Copy` trait [INFO] [stdout] --> tests/nrd_validation_rules.rs:376:3 [INFO] [stdout] | [INFO] [stdout] 376 | kernel.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try removing the `clone` call: `kernel` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `u64` which implements the `Copy` trait [INFO] [stdout] --> tests/test_pibd_validation.rs:99:26 [INFO] [stdout] | [INFO] [stdout] 99 | let bitmap_pmmr_size = pmmr::peaks(bitmap_mmr_num_leaves) [INFO] [stdout] | ________________________________^ [INFO] [stdout] 100 | | .last() [INFO] [stdout] 101 | | .unwrap_or(&pmmr::insertion_to_pmmr_index(bitmap_mmr_num_leaves)) [INFO] [stdout] 102 | | .clone(); [INFO] [stdout] | |____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] help: try dereferencing it [INFO] [stdout] | [INFO] [stdout] 99 ~ let bitmap_pmmr_size = *pmmr::peaks(bitmap_mmr_num_leaves) [INFO] [stdout] 100 ~ .last() [INFO] [stdout] 101 ~ .unwrap_or(&pmmr::insertion_to_pmmr_index(bitmap_mmr_num_leaves)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> tests/test_pibd_validation.rs:217:21 [INFO] [stdout] | [INFO] [stdout] 217 | let src_root_dir = format!("./tests/test_data/chain_raw"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"./tests/test_data/chain_raw".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> tests/test_pibd_validation.rs:219:21 [INFO] [stdout] | [INFO] [stdout] 219 | let src_root_dir = format!("./tests/test_data/chain_compacted"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"./tests/test_data/chain_compacted".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> tests/test_pibd_validation.rs:229:21 [INFO] [stdout] | [INFO] [stdout] 229 | let src_root_dir = format!("/Users/bay/.mwc/main_orig/chain_data"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"/Users/bay/.mwc/main_orig/chain_data".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> tests/test_header_perf.rs:115:21 [INFO] [stdout] | [INFO] [stdout] 115 | let src_root_dir = format!("/Users/yeastplume/Projects/mwc_project/server/chain_data"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"/Users/yeastplume/Projects/mwc_project/server/chain_data".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> tests/test_header_perf.rs:116:22 [INFO] [stdout] | [INFO] [stdout] 116 | let dest_root_dir = format!("/Users/yeastplume/Projects/mwc_project/server/.chain_data_copy"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"/Users/yeastplume/Projects/mwc_project/server/.chain_data_copy".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `SegmentIdentifier` which implements the `Copy` trait [INFO] [stdout] --> tests/test_pibd_copy.rs:200:52 [INFO] [stdout] | [INFO] [stdout] 200 | let segment = self.responder.get_headers_segment(target_segment.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*target_segment` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `false` [INFO] [stdout] --> tests/test_pibd_copy.rs:223:4 [INFO] [stdout] | [INFO] [stdout] 223 | assert!(false); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: replace this with `panic!()` or `unreachable!()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] = note: `#[warn(clippy::assertions_on_constants)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> tests/mine_simple_chain.rs:75:2 [INFO] [stdout] | [INFO] [stdout] 66 | / let chain = chain::Chain::init( [INFO] [stdout] 67 | | dir_name.to_string(), [INFO] [stdout] 68 | | adapter, [INFO] [stdout] 69 | | genesis, [INFO] [stdout] ... | [INFO] [stdout] 73 | | .unwrap(); [INFO] [stdout] | |______________- unnecessary `let` binding [INFO] [stdout] 74 | [INFO] [stdout] 75 | chain [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] = note: `#[warn(clippy::let_and_return)]` on by default [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 66 ~ [INFO] [stdout] 67 | [INFO] [stdout] 68 ~ chain::Chain::init( [INFO] [stdout] 69 ~ dir_name.to_string(), [INFO] [stdout] 70 ~ adapter, [INFO] [stdout] 71 ~ genesis, [INFO] [stdout] 72 ~ pow::verify_size, [INFO] [stdout] 73 ~ false, [INFO] [stdout] 74 ~ ) [INFO] [stdout] 75 ~ .unwrap() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `SegmentIdentifier` which implements the `Copy` trait [INFO] [stdout] --> tests/test_pibd_copy.rs:301:50 [INFO] [stdout] | [INFO] [stdout] 301 | let seg = self.responder.get_bitmap_segment(seg_id.identifier.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `seg_id.identifier` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `SegmentIdentifier` which implements the `Copy` trait [INFO] [stdout] --> tests/test_pibd_copy.rs:309:50 [INFO] [stdout] | [INFO] [stdout] 309 | let seg = self.responder.get_output_segment(seg_id.identifier.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `seg_id.identifier` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `SegmentIdentifier` which implements the `Copy` trait [INFO] [stdout] --> tests/test_pibd_copy.rs:311:15 [INFO] [stdout] | [INFO] [stdout] 311 | let id = seg.id().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try dereferencing it: `*seg.id()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `SegmentIdentifier` which implements the `Copy` trait [INFO] [stdout] --> tests/test_pibd_copy.rs:324:31 [INFO] [stdout] | [INFO] [stdout] 324 | .get_rangeproof_segment(seg_id.identifier.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `seg_id.identifier` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `SegmentIdentifier` which implements the `Copy` trait [INFO] [stdout] --> tests/test_pibd_copy.rs:326:15 [INFO] [stdout] | [INFO] [stdout] 326 | let id = seg.id().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try dereferencing it: `*seg.id()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `SegmentIdentifier` which implements the `Copy` trait [INFO] [stdout] --> tests/test_pibd_copy.rs:337:50 [INFO] [stdout] | [INFO] [stdout] 337 | let seg = self.responder.get_kernel_segment(seg_id.identifier.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `seg_id.identifier` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `SegmentIdentifier` which implements the `Copy` trait [INFO] [stdout] --> tests/test_pibd_copy.rs:339:15 [INFO] [stdout] | [INFO] [stdout] 339 | let id = seg.id().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try dereferencing it: `*seg.id()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> tests/test_pibd_copy.rs:435:21 [INFO] [stdout] | [INFO] [stdout] 435 | let src_root_dir = format!("/Users/bay/.mwc/floo_orig"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"/Users/bay/.mwc/floo_orig".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> tests/test_pibd_copy.rs:436:22 [INFO] [stdout] | [INFO] [stdout] 436 | let dest_root_dir = format!("/Users/bay/.mwc/floo_copy"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"/Users/bay/.mwc/floo_copy".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> tests/test_pibd_copy.rs:451:21 [INFO] [stdout] | [INFO] [stdout] 451 | let src_root_dir = format!("/Users/bay/.mwc/main_orig/chain_data"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"/Users/bay/.mwc/main_orig/chain_data".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> tests/test_pibd_copy.rs:452:22 [INFO] [stdout] | [INFO] [stdout] 452 | let dest_root_dir = format!("/Users/bay/.mwc/main_copy/chain_data"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"/Users/bay/.mwc/main_copy/chain_data".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::string::String` [INFO] [stdout] --> tests/test_pibd_copy.rs:461:3 [INFO] [stdout] | [INFO] [stdout] 461 | src_root_dir.into(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `src_root_dir` [INFO] [stdout] | [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] --> tests/test_pibd_copy.rs:470:3 [INFO] [stdout] | [INFO] [stdout] 470 | dest_root_dir.into(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `dest_root_dir` [INFO] [stdout] | [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: casting to the same type is unnecessary (`u64` -> `u64`) [INFO] [stdout] --> tests/mine_simple_chain.rs:435:28 [INFO] [stdout] | [INFO] [stdout] 435 | assert_eq!(head.height, (n + 1) as u64); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `((n + 1))` [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 to the same type is unnecessary (`u64` -> `u64`) [INFO] [stdout] --> tests/mine_simple_chain.rs:448:28 [INFO] [stdout] | [INFO] [stdout] 448 | assert_eq!(head.height, (n + 1) as u64); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `((n + 1))` [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 call to `clone` can be replaced with `std::slice::from_ref` [INFO] [stdout] --> tests/mine_simple_chain.rs:587:51 [INFO] [stdout] | [INFO] [stdout] 587 | let b = prepare_block_tx(&kc, &head, &chain, 6, &[tx1.clone()]); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `std::slice::from_ref(&tx1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cloned_ref_to_slice_refs [INFO] [stdout] = note: `#[warn(clippy::cloned_ref_to_slice_refs)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this call to `clone` can be replaced with `std::slice::from_ref` [INFO] [stdout] --> tests/mine_simple_chain.rs:663:59 [INFO] [stdout] | [INFO] [stdout] 663 | let next = prepare_block_tx(&kc, &fork_head, &chain, 7, &[tx1.clone()]); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `std::slice::from_ref(&tx1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cloned_ref_to_slice_refs [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this call to `clone` can be replaced with `std::slice::from_ref` [INFO] [stdout] --> tests/mine_simple_chain.rs:681:59 [INFO] [stdout] | [INFO] [stdout] 681 | let next = prepare_block_tx(&kc, &prev_main, &chain, 9, &[tx2.clone()]); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `std::slice::from_ref(&tx2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cloned_ref_to_slice_refs [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this call to `clone` can be replaced with `std::slice::from_ref` [INFO] [stdout] --> tests/mine_simple_chain.rs:701:59 [INFO] [stdout] | [INFO] [stdout] 701 | let fork = prepare_block_tx(&kc, &fork_head, &chain, 6, &[tx1.clone()]); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `std::slice::from_ref(&tx1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cloned_ref_to_slice_refs [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this call to `clone` can be replaced with `std::slice::from_ref` [INFO] [stdout] --> tests/mine_simple_chain.rs:705:64 [INFO] [stdout] | [INFO] [stdout] 705 | let fork_next = prepare_block_tx(&kc, &prev_fork, &chain, 8, &[tx2.clone()]); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `std::slice::from_ref(&tx2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cloned_ref_to_slice_refs [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Output` which implements the `Copy` trait [INFO] [stdout] --> tests/mine_simple_chain.rs:799:24 [INFO] [stdout] | [INFO] [stdout] 799 | reward_outputs.push(reward.0.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `reward.0` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this call to `clone` can be replaced with `std::slice::from_ref` [INFO] [stdout] --> tests/mine_simple_chain.rs:950:54 [INFO] [stdout] | [INFO] [stdout] 950 | let next = prepare_block_tx(&kc, &head, &chain, 7, &[tx1.clone()]); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `std::slice::from_ref(&tx1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cloned_ref_to_slice_refs [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 40.50s [INFO] running `Command { std: "docker" "inspect" "4372055e474c425561b8d1c26c371517a73d0ff802ad16b5c582151226e2f098", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "4372055e474c425561b8d1c26c371517a73d0ff802ad16b5c582151226e2f098", kill_on_drop: false }` [INFO] [stdout] 4372055e474c425561b8d1c26c371517a73d0ff802ad16b5c582151226e2f098