[INFO] fetching crate grin_chain 5.4.0... [INFO] linting grin_chain-5.4.0 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate grin_chain 5.4.0 into /workspace/builds/worker-4-tc1/source [INFO] started tweaking crates.io crate grin_chain 5.4.0 [INFO] removed 0 missing tests [INFO] finished tweaking crates.io crate grin_chain 5.4.0 [INFO] tweaked toml for crates.io crate grin_chain 5.4.0 written to /workspace/builds/worker-4-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate grin_chain 5.4.0 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 grin_chain 5.4.0 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 grin_util v5.4.0 [INFO] [stderr] Downloaded thread-id v4.2.2 [INFO] [stderr] Downloaded parking_lot_core v0.7.3 [INFO] [stderr] Downloaded bitflags v0.9.1 [INFO] [stderr] Downloaded num-traits v0.1.43 [INFO] [stderr] Downloaded serde v1.0.208 [INFO] [stderr] Downloaded blake2-rfc v0.2.18 [INFO] [stderr] Downloaded enum_primitive v0.1.1 [INFO] [stderr] Downloaded num-complex v0.2.4 [INFO] [stderr] Downloaded cpufeatures v0.2.13 [INFO] [stderr] Downloaded grin_store v5.4.0 [INFO] [stderr] Downloaded grin_keychain v5.4.0 [INFO] [stderr] Downloaded croaring v1.1.0 [INFO] [stderr] Downloaded num-bigint v0.2.6 [INFO] [stderr] Downloaded cc v1.2.16 [INFO] [stderr] Downloaded grin_core v5.4.0 [INFO] [stderr] Downloaded flate2 v1.0.32 [INFO] [stderr] Downloaded croaring-sys v2.1.0 [INFO] [stderr] Downloaded serde_json v1.0.125 [INFO] [stderr] Downloaded lmdb-zero v0.4.4 [INFO] [stderr] Downloaded liblmdb-sys v0.2.2 [INFO] [stderr] Downloaded indexmap v2.4.0 [INFO] [stderr] Downloaded log4rs v1.3.0 [INFO] [stderr] Downloaded grin_secp256k1zkp v0.7.15 [INFO] [stderr] Downloaded zip v0.5.13 [INFO] [stderr] Downloaded serde_derive v1.0.208 [INFO] [stderr] Downloaded parking_lot v0.10.2 [INFO] [stderr] Downloaded supercow v0.1.0 [INFO] [stderr] Downloaded password-hash v0.2.1 [INFO] [stderr] Downloaded pbkdf2 v0.8.0 [INFO] [stderr] Downloaded memmap v0.7.0 [INFO] [stderr] Downloaded num v0.2.1 [INFO] [stderr] Downloaded crypto-mac v0.11.0 [INFO] [stderr] Downloaded hmac v0.11.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 3fb11efede41890489a945059567eb39b13e4646ec0cee61bb0155bc0a54407c [INFO] running `Command { std: "docker" "start" "-a" "3fb11efede41890489a945059567eb39b13e4646ec0cee61bb0155bc0a54407c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "3fb11efede41890489a945059567eb39b13e4646ec0cee61bb0155bc0a54407c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "3fb11efede41890489a945059567eb39b13e4646ec0cee61bb0155bc0a54407c", kill_on_drop: false }` [INFO] [stdout] 3fb11efede41890489a945059567eb39b13e4646ec0cee61bb0155bc0a54407c [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] d9328213e7b3f22240ef748078030f89c3b6a81a75218f944929e1a96fd76460 [INFO] running `Command { std: "docker" "start" "-a" "d9328213e7b3f22240ef748078030f89c3b6a81a75218f944929e1a96fd76460", kill_on_drop: false }` [INFO] [stderr] Compiling autocfg v1.3.0 [INFO] [stderr] Compiling serde v1.0.208 [INFO] [stderr] Checking smallvec v1.13.2 [INFO] [stderr] Compiling cc v1.2.16 [INFO] [stderr] Compiling generic-array v0.14.7 [INFO] [stderr] Compiling syn v1.0.109 [INFO] [stderr] Compiling serde_json v1.0.125 [INFO] [stderr] Checking destructure_traitobject v0.2.0 [INFO] [stderr] Checking adler2 v2.0.0 [INFO] [stderr] Checking getrandom v0.2.15 [INFO] [stderr] Checking indexmap v2.4.0 [INFO] [stderr] Checking opaque-debug v0.3.1 [INFO] [stderr] Compiling syn v2.0.87 [INFO] [stderr] Checking gimli v0.29.0 [INFO] [stderr] Compiling arrayvec v0.4.12 [INFO] [stderr] Checking miniz_oxide v0.7.4 [INFO] [stderr] Checking thread-id v4.2.2 [INFO] [stderr] Checking unsafe-any-ors v1.0.0 [INFO] [stderr] Checking typemap-ors v1.0.0 [INFO] [stderr] Checking rand v0.5.6 [INFO] [stderr] Checking miniz_oxide v0.8.0 [INFO] [stderr] Checking parking_lot_core v0.9.10 [INFO] [stderr] Compiling autocfg v0.1.8 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Checking parking_lot_core v0.7.3 [INFO] [stderr] Checking rand_os v0.1.3 [INFO] [stderr] Checking rand_isaac v0.1.1 [INFO] [stderr] Checking rand_xorshift v0.1.1 [INFO] [stderr] Checking rand_hc v0.1.0 [INFO] [stderr] Checking flate2 v1.0.32 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling lock_api v0.4.12 [INFO] [stderr] Compiling rand_pcg v0.1.2 [INFO] [stderr] Compiling rand_chacha v0.1.1 [INFO] [stderr] Compiling num-bigint v0.2.6 [INFO] [stderr] Compiling rand v0.6.5 [INFO] [stderr] Compiling num-rational v0.2.4 [INFO] [stderr] Compiling num-complex v0.2.4 [INFO] [stderr] Checking digest v0.9.0 [INFO] [stderr] Checking block-buffer v0.9.0 [INFO] [stderr] Checking crypto-mac v0.11.0 [INFO] [stderr] Checking lock_api v0.3.4 [INFO] [stderr] Checking object v0.36.3 [INFO] [stderr] Checking arc-swap v1.7.1 [INFO] [stderr] Checking cpufeatures v0.2.13 [INFO] [stderr] Checking base64ct v1.6.0 [INFO] [stderr] Checking log-mdc v0.1.0 [INFO] [stderr] Checking humantime v2.1.0 [INFO] [stderr] Checking nodrop v0.1.14 [INFO] [stderr] Compiling gcc v0.3.55 [INFO] [stderr] Checking rustc-demangle v0.1.24 [INFO] [stderr] Checking arrayvec v0.7.6 [INFO] [stderr] Checking sha2 v0.9.9 [INFO] [stderr] Checking parking_lot v0.12.3 [INFO] [stderr] Checking parking_lot v0.10.2 [INFO] [stderr] Checking password-hash v0.2.1 [INFO] [stderr] Checking hmac v0.11.0 [INFO] [stderr] Compiling rustix v0.38.34 [INFO] [stderr] Checking base64 v0.12.3 [INFO] [stderr] Checking constant_time_eq v0.1.5 [INFO] [stderr] Checking ripemd160 v0.9.1 [INFO] [stderr] Checking linked-hash-map v0.5.6 [INFO] [stderr] Checking bitflags v0.9.1 [INFO] [stderr] Checking blake2-rfc v0.2.18 [INFO] [stderr] Checking supercow v0.1.0 [INFO] [stderr] Checking fastrand v2.1.0 [INFO] [stderr] Checking pbkdf2 v0.8.0 [INFO] [stderr] Checking regex-syntax v0.8.4 [INFO] [stderr] Checking lru-cache v0.1.2 [INFO] [stderr] Checking memmap v0.7.0 [INFO] [stderr] Compiling liblmdb-sys v0.2.2 [INFO] [stderr] Checking atty v0.2.14 [INFO] [stderr] Checking termcolor v1.4.1 [INFO] [stderr] Checking bit-vec v0.6.3 [INFO] [stderr] Checking ordered-float v2.10.1 [INFO] [stderr] Checking num-integer v0.1.46 [INFO] [stderr] Checking num-traits v0.1.43 [INFO] [stderr] Checking enum_primitive v0.1.1 [INFO] [stderr] Compiling backtrace v0.3.73 [INFO] [stderr] Compiling grin_secp256k1zkp v0.7.15 [INFO] [stderr] Compiling croaring-sys v2.1.0 [INFO] [stderr] Checking num-iter v0.1.45 [INFO] [stderr] Checking addr2line v0.22.0 [INFO] [stderr] Checking regex-automata v0.4.7 [INFO] [stderr] Checking num v0.2.1 [INFO] [stderr] Compiling derivative v2.2.0 [INFO] [stderr] Checking tempfile v3.12.0 [INFO] [stderr] Checking regex v1.10.6 [INFO] [stderr] Checking croaring v1.1.0 [INFO] [stderr] Checking lmdb-zero v0.4.4 [INFO] [stderr] Compiling serde_derive v1.0.208 [INFO] [stderr] Compiling zerocopy-derive v0.7.35 [INFO] [stderr] Compiling thiserror-impl v1.0.63 [INFO] [stderr] Compiling zeroize_derive v1.4.2 [INFO] [stderr] Checking zeroize v1.8.1 [INFO] [stderr] Checking zerocopy v0.7.35 [INFO] [stderr] Checking thiserror v1.0.63 [INFO] [stderr] Checking zip v0.5.13 [INFO] [stderr] Checking ppv-lite86 v0.2.20 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Checking log v0.4.22 [INFO] [stderr] Checking serde_yaml v0.9.34+deprecated [INFO] [stderr] Checking chrono v0.4.38 [INFO] [stderr] Checking serde-value v0.7.0 [INFO] [stderr] Checking env_logger v0.7.1 [INFO] [stderr] Checking log4rs v1.3.0 [INFO] [stderr] Checking grin_util v5.4.0 [INFO] [stderr] Checking grin_keychain v5.4.0 [INFO] [stderr] Checking grin_core v5.4.0 [INFO] [stderr] Checking grin_store v5.4.0 [INFO] [stderr] Checking grin_chain v5.4.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/chain.rs:210:4 [INFO] [stdout] | [INFO] [stdout] 210 | 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: unnecessary parentheses around closure body [INFO] [stdout] --> src/txhashset/bitmap_accumulator.rs:242:25 [INFO] [stdout] | [INFO] [stdout] 242 | .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] 242 - .map(move |(idx, _)| (idx as u32 + idx_offset as u32)) [INFO] [stdout] 242 + .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:1403:2 [INFO] [stdout] | [INFO] [stdout] 1403 | / /// held by this struct makes it awkward to do so [INFO] [stdout] 1404 | | [INFO] [stdout] | |_^ [INFO] [stdout] 1405 | pub fn apply_output_segment( [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] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/chain.rs:210:4 [INFO] [stdout] | [INFO] [stdout] 210 | 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: redundant field names in struct initialization [INFO] [stdout] --> src/types.rs:559:4 [INFO] [stdout] | [INFO] [stdout] 559 | 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: unnecessary parentheses around closure body [INFO] [stdout] --> src/txhashset/bitmap_accumulator.rs:242:25 [INFO] [stdout] | [INFO] [stdout] 242 | .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] 242 - .map(move |(idx, _)| (idx as u32 + idx_offset as u32)) [INFO] [stdout] 242 + .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:1403:2 [INFO] [stdout] | [INFO] [stdout] 1403 | / /// held by this struct makes it awkward to do so [INFO] [stdout] 1404 | | [INFO] [stdout] | |_^ [INFO] [stdout] 1405 | pub fn apply_output_segment( [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] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/types.rs:559:4 [INFO] [stdout] | [INFO] [stdout] 559 | 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: redundant closure [INFO] [stdout] --> src/chain.rs:96:21 [INFO] [stdout] | [INFO] [stdout] 96 | .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:122:77 [INFO] [stdout] | [INFO] [stdout] 122 | 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: this `if` statement can be collapsed [INFO] [stdout] --> src/chain.rs:408:3 [INFO] [stdout] | [INFO] [stdout] 408 | / if header.total_difficulty() <= head.total_difficulty { [INFO] [stdout] 409 | | if self.block_exists(header.hash())? { [INFO] [stdout] 410 | | return Err(Error::Unfit("duplicate block".into())); [INFO] [stdout] 411 | | } [INFO] [stdout] 412 | | } [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] 408 ~ if header.total_difficulty() <= head.total_difficulty [INFO] [stdout] 409 ~ && self.block_exists(header.hash())? { [INFO] [stdout] 410 | return Err(Error::Unfit("duplicate block".into())); [INFO] [stdout] 411 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/chain.rs:646:52 [INFO] [stdout] | [INFO] [stdout] 646 | let has_nrd_kernel = tx.kernels().iter().any(|k| match k.features { [INFO] [stdout] | __________________________________________________________^ [INFO] [stdout] 647 | | KernelFeatures::NoRecentDuplicate { .. } => true, [INFO] [stdout] 648 | | _ => false, [INFO] [stdout] 649 | | }); [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] 646 - let has_nrd_kernel = tx.kernels().iter().any(|k| match k.features { [INFO] [stdout] 647 - KernelFeatures::NoRecentDuplicate { .. } => true, [INFO] [stdout] 648 - _ => false, [INFO] [stdout] 649 - }); [INFO] [stdout] 646 + 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:815:32 [INFO] [stdout] | [INFO] [stdout] 815 | 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:908:3 [INFO] [stdout] | [INFO] [stdout] 908 | 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] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 908 - return Ok(segmenter); [INFO] [stdout] 908 + 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:893:7 [INFO] [stdout] | [INFO] [stdout] 893 | 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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/chain.rs:1024:37 [INFO] [stdout] | [INFO] [stdout] 1024 | 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:1049:9 [INFO] [stdout] | [INFO] [stdout] 1049 | 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:1397:3 [INFO] [stdout] | [INFO] [stdout] 1397 | 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] = note: `#[warn(clippy::needless_question_mark)]` on by default [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 1397 - Ok(self.txhashset.read().get_output_pos(commit)?) [INFO] [stdout] 1397 + 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:1421:8 [INFO] [stdout] | [INFO] [stdout] 1421 | 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] 1421 - for (ref x, &y) in outputs.1.iter().zip(rangeproofs.1.iter()) { [INFO] [stdout] 1421 + for (x, &y) in outputs.1.iter().zip(rangeproofs.1.iter()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/chain.rs:1538:3 [INFO] [stdout] | [INFO] [stdout] 1538 | 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] 1538 - Ok(self.get_block_header(&hash)?) [INFO] [stdout] 1538 + 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:1584:17 [INFO] [stdout] | [INFO] [stdout] 1584 | .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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/chain.rs:1819:21 [INFO] [stdout] | [INFO] [stdout] 1819 | 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:1835:19 [INFO] [stdout] | [INFO] [stdout] 1835 | .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:199:3 [INFO] [stdout] | [INFO] [stdout] 199 | / match self { [INFO] [stdout] 200 | | Error::Unfit(_) [INFO] [stdout] 201 | | | Error::Orphan [INFO] [stdout] 202 | | | Error::StoreErr(_, _) [INFO] [stdout] ... | [INFO] [stdout] 207 | | _ => true, [INFO] [stdout] 208 | | } [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] 199 ~ !matches!(self, Error::Unfit(_) [INFO] [stdout] 200 ~ | Error::Orphan [INFO] [stdout] 201 ~ | Error::StoreErr(_, _) [INFO] [stdout] 202 ~ | Error::SerErr { .. } [INFO] [stdout] 203 ~ | Error::TxHashSetErr(_) [INFO] [stdout] 204 ~ | Error::GenesisBlockRequired [INFO] [stdout] 205 ~ | Error::Other(_)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/linked_list.rs:237:28 [INFO] [stdout] | [INFO] [stdout] 237 | 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:241:33 [INFO] [stdout] | [INFO] [stdout] 241 | 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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/pipe.rs:38:22 [INFO] [stdout] | [INFO] [stdout] 38 | 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: the function `update_head` doesn't need a mutable reference [INFO] [stdout] --> src/pipe.rs:173:22 [INFO] [stdout] | [INFO] [stdout] 173 | 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] = note: `#[warn(clippy::unnecessary_mut_passed)]` on by default [INFO] [stdout] help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] 173 - update_head(&head, &mut ctx.batch)?; [INFO] [stdout] 173 + update_head(&head, &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:207:30 [INFO] [stdout] | [INFO] [stdout] 207 | 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:208:32 [INFO] [stdout] | [INFO] [stdout] 208 | 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:219:37 [INFO] [stdout] | [INFO] [stdout] 219 | 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:247:50 [INFO] [stdout] | [INFO] [stdout] 247 | 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:267:30 [INFO] [stdout] | [INFO] [stdout] 267 | 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:271:21 [INFO] [stdout] | [INFO] [stdout] 271 | 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:281:49 [INFO] [stdout] | [INFO] [stdout] 281 | 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] 281 - update_header_head(&Tip::from_header(header), &mut ctx.batch)?; [INFO] [stdout] 281 + 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:328:39 [INFO] [stdout] | [INFO] [stdout] 328 | 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:355:3 [INFO] [stdout] | [INFO] [stdout] 355 | / return Err(Error::Block(block::Error::Other( [INFO] [stdout] 356 | | "header hash denied".into(), [INFO] [stdout] 357 | | ))); [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] 355 ~ Err(Error::Block(block::Error::Other( [INFO] [stdout] 356 ~ "header hash denied".into(), [INFO] [stdout] 357 ~ ))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/pipe.rs:359:3 [INFO] [stdout] | [INFO] [stdout] 359 | 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] 359 - return Ok(()); [INFO] [stdout] 359 + Ok(()) [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:548:21 [INFO] [stdout] | [INFO] [stdout] 548 | .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:561:19 [INFO] [stdout] | [INFO] [stdout] 561 | .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: you should consider adding a `Default` implementation for `BitmapAccumulator` [INFO] [stdout] --> src/txhashset/bitmap_accumulator.rs:56:2 [INFO] [stdout] | [INFO] [stdout] 56 | / pub fn new() -> BitmapAccumulator { [INFO] [stdout] 57 | | BitmapAccumulator { [INFO] [stdout] 58 | | backend: VecBackend::new(), [INFO] [stdout] 59 | | } [INFO] [stdout] 60 | | } [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] 52 + impl Default for BitmapAccumulator { [INFO] [stdout] 53 + fn default() -> Self { [INFO] [stdout] 54 + Self::new() [INFO] [stdout] 55 + } [INFO] [stdout] 56 + } [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:199:38 [INFO] [stdout] | [INFO] [stdout] 199 | 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:217:2 [INFO] [stdout] | [INFO] [stdout] 217 | / pub fn new() -> BitmapChunk { [INFO] [stdout] 218 | | BitmapChunk(BitVec::from_elem(Self::LEN_BITS, false)) [INFO] [stdout] 219 | | } [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] 212 + impl Default for BitmapChunk { [INFO] [stdout] 213 + fn default() -> Self { [INFO] [stdout] 214 + Self::new() [INFO] [stdout] 215 + } [INFO] [stdout] 216 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty doc comment [INFO] [stdout] --> src/txhashset/bitmap_accumulator.rs:275:1 [INFO] [stdout] | [INFO] [stdout] 275 | /// [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: manually reimplementing `div_ceil` [INFO] [stdout] --> src/txhashset/bitmap_accumulator.rs:321:23 [INFO] [stdout] | [INFO] [stdout] 321 | 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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/txhashset/desegmenter.rs:225:32 [INFO] [stdout] | [INFO] [stdout] 225 | extension.update_leaf_sets(&b)?; [INFO] [stdout] | ^^ help: change this to: `b` [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: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/txhashset/desegmenter.rs:261:9 [INFO] [stdout] | [INFO] [stdout] 261 | if current.height % 100000 == 0 || current.height == total { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `current.height.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: binary comparison to literal `Option::None` [INFO] [stdout] --> src/txhashset/desegmenter.rs:398:7 [INFO] [stdout] | [INFO] [stdout] 398 | if self.bitmap_cache == None { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `Option::is_none()` instead: `self.bitmap_cache.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] = note: `#[warn(clippy::partialeq_to_none)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> src/txhashset/desegmenter.rs:490:4 [INFO] [stdout] | [INFO] [stdout] 490 | while let Some(id) = identifier_iter.next() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for id in identifier_iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stdout] = note: `#[warn(clippy::while_let_on_iterator)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/txhashset/desegmenter.rs:491:5 [INFO] [stdout] | [INFO] [stdout] 491 | / if id.segment_pos_range(self.bitmap_mmr_size).1 > local_pmmr_size { [INFO] [stdout] 492 | | if !self.has_bitmap_segment_with_id(id) { [INFO] [stdout] 493 | | return_vec.push(SegmentTypeIdentifier::new(SegmentType::Bitmap, id)); [INFO] [stdout] 494 | | if return_vec.len() >= max_elements { [INFO] [stdout] ... | [INFO] [stdout] 498 | | } [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] 491 ~ if id.segment_pos_range(self.bitmap_mmr_size).1 > local_pmmr_size [INFO] [stdout] 492 ~ && !self.has_bitmap_segment_with_id(id) { [INFO] [stdout] 493 | return_vec.push(SegmentTypeIdentifier::new(SegmentType::Bitmap, id)); [INFO] [stdout] ... [INFO] [stdout] 496 | } [INFO] [stdout] 497 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manually reimplementing `div_ceil` [INFO] [stdout] --> src/txhashset/desegmenter.rs:651:4 [INFO] [stdout] | [INFO] [stdout] 651 | (pmmr::n_leaves(self.archive_header.output_mmr_size) + 1023) / 1024; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `pmmr::n_leaves(self.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:658:8 [INFO] [stdout] | [INFO] [stdout] 658 | 1 + pmmr::peaks(pmmr::insertion_to_pmmr_index(self.bitmap_mmr_leaf_count)) [INFO] [stdout] | _________________^ [INFO] [stdout] 659 | | .last() [INFO] [stdout] 660 | | .unwrap_or( [INFO] [stdout] 661 | | &(pmmr::peaks(pmmr::insertion_to_pmmr_index( [INFO] [stdout] ... | [INFO] [stdout] 667 | | .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] 658 ~ 1 + *pmmr::peaks(pmmr::insertion_to_pmmr_index(self.bitmap_mmr_leaf_count)) [INFO] [stdout] 659 ~ .last() [INFO] [stdout] 660 ~ .unwrap_or( [INFO] [stdout] 661 ~ &(pmmr::peaks(pmmr::insertion_to_pmmr_index( [INFO] [stdout] 662 ~ self.bitmap_mmr_leaf_count - 1, [INFO] [stdout] 663 ~ )) [INFO] [stdout] 664 ~ .last() [INFO] [stdout] 665 ~ .unwrap()), [INFO] [stdout] 666 ~ ); [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:661:6 [INFO] [stdout] | [INFO] [stdout] 661 | / &(pmmr::peaks(pmmr::insertion_to_pmmr_index( [INFO] [stdout] 662 | | self.bitmap_mmr_leaf_count - 1, [INFO] [stdout] 663 | | )) [INFO] [stdout] 664 | | .last() [INFO] [stdout] 665 | | .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] 661 ~ (pmmr::peaks(pmmr::insertion_to_pmmr_index( [INFO] [stdout] 662 ~ self.bitmap_mmr_leaf_count - 1, [INFO] [stdout] 663 ~ )) [INFO] [stdout] 664 ~ .last() [INFO] [stdout] 665 ~ .unwrap()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/txhashset/rewindable_kernel_view.rs:43:13 [INFO] [stdout] | [INFO] [stdout] 43 | .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: useless conversion to the same type: `error::Error` [INFO] [stdout] --> src/txhashset/rewindable_kernel_view.rs:62:15 [INFO] [stdout] | [INFO] [stdout] 62 | return Err(Error::InvalidTxHashSet(format!( [INFO] [stdout] | ________________________^ [INFO] [stdout] 63 | | "Kernel root at {} does not match", [INFO] [stdout] 64 | | self.header.height [INFO] [stdout] 65 | | )) [INFO] [stdout] 66 | | .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] 62 ~ return Err(Error::InvalidTxHashSet(format!( [INFO] [stdout] 63 ~ "Kernel root at {} does not match", [INFO] [stdout] 64 ~ self.header.height [INFO] [stdout] 65 ~ ))); [INFO] [stdout] | [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: the borrowed expression implements the required traits [INFO] [stdout] --> src/txhashset/segmenter.rs:84:34 [INFO] [stdout] | [INFO] [stdout] 84 | 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: module has the same name as its containing module [INFO] [stdout] --> src/txhashset.rs:22:1 [INFO] [stdout] | [INFO] [stdout] 22 | 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:89:13 [INFO] [stdout] | [INFO] [stdout] 89 | 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:93:1 [INFO] [stdout] | [INFO] [stdout] 93 | / impl PartialOrd for OrderedHashLeafNode { [INFO] [stdout] 94 | | fn partial_cmp(&self, other: &Self) -> Option { [INFO] [stdout] 95 | | let a_val = match self { [INFO] [stdout] 96 | | OrderedHashLeafNode::Hash(_, pos0) => pos0, [INFO] [stdout] ... | [INFO] [stdout] 105 | | } [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] 94 - fn partial_cmp(&self, other: &Self) -> Option { [INFO] [stdout] 95 - let a_val = match self { [INFO] [stdout] 96 - OrderedHashLeafNode::Hash(_, pos0) => pos0, [INFO] [stdout] 97 - OrderedHashLeafNode::Leaf(_, pos0) => pos0, [INFO] [stdout] 98 - }; [INFO] [stdout] 99 - let b_val = match other { [INFO] [stdout] 100 - OrderedHashLeafNode::Hash(_, pos0) => pos0, [INFO] [stdout] 101 - OrderedHashLeafNode::Leaf(_, pos0) => pos0, [INFO] [stdout] 102 - }; [INFO] [stdout] 103 - Some(a_val.cmp(b_val)) [INFO] [stdout] 104 - } [INFO] [stdout] 94 + fn partial_cmp(&self, other: &Self) -> Option { Some(self.cmp(other)) } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/txhashset/txhashset.rs:330:27 [INFO] [stdout] | [INFO] [stdout] 330 | 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:414:41 [INFO] [stdout] | [INFO] [stdout] 414 | 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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/txhashset/txhashset.rs:499:39 [INFO] [stdout] | [INFO] [stdout] 499 | 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:520:43 [INFO] [stdout] | [INFO] [stdout] 520 | 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:570:48 [INFO] [stdout] | [INFO] [stdout] 570 | 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:591:6 [INFO] [stdout] | [INFO] [stdout] 591 | / match kernel.features { [INFO] [stdout] 592 | | KernelFeatures::NoRecentDuplicate { .. } => { [INFO] [stdout] 593 | | while current_pos > current_header.kernel_mmr_size { [INFO] [stdout] 594 | | let hash = header_pmmr [INFO] [stdout] ... | [INFO] [stdout] 605 | | _ => {} [INFO] [stdout] 606 | | } [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] 591 ~ if let KernelFeatures::NoRecentDuplicate { .. } = kernel.features { [INFO] [stdout] 592 ~ while current_pos > current_header.kernel_mmr_size { [INFO] [stdout] 593 ~ let hash = header_pmmr [INFO] [stdout] 594 ~ .get_header_hash_by_height(current_header.height + 1)?; [INFO] [stdout] 595 ~ current_header = batch.get_block_header(&hash)?; [INFO] [stdout] 596 ~ } [INFO] [stdout] 597 ~ let new_pos = CommitPos { [INFO] [stdout] 598 ~ pos: current_pos, [INFO] [stdout] 599 ~ height: current_header.height, [INFO] [stdout] 600 ~ }; [INFO] [stdout] 601 ~ apply_kernel_rules(&kernel, new_pos, batch)?; [INFO] [stdout] 602 ~ count += 1; [INFO] [stdout] 603 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/txhashset/txhashset.rs:904:34 [INFO] [stdout] | [INFO] [stdout] 904 | pub fn header_extending_readonly<'a, F, T>( [INFO] [stdout] | ^^ [INFO] [stdout] 905 | 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] = note: `#[warn(clippy::needless_lifetimes)]` on by default [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 904 ~ pub fn header_extending_readonly( [INFO] [stdout] 905 ~ 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:1015:3 [INFO] [stdout] | [INFO] [stdout] 1015 | 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: the borrowed expression implements the required traits [INFO] [stdout] --> src/txhashset/txhashset.rs:1064:34 [INFO] [stdout] | [INFO] [stdout] 1064 | self.pmmr.push(header).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:1083:13 [INFO] [stdout] | [INFO] [stdout] 1083 | .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: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/txhashset/txhashset.rs:1098:3 [INFO] [stdout] | [INFO] [stdout] 1098 | Ok(self.pmmr.root().map_err(|_| Error::InvalidRoot)?) [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] 1098 - Ok(self.pmmr.root().map_err(|_| Error::InvalidRoot)?) [INFO] [stdout] 1098 + self.pmmr.root().map_err(|_| Error::InvalidRoot) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `unwrap_or` to construct default value [INFO] [stdout] --> src/txhashset/txhashset.rs:1181:6 [INFO] [stdout] | [INFO] [stdout] 1181 | .unwrap_or(Bitmap::new()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] = note: `#[warn(clippy::unwrap_or_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Tip` which implements the `Copy` trait [INFO] [stdout] --> src/txhashset/txhashset.rs:1188:3 [INFO] [stdout] | [INFO] [stdout] 1188 | 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: use of `unwrap_or` to construct default value [INFO] [stdout] --> src/txhashset/txhashset.rs:1305:59 [INFO] [stdout] | [INFO] [stdout] 1305 | self.bitmap_cache = self.bitmap_accumulator.as_bitmap().unwrap_or(Bitmap::new()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/txhashset/txhashset.rs:1337:13 [INFO] [stdout] | [INFO] [stdout] 1337 | .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:1343:13 [INFO] [stdout] | [INFO] [stdout] 1343 | .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:1421:18 [INFO] [stdout] | [INFO] [stdout] 1421 | ... .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:1425:17 [INFO] [stdout] | [INFO] [stdout] 1425 | ... .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:1432:17 [INFO] [stdout] | [INFO] [stdout] 1432 | ... .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:1437:8 [INFO] [stdout] | [INFO] [stdout] 1437 | / ... if !self.bitmap_cache.contains(i as u32) { [INFO] [stdout] 1438 | | ... self.output_pmmr.remove_from_leaf_set(pos0); [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] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 1436 ~ Some(i) [INFO] [stdout] 1437 ~ if !self.bitmap_cache.contains(i as u32) => { [INFO] [stdout] 1438 | self.output_pmmr.remove_from_leaf_set(pos0); [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:1435:6 [INFO] [stdout] | [INFO] [stdout] 1435 | / match pmmr_index { [INFO] [stdout] 1436 | | Some(i) => { [INFO] [stdout] 1437 | | if !self.bitmap_cache.contains(i as u32) { [INFO] [stdout] 1438 | | self.output_pmmr.remove_from_leaf_set(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] 1435 ~ if let Some(i) = pmmr_index { [INFO] [stdout] 1436 ~ if !self.bitmap_cache.contains(i as u32) { [INFO] [stdout] 1437 ~ self.output_pmmr.remove_from_leaf_set(pos0); [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:1465:18 [INFO] [stdout] | [INFO] [stdout] 1465 | ... .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:1469:17 [INFO] [stdout] | [INFO] [stdout] 1469 | ... .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:1476:17 [INFO] [stdout] | [INFO] [stdout] 1476 | ... .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:1481:8 [INFO] [stdout] | [INFO] [stdout] 1481 | / ... if !self.bitmap_cache.contains(i as u32) { [INFO] [stdout] 1482 | | ... self.rproof_pmmr.remove_from_leaf_set(pos0); [INFO] [stdout] 1483 | | ... } [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] 1480 ~ Some(i) [INFO] [stdout] 1481 ~ if !self.bitmap_cache.contains(i as u32) => { [INFO] [stdout] 1482 | self.rproof_pmmr.remove_from_leaf_set(pos0); [INFO] [stdout] 1483 ~ } [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:1479:6 [INFO] [stdout] | [INFO] [stdout] 1479 | / match pmmr_index { [INFO] [stdout] 1480 | | Some(i) => { [INFO] [stdout] 1481 | | if !self.bitmap_cache.contains(i as u32) { [INFO] [stdout] 1482 | | self.rproof_pmmr.remove_from_leaf_set(pos0); [INFO] [stdout] ... | [INFO] [stdout] 1485 | | None => {} [INFO] [stdout] 1486 | | }; [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] 1479 ~ if let Some(i) = pmmr_index { [INFO] [stdout] 1480 ~ if !self.bitmap_cache.contains(i as u32) { [INFO] [stdout] 1481 ~ self.rproof_pmmr.remove_from_leaf_set(pos0); [INFO] [stdout] 1482 ~ } [INFO] [stdout] 1483 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `error::Error` [INFO] [stdout] --> src/txhashset/txhashset.rs:1519:17 [INFO] [stdout] | [INFO] [stdout] 1519 | return Err(Error::InvalidSegment( [INFO] [stdout] | ________________________________^ [INFO] [stdout] 1520 | | "Kernel PMMR is non-prunable, should not have hash data".to_string(), [INFO] [stdout] 1521 | | ) [INFO] [stdout] 1522 | | .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] 1519 ~ return Err(Error::InvalidSegment( [INFO] [stdout] 1520 ~ "Kernel PMMR is non-prunable, should not have hash data".to_string(), [INFO] [stdout] 1521 ~ )); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/txhashset/txhashset.rs:1528:17 [INFO] [stdout] | [INFO] [stdout] 1528 | ... .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:1541:13 [INFO] [stdout] | [INFO] [stdout] 1541 | .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:1562:13 [INFO] [stdout] | [INFO] [stdout] 1562 | .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: redundant closure [INFO] [stdout] --> src/chain.rs:96:21 [INFO] [stdout] | [INFO] [stdout] 96 | .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:122:77 [INFO] [stdout] | [INFO] [stdout] 122 | 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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/txhashset/txhashset.rs:1627:47 [INFO] [stdout] | [INFO] [stdout] 1627 | 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: the borrowed expression implements the required traits [INFO] [stdout] --> src/txhashset/txhashset.rs:1710:13 [INFO] [stdout] | [INFO] [stdout] 1710 | .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:1713:13 [INFO] [stdout] | [INFO] [stdout] 1713 | .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:1716:13 [INFO] [stdout] | [INFO] [stdout] 1716 | .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 function has too many arguments (8/7) [INFO] [stdout] --> src/txhashset/txhashset.rs:1810:2 [INFO] [stdout] | [INFO] [stdout] 1810 | / pub fn validate( [INFO] [stdout] 1811 | | &self, [INFO] [stdout] 1812 | | genesis: &BlockHeader, [INFO] [stdout] 1813 | | fast_validation: bool, [INFO] [stdout] ... | [INFO] [stdout] 1818 | | stop_state: Option>, [INFO] [stdout] 1819 | | ) -> Result<(Commitment, Commitment), Error> { [INFO] [stdout] | |________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `error::Error` [INFO] [stdout] --> src/txhashset/txhashset.rs:1845:17 [INFO] [stdout] | [INFO] [stdout] 1845 | 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:1853:17 [INFO] [stdout] | [INFO] [stdout] 1853 | 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: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/txhashset/txhashset.rs:1911:18 [INFO] [stdout] | [INFO] [stdout] 1911 | let kernel = self [INFO] [stdout] | ______________________________^ [INFO] [stdout] 1912 | | .kernel_pmmr [INFO] [stdout] 1913 | | .get_data(n) [INFO] [stdout] 1914 | | .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] 1914 - .ok_or_else(|| Error::TxKernelNotFound)?; [INFO] [stdout] 1914 + .ok_or(Error::TxKernelNotFound)?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/chain.rs:408:3 [INFO] [stdout] | [INFO] [stdout] 408 | / if header.total_difficulty() <= head.total_difficulty { [INFO] [stdout] 409 | | if self.block_exists(header.hash())? { [INFO] [stdout] 410 | | return Err(Error::Unfit("duplicate block".into())); [INFO] [stdout] 411 | | } [INFO] [stdout] 412 | | } [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] 408 ~ if header.total_difficulty() <= head.total_difficulty [INFO] [stdout] 409 ~ && self.block_exists(header.hash())? { [INFO] [stdout] 410 | return Err(Error::Unfit("duplicate block".into())); [INFO] [stdout] 411 ~ } [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:2037:71 [INFO] [stdout] | [INFO] [stdout] 2037 | 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:2072:17 [INFO] [stdout] | [INFO] [stdout] 2072 | 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: match expression looks like `matches!` macro [INFO] [stdout] --> src/chain.rs:646:52 [INFO] [stdout] | [INFO] [stdout] 646 | let has_nrd_kernel = tx.kernels().iter().any(|k| match k.features { [INFO] [stdout] | __________________________________________________________^ [INFO] [stdout] 647 | | KernelFeatures::NoRecentDuplicate { .. } => true, [INFO] [stdout] 648 | | _ => false, [INFO] [stdout] 649 | | }); [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] 646 - let has_nrd_kernel = tx.kernels().iter().any(|k| match k.features { [INFO] [stdout] 647 - KernelFeatures::NoRecentDuplicate { .. } => true, [INFO] [stdout] 648 - _ => false, [INFO] [stdout] 649 - }); [INFO] [stdout] 646 + let has_nrd_kernel = tx.kernels().iter().any(|k| matches!(k.features, KernelFeatures::NoRecentDuplicate { .. })); [INFO] [stdout] | [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:2175:41 [INFO] [stdout] | [INFO] [stdout] 2175 | 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] 2175 ~ pub fn clean_txhashset_folder(root_dir: &Path) { [INFO] [stdout] 2176 ~ 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:2213:2 [INFO] [stdout] | [INFO] [stdout] 2213 | / match kernel.features { [INFO] [stdout] 2214 | | KernelFeatures::NoRecentDuplicate { [INFO] [stdout] 2215 | | relative_height, .. [INFO] [stdout] 2216 | | } => { [INFO] [stdout] ... | [INFO] [stdout] 2236 | | _ => {} [INFO] [stdout] 2237 | | } [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] 2213 ~ if let KernelFeatures::NoRecentDuplicate { [INFO] [stdout] 2214 ~ relative_height, .. [INFO] [stdout] 2215 ~ } = kernel.features { [INFO] [stdout] 2216 ~ let kernel_index = store::nrd_recent_kernel_index(); [INFO] [stdout] 2217 ~ debug!("checking NRD index: {:?}", kernel.excess()); [INFO] [stdout] 2218 ~ if let Some(prev) = kernel_index.peek_pos(batch, kernel.excess())? { [INFO] [stdout] 2219 ~ let diff = pos.height.saturating_sub(prev.height); [INFO] [stdout] 2220 ~ debug!( [INFO] [stdout] 2221 ~ "NRD check: {}, {:?}, {:?}", [INFO] [stdout] 2222 ~ pos.height, prev, relative_height [INFO] [stdout] 2223 ~ ); [INFO] [stdout] 2224 ~ if diff < relative_height.into() { [INFO] [stdout] 2225 ~ return Err(Error::NRDRelativeHeight); [INFO] [stdout] 2226 ~ } [INFO] [stdout] 2227 ~ } [INFO] [stdout] 2228 ~ debug!( [INFO] [stdout] 2229 ~ "pushing entry to NRD index: {:?}: {:?}", [INFO] [stdout] 2230 ~ kernel.excess(), [INFO] [stdout] 2231 ~ pos, [INFO] [stdout] 2232 ~ ); [INFO] [stdout] 2233 ~ kernel_index.push_pos(batch, kernel.excess(), pos)?; [INFO] [stdout] 2234 ~ } [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:815:32 [INFO] [stdout] | [INFO] [stdout] 815 | 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: using `Result.and_then(|x| Ok(y))`, which is more succinctly expressed as `map(|x| y)` [INFO] [stdout] --> src/txhashset/utxo_view.rs:89:7 [INFO] [stdout] | [INFO] [stdout] 89 | / self.validate_input(input.commitment(), batch) [INFO] [stdout] 90 | | .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: unneeded `return` statement [INFO] [stdout] --> src/chain.rs:908:3 [INFO] [stdout] | [INFO] [stdout] 908 | 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] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 908 - return Ok(segmenter); [INFO] [stdout] 908 + 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:893:7 [INFO] [stdout] | [INFO] [stdout] 893 | 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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/chain.rs:1024:37 [INFO] [stdout] | [INFO] [stdout] 1024 | 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:1049:9 [INFO] [stdout] | [INFO] [stdout] 1049 | 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:1397:3 [INFO] [stdout] | [INFO] [stdout] 1397 | 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] = note: `#[warn(clippy::needless_question_mark)]` on by default [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 1397 - Ok(self.txhashset.read().get_output_pos(commit)?) [INFO] [stdout] 1397 + 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:1421:8 [INFO] [stdout] | [INFO] [stdout] 1421 | 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] 1421 - for (ref x, &y) in outputs.1.iter().zip(rangeproofs.1.iter()) { [INFO] [stdout] 1421 + for (x, &y) in outputs.1.iter().zip(rangeproofs.1.iter()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/chain.rs:1538:3 [INFO] [stdout] | [INFO] [stdout] 1538 | 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] 1538 - Ok(self.get_block_header(&hash)?) [INFO] [stdout] 1538 + 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:1584:17 [INFO] [stdout] | [INFO] [stdout] 1584 | .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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/chain.rs:1819:21 [INFO] [stdout] | [INFO] [stdout] 1819 | 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:1835:19 [INFO] [stdout] | [INFO] [stdout] 1835 | .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:199:3 [INFO] [stdout] | [INFO] [stdout] 199 | / match self { [INFO] [stdout] 200 | | Error::Unfit(_) [INFO] [stdout] 201 | | | Error::Orphan [INFO] [stdout] 202 | | | Error::StoreErr(_, _) [INFO] [stdout] ... | [INFO] [stdout] 207 | | _ => true, [INFO] [stdout] 208 | | } [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] 199 ~ !matches!(self, Error::Unfit(_) [INFO] [stdout] 200 ~ | Error::Orphan [INFO] [stdout] 201 ~ | Error::StoreErr(_, _) [INFO] [stdout] 202 ~ | Error::SerErr { .. } [INFO] [stdout] 203 ~ | Error::TxHashSetErr(_) [INFO] [stdout] 204 ~ | Error::GenesisBlockRequired [INFO] [stdout] 205 ~ | Error::Other(_)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `SyncState` [INFO] [stdout] --> src/types.rs:189:2 [INFO] [stdout] | [INFO] [stdout] 189 | / pub fn new() -> SyncState { [INFO] [stdout] 190 | | SyncState { [INFO] [stdout] 191 | | current: RwLock::new(SyncStatus::Initial), [INFO] [stdout] 192 | | sync_error: RwLock::new(None), [INFO] [stdout] ... | [INFO] [stdout] 195 | | } [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] 187 + impl Default for SyncState { [INFO] [stdout] 188 + fn default() -> Self { [INFO] [stdout] 189 + Self::new() [INFO] [stdout] 190 + } [INFO] [stdout] 191 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/linked_list.rs:237:28 [INFO] [stdout] | [INFO] [stdout] 237 | 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: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/types.rs:250:3 [INFO] [stdout] | [INFO] [stdout] 250 | / match status { [INFO] [stdout] 251 | | SyncStatus::HeaderSync { sync_head, .. } => { [INFO] [stdout] 252 | | *sync_head = new_sync_head; [INFO] [stdout] ... | [INFO] [stdout] 255 | | } [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] 250 ~ if let SyncStatus::HeaderSync { sync_head, .. } = status { [INFO] [stdout] 251 ~ *sync_head = new_sync_head; [INFO] [stdout] 252 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/linked_list.rs:241:33 [INFO] [stdout] | [INFO] [stdout] 241 | 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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/pipe.rs:38:22 [INFO] [stdout] | [INFO] [stdout] 38 | 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: the borrowed expression implements the required traits [INFO] [stdout] --> src/types.rs:546:28 [INFO] [stdout] | [INFO] [stdout] 546 | 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:547:28 [INFO] [stdout] | [INFO] [stdout] 547 | 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:650:3 [INFO] [stdout] | [INFO] [stdout] 650 | / match *self { [INFO] [stdout] 651 | | BlockStatus::Next { .. } => true, [INFO] [stdout] 652 | | _ => false, [INFO] [stdout] 653 | | } [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] 650 - match *self { [INFO] [stdout] 651 - BlockStatus::Next { .. } => true, [INFO] [stdout] 652 - _ => false, [INFO] [stdout] 653 - } [INFO] [stdout] 650 + matches!(*self, BlockStatus::Next { .. }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/types.rs:658:3 [INFO] [stdout] | [INFO] [stdout] 658 | / match *self { [INFO] [stdout] 659 | | BlockStatus::Reorg { .. } => true, [INFO] [stdout] 660 | | _ => false, [INFO] [stdout] 661 | | } [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] 658 - match *self { [INFO] [stdout] 659 - BlockStatus::Reorg { .. } => true, [INFO] [stdout] 660 - _ => false, [INFO] [stdout] 661 - } [INFO] [stdout] 658 + matches!(*self, BlockStatus::Reorg { .. }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/chain.rs:1820:44 [INFO] [stdout] | [INFO] [stdout] 1820 | 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: the function `update_head` doesn't need a mutable reference [INFO] [stdout] --> src/pipe.rs:173:22 [INFO] [stdout] | [INFO] [stdout] 173 | 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] = note: `#[warn(clippy::unnecessary_mut_passed)]` on by default [INFO] [stdout] help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] 173 - update_head(&head, &mut ctx.batch)?; [INFO] [stdout] 173 + update_head(&head, &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:207:30 [INFO] [stdout] | [INFO] [stdout] 207 | 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:208:32 [INFO] [stdout] | [INFO] [stdout] 208 | 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:219:37 [INFO] [stdout] | [INFO] [stdout] 219 | 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:247:50 [INFO] [stdout] | [INFO] [stdout] 247 | 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:267:30 [INFO] [stdout] | [INFO] [stdout] 267 | 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: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/txhashset/bitmap_accumulator.rs:190:23 [INFO] [stdout] | [INFO] [stdout] 190 | 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] 190 | pub fn readonly_pmmr(&self) -> ReadonlyPMMR<'_, BitmapChunk, VecBackend> { [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:271:21 [INFO] [stdout] | [INFO] [stdout] 271 | 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:281:49 [INFO] [stdout] | [INFO] [stdout] 281 | 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] 281 - update_header_head(&Tip::from_header(header), &mut ctx.batch)?; [INFO] [stdout] 281 + update_header_head(&Tip::from_header(header), &ctx.batch)?; [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:390:3 [INFO] [stdout] | [INFO] [stdout] 390 | &self, [INFO] [stdout] | ^^^^^ the lifetime is elided here [INFO] [stdout] 391 | header: &BlockHeader, [INFO] [stdout] 392 | ) -> 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] 392 | ) -> 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:398:3 [INFO] [stdout] | [INFO] [stdout] 398 | &self, [INFO] [stdout] | ^^^^^ the lifetime is elided here [INFO] [stdout] 399 | header: &BlockHeader, [INFO] [stdout] 400 | ) -> 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] 400 | ) -> 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:406:3 [INFO] [stdout] | [INFO] [stdout] 406 | &self, [INFO] [stdout] | ^^^^^ the lifetime is elided here [INFO] [stdout] 407 | header: &BlockHeader, [INFO] [stdout] 408 | ) -> 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] 408 | ) -> ReadonlyPMMR<'_, RangeProof, PMMRBackend> { [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:328:39 [INFO] [stdout] | [INFO] [stdout] 328 | 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:355:3 [INFO] [stdout] | [INFO] [stdout] 355 | / return Err(Error::Block(block::Error::Other( [INFO] [stdout] 356 | | "header hash denied".into(), [INFO] [stdout] 357 | | ))); [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] 355 ~ Err(Error::Block(block::Error::Other( [INFO] [stdout] 356 ~ "header hash denied".into(), [INFO] [stdout] 357 ~ ))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/pipe.rs:359:3 [INFO] [stdout] | [INFO] [stdout] 359 | 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] 359 - return Ok(()); [INFO] [stdout] 359 + Ok(()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/txhashset/txhashset.rs:1203:3 [INFO] [stdout] | [INFO] [stdout] 1203 | &self, [INFO] [stdout] | ^^^^^ the lifetime is elided here [INFO] [stdout] 1204 | ) -> 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] 1204 | ) -> 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:1214:30 [INFO] [stdout] | [INFO] [stdout] 1214 | pub fn bitmap_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] 1214 | pub fn bitmap_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/txhashset.rs:1219:30 [INFO] [stdout] | [INFO] [stdout] 1219 | 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] 1219 | pub fn rproof_readonly_pmmr(&self) -> ReadonlyPMMR<'_, RangeProof, PMMRBackend> { [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:548:21 [INFO] [stdout] | [INFO] [stdout] 548 | .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:561:19 [INFO] [stdout] | [INFO] [stdout] 561 | .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: you should consider adding a `Default` implementation for `BitmapAccumulator` [INFO] [stdout] --> src/txhashset/bitmap_accumulator.rs:56:2 [INFO] [stdout] | [INFO] [stdout] 56 | / pub fn new() -> BitmapAccumulator { [INFO] [stdout] 57 | | BitmapAccumulator { [INFO] [stdout] 58 | | backend: VecBackend::new(), [INFO] [stdout] 59 | | } [INFO] [stdout] 60 | | } [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] 52 + impl Default for BitmapAccumulator { [INFO] [stdout] 53 + fn default() -> Self { [INFO] [stdout] 54 + Self::new() [INFO] [stdout] 55 + } [INFO] [stdout] 56 + } [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:199:38 [INFO] [stdout] | [INFO] [stdout] 199 | 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:217:2 [INFO] [stdout] | [INFO] [stdout] 217 | / pub fn new() -> BitmapChunk { [INFO] [stdout] 218 | | BitmapChunk(BitVec::from_elem(Self::LEN_BITS, false)) [INFO] [stdout] 219 | | } [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] 212 + impl Default for BitmapChunk { [INFO] [stdout] 213 + fn default() -> Self { [INFO] [stdout] 214 + Self::new() [INFO] [stdout] 215 + } [INFO] [stdout] 216 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty doc comment [INFO] [stdout] --> src/txhashset/bitmap_accumulator.rs:275:1 [INFO] [stdout] | [INFO] [stdout] 275 | /// [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: manually reimplementing `div_ceil` [INFO] [stdout] --> src/txhashset/bitmap_accumulator.rs:321:23 [INFO] [stdout] | [INFO] [stdout] 321 | 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: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/txhashset/bitmap_accumulator.rs:532:31 [INFO] [stdout] | [INFO] [stdout] 532 | 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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/txhashset/desegmenter.rs:225:32 [INFO] [stdout] | [INFO] [stdout] 225 | extension.update_leaf_sets(&b)?; [INFO] [stdout] | ^^ help: change this to: `b` [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: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/txhashset/desegmenter.rs:261:9 [INFO] [stdout] | [INFO] [stdout] 261 | if current.height % 100000 == 0 || current.height == total { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `current.height.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: binary comparison to literal `Option::None` [INFO] [stdout] --> src/txhashset/desegmenter.rs:398:7 [INFO] [stdout] | [INFO] [stdout] 398 | if self.bitmap_cache == None { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `Option::is_none()` instead: `self.bitmap_cache.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] = note: `#[warn(clippy::partialeq_to_none)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> src/txhashset/desegmenter.rs:490:4 [INFO] [stdout] | [INFO] [stdout] 490 | while let Some(id) = identifier_iter.next() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for id in identifier_iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stdout] = note: `#[warn(clippy::while_let_on_iterator)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/txhashset/desegmenter.rs:491:5 [INFO] [stdout] | [INFO] [stdout] 491 | / if id.segment_pos_range(self.bitmap_mmr_size).1 > local_pmmr_size { [INFO] [stdout] 492 | | if !self.has_bitmap_segment_with_id(id) { [INFO] [stdout] 493 | | return_vec.push(SegmentTypeIdentifier::new(SegmentType::Bitmap, id)); [INFO] [stdout] 494 | | if return_vec.len() >= max_elements { [INFO] [stdout] ... | [INFO] [stdout] 498 | | } [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] 491 ~ if id.segment_pos_range(self.bitmap_mmr_size).1 > local_pmmr_size [INFO] [stdout] 492 ~ && !self.has_bitmap_segment_with_id(id) { [INFO] [stdout] 493 | return_vec.push(SegmentTypeIdentifier::new(SegmentType::Bitmap, id)); [INFO] [stdout] ... [INFO] [stdout] 496 | } [INFO] [stdout] 497 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manually reimplementing `div_ceil` [INFO] [stdout] --> src/txhashset/desegmenter.rs:651:4 [INFO] [stdout] | [INFO] [stdout] 651 | (pmmr::n_leaves(self.archive_header.output_mmr_size) + 1023) / 1024; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `pmmr::n_leaves(self.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:658:8 [INFO] [stdout] | [INFO] [stdout] 658 | 1 + pmmr::peaks(pmmr::insertion_to_pmmr_index(self.bitmap_mmr_leaf_count)) [INFO] [stdout] | _________________^ [INFO] [stdout] 659 | | .last() [INFO] [stdout] 660 | | .unwrap_or( [INFO] [stdout] 661 | | &(pmmr::peaks(pmmr::insertion_to_pmmr_index( [INFO] [stdout] ... | [INFO] [stdout] 667 | | .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] 658 ~ 1 + *pmmr::peaks(pmmr::insertion_to_pmmr_index(self.bitmap_mmr_leaf_count)) [INFO] [stdout] 659 ~ .last() [INFO] [stdout] 660 ~ .unwrap_or( [INFO] [stdout] 661 ~ &(pmmr::peaks(pmmr::insertion_to_pmmr_index( [INFO] [stdout] 662 ~ self.bitmap_mmr_leaf_count - 1, [INFO] [stdout] 663 ~ )) [INFO] [stdout] 664 ~ .last() [INFO] [stdout] 665 ~ .unwrap()), [INFO] [stdout] 666 ~ ); [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:661:6 [INFO] [stdout] | [INFO] [stdout] 661 | / &(pmmr::peaks(pmmr::insertion_to_pmmr_index( [INFO] [stdout] 662 | | self.bitmap_mmr_leaf_count - 1, [INFO] [stdout] 663 | | )) [INFO] [stdout] 664 | | .last() [INFO] [stdout] 665 | | .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] 661 ~ (pmmr::peaks(pmmr::insertion_to_pmmr_index( [INFO] [stdout] 662 ~ self.bitmap_mmr_leaf_count - 1, [INFO] [stdout] 663 ~ )) [INFO] [stdout] 664 ~ .last() [INFO] [stdout] 665 ~ .unwrap()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/txhashset/rewindable_kernel_view.rs:43:13 [INFO] [stdout] | [INFO] [stdout] 43 | .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: useless conversion to the same type: `error::Error` [INFO] [stdout] --> src/txhashset/rewindable_kernel_view.rs:62:15 [INFO] [stdout] | [INFO] [stdout] 62 | return Err(Error::InvalidTxHashSet(format!( [INFO] [stdout] | ________________________^ [INFO] [stdout] 63 | | "Kernel root at {} does not match", [INFO] [stdout] 64 | | self.header.height [INFO] [stdout] 65 | | )) [INFO] [stdout] 66 | | .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] 62 ~ return Err(Error::InvalidTxHashSet(format!( [INFO] [stdout] 63 ~ "Kernel root at {} does not match", [INFO] [stdout] 64 ~ self.header.height [INFO] [stdout] 65 ~ ))); [INFO] [stdout] | [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: the borrowed expression implements the required traits [INFO] [stdout] --> src/txhashset/segmenter.rs:84:34 [INFO] [stdout] | [INFO] [stdout] 84 | 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: module has the same name as its containing module [INFO] [stdout] --> src/txhashset.rs:22:1 [INFO] [stdout] | [INFO] [stdout] 22 | 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:89:13 [INFO] [stdout] | [INFO] [stdout] 89 | 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:93:1 [INFO] [stdout] | [INFO] [stdout] 93 | / impl PartialOrd for OrderedHashLeafNode { [INFO] [stdout] 94 | | fn partial_cmp(&self, other: &Self) -> Option { [INFO] [stdout] 95 | | let a_val = match self { [INFO] [stdout] 96 | | OrderedHashLeafNode::Hash(_, pos0) => pos0, [INFO] [stdout] ... | [INFO] [stdout] 105 | | } [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] 94 - fn partial_cmp(&self, other: &Self) -> Option { [INFO] [stdout] 95 - let a_val = match self { [INFO] [stdout] 96 - OrderedHashLeafNode::Hash(_, pos0) => pos0, [INFO] [stdout] 97 - OrderedHashLeafNode::Leaf(_, pos0) => pos0, [INFO] [stdout] 98 - }; [INFO] [stdout] 99 - let b_val = match other { [INFO] [stdout] 100 - OrderedHashLeafNode::Hash(_, pos0) => pos0, [INFO] [stdout] 101 - OrderedHashLeafNode::Leaf(_, pos0) => pos0, [INFO] [stdout] 102 - }; [INFO] [stdout] 103 - Some(a_val.cmp(b_val)) [INFO] [stdout] 104 - } [INFO] [stdout] 94 + fn partial_cmp(&self, other: &Self) -> Option { Some(self.cmp(other)) } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/txhashset/txhashset.rs:330:27 [INFO] [stdout] | [INFO] [stdout] 330 | 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:414:41 [INFO] [stdout] | [INFO] [stdout] 414 | 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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/txhashset/txhashset.rs:499:39 [INFO] [stdout] | [INFO] [stdout] 499 | 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:520:43 [INFO] [stdout] | [INFO] [stdout] 520 | 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:570:48 [INFO] [stdout] | [INFO] [stdout] 570 | 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:591:6 [INFO] [stdout] | [INFO] [stdout] 591 | / match kernel.features { [INFO] [stdout] 592 | | KernelFeatures::NoRecentDuplicate { .. } => { [INFO] [stdout] 593 | | while current_pos > current_header.kernel_mmr_size { [INFO] [stdout] 594 | | let hash = header_pmmr [INFO] [stdout] ... | [INFO] [stdout] 605 | | _ => {} [INFO] [stdout] 606 | | } [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] 591 ~ if let KernelFeatures::NoRecentDuplicate { .. } = kernel.features { [INFO] [stdout] 592 ~ while current_pos > current_header.kernel_mmr_size { [INFO] [stdout] 593 ~ let hash = header_pmmr [INFO] [stdout] 594 ~ .get_header_hash_by_height(current_header.height + 1)?; [INFO] [stdout] 595 ~ current_header = batch.get_block_header(&hash)?; [INFO] [stdout] 596 ~ } [INFO] [stdout] 597 ~ let new_pos = CommitPos { [INFO] [stdout] 598 ~ pos: current_pos, [INFO] [stdout] 599 ~ height: current_header.height, [INFO] [stdout] 600 ~ }; [INFO] [stdout] 601 ~ apply_kernel_rules(&kernel, new_pos, batch)?; [INFO] [stdout] 602 ~ count += 1; [INFO] [stdout] 603 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/txhashset/txhashset.rs:904:34 [INFO] [stdout] | [INFO] [stdout] 904 | pub fn header_extending_readonly<'a, F, T>( [INFO] [stdout] | ^^ [INFO] [stdout] 905 | 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] = note: `#[warn(clippy::needless_lifetimes)]` on by default [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 904 ~ pub fn header_extending_readonly( [INFO] [stdout] 905 ~ 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:1015:3 [INFO] [stdout] | [INFO] [stdout] 1015 | 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: the borrowed expression implements the required traits [INFO] [stdout] --> src/txhashset/txhashset.rs:1064:34 [INFO] [stdout] | [INFO] [stdout] 1064 | self.pmmr.push(header).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:1083:13 [INFO] [stdout] | [INFO] [stdout] 1083 | .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: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/txhashset/txhashset.rs:1098:3 [INFO] [stdout] | [INFO] [stdout] 1098 | Ok(self.pmmr.root().map_err(|_| Error::InvalidRoot)?) [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] 1098 - Ok(self.pmmr.root().map_err(|_| Error::InvalidRoot)?) [INFO] [stdout] 1098 + self.pmmr.root().map_err(|_| Error::InvalidRoot) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `unwrap_or` to construct default value [INFO] [stdout] --> src/txhashset/txhashset.rs:1181:6 [INFO] [stdout] | [INFO] [stdout] 1181 | .unwrap_or(Bitmap::new()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] = note: `#[warn(clippy::unwrap_or_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Tip` which implements the `Copy` trait [INFO] [stdout] --> src/txhashset/txhashset.rs:1188:3 [INFO] [stdout] | [INFO] [stdout] 1188 | 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: use of `unwrap_or` to construct default value [INFO] [stdout] --> src/txhashset/txhashset.rs:1305:59 [INFO] [stdout] | [INFO] [stdout] 1305 | self.bitmap_cache = self.bitmap_accumulator.as_bitmap().unwrap_or(Bitmap::new()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/txhashset/txhashset.rs:1337:13 [INFO] [stdout] | [INFO] [stdout] 1337 | .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:1343:13 [INFO] [stdout] | [INFO] [stdout] 1343 | .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:1421:18 [INFO] [stdout] | [INFO] [stdout] 1421 | ... .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:1425:17 [INFO] [stdout] | [INFO] [stdout] 1425 | ... .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:1432:17 [INFO] [stdout] | [INFO] [stdout] 1432 | ... .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:1437:8 [INFO] [stdout] | [INFO] [stdout] 1437 | / ... if !self.bitmap_cache.contains(i as u32) { [INFO] [stdout] 1438 | | ... self.output_pmmr.remove_from_leaf_set(pos0); [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] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 1436 ~ Some(i) [INFO] [stdout] 1437 ~ if !self.bitmap_cache.contains(i as u32) => { [INFO] [stdout] 1438 | self.output_pmmr.remove_from_leaf_set(pos0); [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:1435:6 [INFO] [stdout] | [INFO] [stdout] 1435 | / match pmmr_index { [INFO] [stdout] 1436 | | Some(i) => { [INFO] [stdout] 1437 | | if !self.bitmap_cache.contains(i as u32) { [INFO] [stdout] 1438 | | self.output_pmmr.remove_from_leaf_set(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] 1435 ~ if let Some(i) = pmmr_index { [INFO] [stdout] 1436 ~ if !self.bitmap_cache.contains(i as u32) { [INFO] [stdout] 1437 ~ self.output_pmmr.remove_from_leaf_set(pos0); [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:1465:18 [INFO] [stdout] | [INFO] [stdout] 1465 | ... .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:1469:17 [INFO] [stdout] | [INFO] [stdout] 1469 | ... .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:1476:17 [INFO] [stdout] | [INFO] [stdout] 1476 | ... .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:1481:8 [INFO] [stdout] | [INFO] [stdout] 1481 | / ... if !self.bitmap_cache.contains(i as u32) { [INFO] [stdout] 1482 | | ... self.rproof_pmmr.remove_from_leaf_set(pos0); [INFO] [stdout] 1483 | | ... } [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] 1480 ~ Some(i) [INFO] [stdout] 1481 ~ if !self.bitmap_cache.contains(i as u32) => { [INFO] [stdout] 1482 | self.rproof_pmmr.remove_from_leaf_set(pos0); [INFO] [stdout] 1483 ~ } [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:1479:6 [INFO] [stdout] | [INFO] [stdout] 1479 | / match pmmr_index { [INFO] [stdout] 1480 | | Some(i) => { [INFO] [stdout] 1481 | | if !self.bitmap_cache.contains(i as u32) { [INFO] [stdout] 1482 | | self.rproof_pmmr.remove_from_leaf_set(pos0); [INFO] [stdout] ... | [INFO] [stdout] 1485 | | None => {} [INFO] [stdout] 1486 | | }; [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] 1479 ~ if let Some(i) = pmmr_index { [INFO] [stdout] 1480 ~ if !self.bitmap_cache.contains(i as u32) { [INFO] [stdout] 1481 ~ self.rproof_pmmr.remove_from_leaf_set(pos0); [INFO] [stdout] 1482 ~ } [INFO] [stdout] 1483 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `error::Error` [INFO] [stdout] --> src/txhashset/txhashset.rs:1519:17 [INFO] [stdout] | [INFO] [stdout] 1519 | return Err(Error::InvalidSegment( [INFO] [stdout] | ________________________________^ [INFO] [stdout] 1520 | | "Kernel PMMR is non-prunable, should not have hash data".to_string(), [INFO] [stdout] 1521 | | ) [INFO] [stdout] 1522 | | .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] 1519 ~ return Err(Error::InvalidSegment( [INFO] [stdout] 1520 ~ "Kernel PMMR is non-prunable, should not have hash data".to_string(), [INFO] [stdout] 1521 ~ )); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/txhashset/txhashset.rs:1528:17 [INFO] [stdout] | [INFO] [stdout] 1528 | ... .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:1541:13 [INFO] [stdout] | [INFO] [stdout] 1541 | .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:1562:13 [INFO] [stdout] | [INFO] [stdout] 1562 | .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/txhashset/txhashset.rs:1627:47 [INFO] [stdout] | [INFO] [stdout] 1627 | 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: the borrowed expression implements the required traits [INFO] [stdout] --> src/txhashset/txhashset.rs:1710:13 [INFO] [stdout] | [INFO] [stdout] 1710 | .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:1713:13 [INFO] [stdout] | [INFO] [stdout] 1713 | .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:1716:13 [INFO] [stdout] | [INFO] [stdout] 1716 | .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 function has too many arguments (8/7) [INFO] [stdout] --> src/txhashset/txhashset.rs:1810:2 [INFO] [stdout] | [INFO] [stdout] 1810 | / pub fn validate( [INFO] [stdout] 1811 | | &self, [INFO] [stdout] 1812 | | genesis: &BlockHeader, [INFO] [stdout] 1813 | | fast_validation: bool, [INFO] [stdout] ... | [INFO] [stdout] 1818 | | stop_state: Option>, [INFO] [stdout] 1819 | | ) -> Result<(Commitment, Commitment), Error> { [INFO] [stdout] | |________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `error::Error` [INFO] [stdout] --> src/txhashset/txhashset.rs:1845:17 [INFO] [stdout] | [INFO] [stdout] 1845 | 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:1853:17 [INFO] [stdout] | [INFO] [stdout] 1853 | 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: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/txhashset/txhashset.rs:1911:18 [INFO] [stdout] | [INFO] [stdout] 1911 | let kernel = self [INFO] [stdout] | ______________________________^ [INFO] [stdout] 1912 | | .kernel_pmmr [INFO] [stdout] 1913 | | .get_data(n) [INFO] [stdout] 1914 | | .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] 1914 - .ok_or_else(|| Error::TxKernelNotFound)?; [INFO] [stdout] 1914 + .ok_or(Error::TxKernelNotFound)?; [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:2037:71 [INFO] [stdout] | [INFO] [stdout] 2037 | 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:2072:17 [INFO] [stdout] | [INFO] [stdout] 2072 | 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:2175:41 [INFO] [stdout] | [INFO] [stdout] 2175 | 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] 2175 ~ pub fn clean_txhashset_folder(root_dir: &Path) { [INFO] [stdout] 2176 ~ 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:2213:2 [INFO] [stdout] | [INFO] [stdout] 2213 | / match kernel.features { [INFO] [stdout] 2214 | | KernelFeatures::NoRecentDuplicate { [INFO] [stdout] 2215 | | relative_height, .. [INFO] [stdout] 2216 | | } => { [INFO] [stdout] ... | [INFO] [stdout] 2236 | | _ => {} [INFO] [stdout] 2237 | | } [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] 2213 ~ if let KernelFeatures::NoRecentDuplicate { [INFO] [stdout] 2214 ~ relative_height, .. [INFO] [stdout] 2215 ~ } = kernel.features { [INFO] [stdout] 2216 ~ let kernel_index = store::nrd_recent_kernel_index(); [INFO] [stdout] 2217 ~ debug!("checking NRD index: {:?}", kernel.excess()); [INFO] [stdout] 2218 ~ if let Some(prev) = kernel_index.peek_pos(batch, kernel.excess())? { [INFO] [stdout] 2219 ~ let diff = pos.height.saturating_sub(prev.height); [INFO] [stdout] 2220 ~ debug!( [INFO] [stdout] 2221 ~ "NRD check: {}, {:?}, {:?}", [INFO] [stdout] 2222 ~ pos.height, prev, relative_height [INFO] [stdout] 2223 ~ ); [INFO] [stdout] 2224 ~ if diff < relative_height.into() { [INFO] [stdout] 2225 ~ return Err(Error::NRDRelativeHeight); [INFO] [stdout] 2226 ~ } [INFO] [stdout] 2227 ~ } [INFO] [stdout] 2228 ~ debug!( [INFO] [stdout] 2229 ~ "pushing entry to NRD index: {:?}: {:?}", [INFO] [stdout] 2230 ~ kernel.excess(), [INFO] [stdout] 2231 ~ pos, [INFO] [stdout] 2232 ~ ); [INFO] [stdout] 2233 ~ kernel_index.push_pos(batch, kernel.excess(), pos)?; [INFO] [stdout] 2234 ~ } [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:89:7 [INFO] [stdout] | [INFO] [stdout] 89 | / self.validate_input(input.commitment(), batch) [INFO] [stdout] 90 | | .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:189:2 [INFO] [stdout] | [INFO] [stdout] 189 | / pub fn new() -> SyncState { [INFO] [stdout] 190 | | SyncState { [INFO] [stdout] 191 | | current: RwLock::new(SyncStatus::Initial), [INFO] [stdout] 192 | | sync_error: RwLock::new(None), [INFO] [stdout] ... | [INFO] [stdout] 195 | | } [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] 187 + impl Default for SyncState { [INFO] [stdout] 188 + fn default() -> Self { [INFO] [stdout] 189 + Self::new() [INFO] [stdout] 190 + } [INFO] [stdout] 191 + } [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/types.rs:250:3 [INFO] [stdout] | [INFO] [stdout] 250 | / match status { [INFO] [stdout] 251 | | SyncStatus::HeaderSync { sync_head, .. } => { [INFO] [stdout] 252 | | *sync_head = new_sync_head; [INFO] [stdout] ... | [INFO] [stdout] 255 | | } [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] 250 ~ if let SyncStatus::HeaderSync { sync_head, .. } = status { [INFO] [stdout] 251 ~ *sync_head = new_sync_head; [INFO] [stdout] 252 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/types.rs:546:28 [INFO] [stdout] | [INFO] [stdout] 546 | 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:547:28 [INFO] [stdout] | [INFO] [stdout] 547 | 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:650:3 [INFO] [stdout] | [INFO] [stdout] 650 | / match *self { [INFO] [stdout] 651 | | BlockStatus::Next { .. } => true, [INFO] [stdout] 652 | | _ => false, [INFO] [stdout] 653 | | } [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] 650 - match *self { [INFO] [stdout] 651 - BlockStatus::Next { .. } => true, [INFO] [stdout] 652 - _ => false, [INFO] [stdout] 653 - } [INFO] [stdout] 650 + matches!(*self, BlockStatus::Next { .. }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/types.rs:658:3 [INFO] [stdout] | [INFO] [stdout] 658 | / match *self { [INFO] [stdout] 659 | | BlockStatus::Reorg { .. } => true, [INFO] [stdout] 660 | | _ => false, [INFO] [stdout] 661 | | } [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] 658 - match *self { [INFO] [stdout] 659 - BlockStatus::Reorg { .. } => true, [INFO] [stdout] 660 - _ => false, [INFO] [stdout] 661 - } [INFO] [stdout] 658 + matches!(*self, BlockStatus::Reorg { .. }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/chain.rs:1820:44 [INFO] [stdout] | [INFO] [stdout] 1820 | 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:190:23 [INFO] [stdout] | [INFO] [stdout] 190 | 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] 190 | 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:390:3 [INFO] [stdout] | [INFO] [stdout] 390 | &self, [INFO] [stdout] | ^^^^^ the lifetime is elided here [INFO] [stdout] 391 | header: &BlockHeader, [INFO] [stdout] 392 | ) -> 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] 392 | ) -> 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:398:3 [INFO] [stdout] | [INFO] [stdout] 398 | &self, [INFO] [stdout] | ^^^^^ the lifetime is elided here [INFO] [stdout] 399 | header: &BlockHeader, [INFO] [stdout] 400 | ) -> 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] 400 | ) -> 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:406:3 [INFO] [stdout] | [INFO] [stdout] 406 | &self, [INFO] [stdout] | ^^^^^ the lifetime is elided here [INFO] [stdout] 407 | header: &BlockHeader, [INFO] [stdout] 408 | ) -> 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] 408 | ) -> 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:1203:3 [INFO] [stdout] | [INFO] [stdout] 1203 | &self, [INFO] [stdout] | ^^^^^ the lifetime is elided here [INFO] [stdout] 1204 | ) -> 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] 1204 | ) -> 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:1214:30 [INFO] [stdout] | [INFO] [stdout] 1214 | pub fn bitmap_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] 1214 | pub fn bitmap_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/txhashset.rs:1219:30 [INFO] [stdout] | [INFO] [stdout] 1219 | 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] 1219 | pub fn rproof_readonly_pmmr(&self) -> ReadonlyPMMR<'_, RangeProof, PMMRBackend> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> tests/store_kernel_pos_index.rs:22:1 [INFO] [stdout] | [INFO] [stdout] 22 | use grin_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: useless use of `format!` [INFO] [stdout] --> tests/test_header_perf.rs:114:21 [INFO] [stdout] | [INFO] [stdout] 114 | let src_root_dir = format!("/Users/yeastplume/Projects/grin_project/server/chain_data"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"/Users/yeastplume/Projects/grin_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:115:22 [INFO] [stdout] | [INFO] [stdout] 115 | let dest_root_dir = format!("/Users/yeastplume/Projects/grin_project/server/.chain_data_copy"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"/Users/yeastplume/Projects/grin_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: this call to `clone` can be replaced with `std::slice::from_ref` [INFO] [stdout] --> tests/test_coinbase_maturity.rs:108:13 [INFO] [stdout] | [INFO] [stdout] 108 | 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:194:14 [INFO] [stdout] | [INFO] [stdout] 194 | 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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> tests/nrd_validation_rules.rs:111:36 [INFO] [stdout] | [INFO] [stdout] 111 | let excess = BlindingFactor::rand(&keychain.secp()); [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:112:31 [INFO] [stdout] | [INFO] [stdout] 112 | let skey = excess.secret_key(&keychain.secp()).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:114:40 [INFO] [stdout] | [INFO] [stdout] 114 | let pubkey = &kernel.excess.to_pubkey(&keychain.secp()).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:116:30 [INFO] [stdout] | [INFO] [stdout] 116 | 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:116:68 [INFO] [stdout] | [INFO] [stdout] 116 | 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:128:3 [INFO] [stdout] | [INFO] [stdout] 128 | 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:140:3 [INFO] [stdout] | [INFO] [stdout] 140 | 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:227:36 [INFO] [stdout] | [INFO] [stdout] 227 | let excess = BlindingFactor::rand(&keychain.secp()); [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:228:31 [INFO] [stdout] | [INFO] [stdout] 228 | let skey = excess.secret_key(&keychain.secp()).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:230:40 [INFO] [stdout] | [INFO] [stdout] 230 | let pubkey = &kernel.excess.to_pubkey(&keychain.secp()).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:232:30 [INFO] [stdout] | [INFO] [stdout] 232 | 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:232:68 [INFO] [stdout] | [INFO] [stdout] 232 | 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:244:3 [INFO] [stdout] | [INFO] [stdout] 244 | 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:256:3 [INFO] [stdout] | [INFO] [stdout] 256 | 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 call to `clone` can be replaced with `std::slice::from_ref` [INFO] [stdout] --> tests/process_block_cut_through.rs:144:45 [INFO] [stdout] | [INFO] [stdout] 144 | 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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> tests/nrd_validation_rules.rs:326:36 [INFO] [stdout] | [INFO] [stdout] 326 | let excess = BlindingFactor::rand(&keychain.secp()); [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:327:31 [INFO] [stdout] | [INFO] [stdout] 327 | let skey = excess.secret_key(&keychain.secp()).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:329:40 [INFO] [stdout] | [INFO] [stdout] 329 | let pubkey = &kernel.excess.to_pubkey(&keychain.secp()).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:331:30 [INFO] [stdout] | [INFO] [stdout] 331 | 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:331:68 [INFO] [stdout] | [INFO] [stdout] 331 | 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:343:3 [INFO] [stdout] | [INFO] [stdout] 343 | 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:355:3 [INFO] [stdout] | [INFO] [stdout] 355 | 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: useless use of `format!` [INFO] [stdout] --> tests/test_txhashset.rs:38:16 [INFO] [stdout] | [INFO] [stdout] 38 | let db_root = format!(".grin_txhashset_zip"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `".grin_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:49:15 [INFO] [stdout] | [INFO] [stdout] 49 | 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:55:68 [INFO] [stdout] | [INFO] [stdout] 55 | 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:58:16 [INFO] [stdout] | [INFO] [stdout] 58 | 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:61:4 [INFO] [stdout] | [INFO] [stdout] 61 | / &Path::new(&db_root) [INFO] [stdout] 62 | | .join("txhashset") [INFO] [stdout] 63 | | .join("output") [INFO] [stdout] 64 | | .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] 61 ~ Path::new(&db_root) [INFO] [stdout] 62 ~ .join("txhashset") [INFO] [stdout] 63 ~ .join("output") [INFO] [stdout] 64 ~ .join("badfile"), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> tests/test_txhashset.rs:84:10 [INFO] [stdout] | [INFO] [stdout] 84 | .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:90:68 [INFO] [stdout] | [INFO] [stdout] 90 | 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:111:10 [INFO] [stdout] | [INFO] [stdout] 111 | .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: using `clone` on type `u64` which implements the `Copy` trait [INFO] [stdout] --> tests/test_pibd_validation.rs:90:26 [INFO] [stdout] | [INFO] [stdout] 90 | let bitmap_pmmr_size = pmmr::peaks(bitmap_mmr_num_leaves) [INFO] [stdout] | ________________________________^ [INFO] [stdout] 91 | | .last() [INFO] [stdout] 92 | | .unwrap_or(&pmmr::insertion_to_pmmr_index(bitmap_mmr_num_leaves)) [INFO] [stdout] 93 | | .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] 90 ~ let bitmap_pmmr_size = *pmmr::peaks(bitmap_mmr_num_leaves) [INFO] [stdout] 91 ~ .last() [INFO] [stdout] 92 ~ .unwrap_or(&pmmr::insertion_to_pmmr_index(bitmap_mmr_num_leaves)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> tests/mine_simple_chain.rs:73:2 [INFO] [stdout] | [INFO] [stdout] 64 | / let chain = chain::Chain::init( [INFO] [stdout] 65 | | dir_name.to_string(), [INFO] [stdout] 66 | | adapter, [INFO] [stdout] 67 | | genesis, [INFO] [stdout] ... | [INFO] [stdout] 71 | | .unwrap(); [INFO] [stdout] | |______________- unnecessary `let` binding [INFO] [stdout] 72 | [INFO] [stdout] 73 | 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] 64 ~ [INFO] [stdout] 65 | [INFO] [stdout] 66 ~ chain::Chain::init( [INFO] [stdout] 67 ~ dir_name.to_string(), [INFO] [stdout] 68 ~ adapter, [INFO] [stdout] 69 ~ genesis, [INFO] [stdout] 70 ~ pow::verify_size, [INFO] [stdout] 71 ~ false, [INFO] [stdout] 72 ~ ) [INFO] [stdout] 73 ~ .unwrap() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> tests/test_pibd_validation.rs:223:21 [INFO] [stdout] | [INFO] [stdout] 223 | 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:225:21 [INFO] [stdout] | [INFO] [stdout] 225 | 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:235:21 [INFO] [stdout] | [INFO] [stdout] 235 | let src_root_dir = format!("/Users/yeastplume/Projects/grin_project/server/chain_data"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"/Users/yeastplume/Projects/grin_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] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u64` -> `u64`) [INFO] [stdout] --> tests/mine_simple_chain.rs:433:28 [INFO] [stdout] | [INFO] [stdout] 433 | 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:446:28 [INFO] [stdout] | [INFO] [stdout] 446 | 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:585:51 [INFO] [stdout] | [INFO] [stdout] 585 | 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:658:59 [INFO] [stdout] | [INFO] [stdout] 658 | 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:676:59 [INFO] [stdout] | [INFO] [stdout] 676 | 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:684:59 [INFO] [stdout] | [INFO] [stdout] 684 | 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:688:64 [INFO] [stdout] | [INFO] [stdout] 688 | 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:778:24 [INFO] [stdout] | [INFO] [stdout] 778 | 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:918:54 [INFO] [stdout] | [INFO] [stdout] 918 | 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] [stdout] warning: using `clone` on type `SegmentIdentifier` which implements the `Copy` trait [INFO] [stdout] --> tests/test_pibd_copy.rs:209:41 [INFO] [stdout] | [INFO] [stdout] 209 | 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] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `SegmentIdentifier` which implements the `Copy` trait [INFO] [stdout] --> tests/test_pibd_copy.rs:216:41 [INFO] [stdout] | [INFO] [stdout] 216 | 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:224:31 [INFO] [stdout] | [INFO] [stdout] 224 | .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:230:50 [INFO] [stdout] | [INFO] [stdout] 230 | 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: useless use of `format!` [INFO] [stdout] --> tests/test_pibd_copy.rs:308:21 [INFO] [stdout] | [INFO] [stdout] 308 | 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_copy.rs:309:22 [INFO] [stdout] | [INFO] [stdout] 309 | let dest_root_dir = format!("./tests/test_output/.segment_copy"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"./tests/test_output/.segment_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:312:21 [INFO] [stdout] | [INFO] [stdout] 312 | 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_copy.rs:330:21 [INFO] [stdout] | [INFO] [stdout] 330 | let src_root_dir = format!("/home/yeastplume/Projects/grin-project/servers/floo-1/chain_data"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"/home/yeastplume/Projects/grin-project/servers/floo-1/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:331:26 [INFO] [stdout] | [INFO] [stdout] 331 | let dest_template_dir = format!( [INFO] [stdout] | _____________________________^ [INFO] [stdout] 332 | | "/home/yeastplume/Projects/grin-project/servers/floo-pibd-1/chain_data_headers_only" [INFO] [stdout] 333 | | ); [INFO] [stdout] | |_____^ help: consider using `.to_string()`: `"/home/yeastplume/Projects/grin-project/servers/floo-pibd-1/chain_data_headers_only".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:335:3 [INFO] [stdout] | [INFO] [stdout] 335 | format!("/home/yeastplume/Projects/grin-project/servers/floo-pibd-1/chain_data_test_copy"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"/home/yeastplume/Projects/grin-project/servers/floo-pibd-1/chain_data_test_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] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 38.71s [INFO] running `Command { std: "docker" "inspect" "d9328213e7b3f22240ef748078030f89c3b6a81a75218f944929e1a96fd76460", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "d9328213e7b3f22240ef748078030f89c3b6a81a75218f944929e1a96fd76460", kill_on_drop: false }` [INFO] [stdout] d9328213e7b3f22240ef748078030f89c3b6a81a75218f944929e1a96fd76460