[INFO] crate grin_chain 0.4.2 is already in cache [INFO] extracting crate grin_chain 0.4.2 into work/ex/clippy-test-run/sources/stable/reg/grin_chain/0.4.2 [INFO] extracting crate grin_chain 0.4.2 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/grin_chain/0.4.2 [INFO] validating manifest of grin_chain-0.4.2 on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of grin_chain-0.4.2 on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing grin_chain-0.4.2 [INFO] finished frobbing grin_chain-0.4.2 [INFO] frobbed toml for grin_chain-0.4.2 written to work/ex/clippy-test-run/sources/stable/reg/grin_chain/0.4.2/Cargo.toml [INFO] started frobbing grin_chain-0.4.2 [INFO] finished frobbing grin_chain-0.4.2 [INFO] frobbed toml for grin_chain-0.4.2 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/grin_chain/0.4.2/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting grin_chain-0.4.2 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-5/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/grin_chain/0.4.2:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 775a8a1f250f2e082a4eff46c50789c4ed897b472147a42d00c9e5863450f9e5 [INFO] running `"docker" "start" "-a" "775a8a1f250f2e082a4eff46c50789c4ed897b472147a42d00c9e5863450f9e5"` [INFO] [stderr] Checking grin_store v0.4.2 [INFO] [stderr] Checking grin_chain v0.4.2 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/chain.rs:210:4 [INFO] [stderr] | [INFO] [stderr] 210 | db_root: db_root, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `db_root` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/chain.rs:211:4 [INFO] [stderr] | [INFO] [stderr] 211 | store: store, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `store` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/chain.rs:212:4 [INFO] [stderr] | [INFO] [stderr] 212 | adapter: adapter, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `adapter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/chain.rs:285:7 [INFO] [stderr] | [INFO] [stderr] 285 | opts: opts, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `opts` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/error.rs:192:11 [INFO] [stderr] | [INFO] [stderr] 192 | Error { inner: inner } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `inner` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/types.rs:107:4 [INFO] [stderr] | [INFO] [stderr] 107 | height: height, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `height` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/chain.rs:210:4 [INFO] [stderr] | [INFO] [stderr] 210 | db_root: db_root, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `db_root` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/chain.rs:211:4 [INFO] [stderr] | [INFO] [stderr] 211 | store: store, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `store` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/chain.rs:212:4 [INFO] [stderr] | [INFO] [stderr] 212 | adapter: adapter, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `adapter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/chain.rs:285:7 [INFO] [stderr] | [INFO] [stderr] 285 | opts: opts, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `opts` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/error.rs:192:11 [INFO] [stderr] | [INFO] [stderr] 192 | Error { inner: inner } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `inner` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/types.rs:107:4 [INFO] [stderr] | [INFO] [stderr] 107 | height: height, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `height` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: unused `#[macro_use]` import [INFO] [stderr] --> src/lib.rs:36:1 [INFO] [stderr] | [INFO] [stderr] 36 | #[macro_use] [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/chain.rs:774:3 [INFO] [stderr] | [INFO] [stderr] 774 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/pipe.rs:317:4 [INFO] [stderr] | [INFO] [stderr] 317 | return Err(ErrorKind::StoreErr(e, "pipe get this block".to_owned()).into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(ErrorKind::StoreErr(e, "pipe get this block".to_owned()).into())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/store.rs:32:23 [INFO] [stderr] | [INFO] [stderr] 32 | const STORE_SUBPATH: &'static str = "chain"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/store.rs:407:11 [INFO] [stderr] | [INFO] [stderr] 407 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 408 | | if let Some(ref store) = self.store { [INFO] [stderr] 409 | | store.get_block_header(&self.start).ok() [INFO] [stderr] 410 | | } else { [INFO] [stderr] 411 | | None [INFO] [stderr] 412 | | } [INFO] [stderr] 413 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 407 | } else if let Some(ref store) = self.store { [INFO] [stderr] 408 | store.get_block_header(&self.start).ok() [INFO] [stderr] 409 | } else { [INFO] [stderr] 410 | None [INFO] [stderr] 411 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/store.rs:423:11 [INFO] [stderr] | [INFO] [stderr] 423 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 424 | | if let Some(ref store) = self.store { [INFO] [stderr] 425 | | self.prev_header = store.get_previous_header(&header).ok(); [INFO] [stderr] 426 | | } else { [INFO] [stderr] 427 | | self.prev_header = None; [INFO] [stderr] 428 | | } [INFO] [stderr] 429 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 423 | } else if let Some(ref store) = self.store { [INFO] [stderr] 424 | self.prev_header = store.get_previous_header(&header).ok(); [INFO] [stderr] 425 | } else { [INFO] [stderr] 426 | self.prev_header = None; [INFO] [stderr] 427 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/txhashset/mod.rs:19:1 [INFO] [stderr] | [INFO] [stderr] 19 | mod txhashset; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/txhashset/txhashset.rs:47:30 [INFO] [stderr] | [INFO] [stderr] 47 | const HEADERHASHSET_SUBDIR: &'static str = "header"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/txhashset/txhashset.rs:48:26 [INFO] [stderr] | [INFO] [stderr] 48 | const TXHASHSET_SUBDIR: &'static str = "txhashset"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/txhashset/txhashset.rs:50:28 [INFO] [stderr] | [INFO] [stderr] 50 | const HEADER_HEAD_SUBDIR: &'static str = "header_head"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/txhashset/txhashset.rs:51:26 [INFO] [stderr] | [INFO] [stderr] 51 | const SYNC_HEAD_SUBDIR: &'static str = "sync_head"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/txhashset/txhashset.rs:53:23 [INFO] [stderr] | [INFO] [stderr] 53 | const OUTPUT_SUBDIR: &'static str = "output"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/txhashset/txhashset.rs:54:28 [INFO] [stderr] | [INFO] [stderr] 54 | const RANGE_PROOF_SUBDIR: &'static str = "rangeproof"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/txhashset/txhashset.rs:55:23 [INFO] [stderr] | [INFO] [stderr] 55 | const KERNEL_SUBDIR: &'static str = "kernel"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/txhashset/txhashset.rs:57:23 [INFO] [stderr] | [INFO] [stderr] 57 | const TXHASHSET_ZIP: &'static str = "txhashset_snapshot"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/types.rs:26:16 [INFO] [stderr] | [INFO] [stderr] 26 | const NONE = 0b00000000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0000` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/types.rs:28:20 [INFO] [stderr] | [INFO] [stderr] 28 | const SKIP_POW = 0b00000001; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0001` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/types.rs:30:16 [INFO] [stderr] | [INFO] [stderr] 30 | const SYNC = 0b00000010; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0010` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/types.rs:32:16 [INFO] [stderr] | [INFO] [stderr] 32 | const MINE = 0b00000100; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0100` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unused `#[macro_use]` import [INFO] [stderr] --> src/lib.rs:36:1 [INFO] [stderr] | [INFO] [stderr] 36 | #[macro_use] [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/chain.rs:774:3 [INFO] [stderr] | [INFO] [stderr] 774 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/pipe.rs:317:4 [INFO] [stderr] | [INFO] [stderr] 317 | return Err(ErrorKind::StoreErr(e, "pipe get this block".to_owned()).into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(ErrorKind::StoreErr(e, "pipe get this block".to_owned()).into())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/store.rs:32:23 [INFO] [stderr] | [INFO] [stderr] 32 | const STORE_SUBPATH: &'static str = "chain"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/store.rs:407:11 [INFO] [stderr] | [INFO] [stderr] 407 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 408 | | if let Some(ref store) = self.store { [INFO] [stderr] 409 | | store.get_block_header(&self.start).ok() [INFO] [stderr] 410 | | } else { [INFO] [stderr] 411 | | None [INFO] [stderr] 412 | | } [INFO] [stderr] 413 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 407 | } else if let Some(ref store) = self.store { [INFO] [stderr] 408 | store.get_block_header(&self.start).ok() [INFO] [stderr] 409 | } else { [INFO] [stderr] 410 | None [INFO] [stderr] 411 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/store.rs:423:11 [INFO] [stderr] | [INFO] [stderr] 423 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 424 | | if let Some(ref store) = self.store { [INFO] [stderr] 425 | | self.prev_header = store.get_previous_header(&header).ok(); [INFO] [stderr] 426 | | } else { [INFO] [stderr] 427 | | self.prev_header = None; [INFO] [stderr] 428 | | } [INFO] [stderr] 429 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 423 | } else if let Some(ref store) = self.store { [INFO] [stderr] 424 | self.prev_header = store.get_previous_header(&header).ok(); [INFO] [stderr] 425 | } else { [INFO] [stderr] 426 | self.prev_header = None; [INFO] [stderr] 427 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/txhashset/mod.rs:19:1 [INFO] [stderr] | [INFO] [stderr] 19 | mod txhashset; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/txhashset/txhashset.rs:47:30 [INFO] [stderr] | [INFO] [stderr] 47 | const HEADERHASHSET_SUBDIR: &'static str = "header"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/txhashset/txhashset.rs:48:26 [INFO] [stderr] | [INFO] [stderr] 48 | const TXHASHSET_SUBDIR: &'static str = "txhashset"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/txhashset/txhashset.rs:50:28 [INFO] [stderr] | [INFO] [stderr] 50 | const HEADER_HEAD_SUBDIR: &'static str = "header_head"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/txhashset/txhashset.rs:51:26 [INFO] [stderr] | [INFO] [stderr] 51 | const SYNC_HEAD_SUBDIR: &'static str = "sync_head"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/txhashset/txhashset.rs:53:23 [INFO] [stderr] | [INFO] [stderr] 53 | const OUTPUT_SUBDIR: &'static str = "output"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/txhashset/txhashset.rs:54:28 [INFO] [stderr] | [INFO] [stderr] 54 | const RANGE_PROOF_SUBDIR: &'static str = "rangeproof"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/txhashset/txhashset.rs:55:23 [INFO] [stderr] | [INFO] [stderr] 55 | const KERNEL_SUBDIR: &'static str = "kernel"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/txhashset/txhashset.rs:57:23 [INFO] [stderr] | [INFO] [stderr] 57 | const TXHASHSET_ZIP: &'static str = "txhashset_snapshot"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/types.rs:26:16 [INFO] [stderr] | [INFO] [stderr] 26 | const NONE = 0b00000000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0000` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/types.rs:28:20 [INFO] [stderr] | [INFO] [stderr] 28 | const SKIP_POW = 0b00000001; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0001` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/types.rs:30:16 [INFO] [stderr] | [INFO] [stderr] 30 | const SYNC = 0b00000010; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0010` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/types.rs:32:16 [INFO] [stderr] | [INFO] [stderr] 32 | const MINE = 0b00000100; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0100` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/chain.rs:92:6 [INFO] [stderr] | [INFO] [stderr] 92 | .or_insert(vec![]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| vec![])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/chain.rs:127:37 [INFO] [stderr] | [INFO] [stderr] 127 | fn remove_by_height(&self, height: &u64) -> Option> { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `u64` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stderr] --> src/chain.rs:263:11 [INFO] [stderr] | [INFO] [stderr] 263 | if let Ok(_) = maybe_new_head { [INFO] [stderr] | _____________- ^^^^^ [INFO] [stderr] 264 | | ctx.batch.commit()?; [INFO] [stderr] 265 | | } [INFO] [stderr] | |_____________- help: try this: `if maybe_new_head.is_ok()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: statement can be reduced [INFO] [stderr] --> src/chain.rs:289:6 [INFO] [stderr] | [INFO] [stderr] 289 | &self.orphans.add(orphan); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.orphans.add(orphan);` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_operation)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_operation [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/chain.rs:706:17 [INFO] [stderr] | [INFO] [stderr] 706 | let horizon = global::cut_through_horizon() as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(global::cut_through_horizon())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stderr] --> src/chain.rs:749:12 [INFO] [stderr] | [INFO] [stderr] 749 | if let Ok(_) = self.is_on_current_chain(&header) { [INFO] [stderr] | _________________- ^^^^^ [INFO] [stderr] 750 | | break; [INFO] [stderr] 751 | | } [INFO] [stderr] | |_________________- help: try this: `if self.is_on_current_chain(&header).is_ok()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/chain.rs:893:17 [INFO] [stderr] | [INFO] [stderr] 893 | let horizon = global::cut_through_horizon() as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(global::cut_through_horizon())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/chain.rs:1119:25 [INFO] [stderr] | [INFO] [stderr] 1119 | Err(ErrorKind::Other(format!("not on current chain")).into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"not on current chain".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/chain.rs:1246:7 [INFO] [stderr] | [INFO] [stderr] 1246 | if genesis.kernels().len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!genesis.kernels().is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: The function/method `validate_utxo` doesn't need a mutable reference [INFO] [stderr] --> src/pipe.rs:145:20 [INFO] [stderr] | [INFO] [stderr] 145 | validate_utxo(b, &mut extension)?; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/pipe.rs:359:6 [INFO] [stderr] | [INFO] [stderr] 359 | if !(ctx.pow_verifier)(header).is_ok() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(ctx.pow_verifier)(header).is_err()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/pipe.rs:432:12 [INFO] [stderr] | [INFO] [stderr] 432 | .map_err(|e| ErrorKind::InvalidBlockProof(e))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `ErrorKind::InvalidBlockProof` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/pipe.rs:583:8 [INFO] [stderr] | [INFO] [stderr] 583 | while current.height > 0 && !ext.is_on_current_chain(¤t).is_ok() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `current.height > 0 && ext.is_on_current_chain(¤t).is_err()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/pipe.rs:599:40 [INFO] [stderr] | [INFO] [stderr] 599 | .map_err(|e| ErrorKind::StoreErr(e, format!("getting forked headers")))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"getting forked headers".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/pipe.rs:614:8 [INFO] [stderr] | [INFO] [stderr] 614 | while current.height > 0 && !ext.is_on_current_chain(¤t).is_ok() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `current.height > 0 && ext.is_on_current_chain(¤t).is_err()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/pipe.rs:630:40 [INFO] [stderr] | [INFO] [stderr] 630 | .map_err(|e| ErrorKind::StoreErr(e, format!("getting forked blocks")))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"getting forked blocks".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/store.rs:34:33 [INFO] [stderr] | [INFO] [stderr] 34 | const BLOCK_HEADER_PREFIX: u8 = 'h' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::char_lit_as_u8)] on by default [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'h' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/store.rs:35:26 [INFO] [stderr] | [INFO] [stderr] 35 | const BLOCK_PREFIX: u8 = 'b' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'b' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/store.rs:36:25 [INFO] [stderr] | [INFO] [stderr] 36 | const HEAD_PREFIX: u8 = 'H' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'H' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/store.rs:37:25 [INFO] [stderr] | [INFO] [stderr] 37 | const TAIL_PREFIX: u8 = 'T' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'T' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/store.rs:38:32 [INFO] [stderr] | [INFO] [stderr] 38 | const HEADER_HEAD_PREFIX: u8 = 'I' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'I' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/store.rs:39:30 [INFO] [stderr] | [INFO] [stderr] 39 | const SYNC_HEAD_PREFIX: u8 = 's' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b's' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/store.rs:40:31 [INFO] [stderr] | [INFO] [stderr] 40 | const COMMIT_POS_PREFIX: u8 = 'c' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'c' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/store.rs:41:39 [INFO] [stderr] | [INFO] [stderr] 41 | const BLOCK_INPUT_BITMAP_PREFIX: u8 = 'B' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'B' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/store.rs:42:31 [INFO] [stderr] | [INFO] [stderr] 42 | const BLOCK_SUMS_PREFIX: u8 = 'M' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'M' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/store.rs:60:39 [INFO] [stderr] | [INFO] [stderr] 60 | option_to_not_found(self.db.get_ser(&vec![HEAD_PREFIX]), "HEAD") [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[HEAD_PREFIX]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_vec)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/store.rs:64:39 [INFO] [stderr] | [INFO] [stderr] 64 | option_to_not_found(self.db.get_ser(&vec![TAIL_PREFIX]), "TAIL") [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[TAIL_PREFIX]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/store.rs:74:39 [INFO] [stderr] | [INFO] [stderr] 74 | option_to_not_found(self.db.get_ser(&vec![HEADER_HEAD_PREFIX]), "HEADER_HEAD") [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[HEADER_HEAD_PREFIX]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/store.rs:78:39 [INFO] [stderr] | [INFO] [stderr] 78 | option_to_not_found(self.db.get_ser(&vec![SYNC_HEAD_PREFIX]), "SYNC_HEAD") [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[SYNC_HEAD_PREFIX]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/store.rs:136:39 [INFO] [stderr] | [INFO] [stderr] 136 | option_to_not_found(self.db.get_ser(&vec![HEAD_PREFIX]), "HEAD") [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[HEAD_PREFIX]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/store.rs:140:39 [INFO] [stderr] | [INFO] [stderr] 140 | option_to_not_found(self.db.get_ser(&vec![TAIL_PREFIX]), "TAIL") [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[TAIL_PREFIX]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/store.rs:150:39 [INFO] [stderr] | [INFO] [stderr] 150 | option_to_not_found(self.db.get_ser(&vec![HEADER_HEAD_PREFIX]), "HEADER_HEAD") [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[HEADER_HEAD_PREFIX]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/store.rs:154:39 [INFO] [stderr] | [INFO] [stderr] 154 | option_to_not_found(self.db.get_ser(&vec![SYNC_HEAD_PREFIX]), "SYNC_HEAD") [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[SYNC_HEAD_PREFIX]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/store.rs:158:19 [INFO] [stderr] | [INFO] [stderr] 158 | self.db.put_ser(&vec![HEAD_PREFIX], t)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[HEAD_PREFIX]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/store.rs:159:19 [INFO] [stderr] | [INFO] [stderr] 159 | self.db.put_ser(&vec![HEADER_HEAD_PREFIX], t) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[HEADER_HEAD_PREFIX]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/store.rs:163:19 [INFO] [stderr] | [INFO] [stderr] 163 | self.db.put_ser(&vec![HEAD_PREFIX], t) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[HEAD_PREFIX]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/store.rs:167:19 [INFO] [stderr] | [INFO] [stderr] 167 | self.db.put_ser(&vec![TAIL_PREFIX], t) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[TAIL_PREFIX]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/store.rs:171:19 [INFO] [stderr] | [INFO] [stderr] 171 | self.db.put_ser(&vec![HEADER_HEAD_PREFIX], t) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[HEADER_HEAD_PREFIX]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/store.rs:175:19 [INFO] [stderr] | [INFO] [stderr] 175 | self.db.put_ser(&vec![SYNC_HEAD_PREFIX], t) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[SYNC_HEAD_PREFIX]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/txhashset/txhashset.rs:172:35 [INFO] [stderr] | [INFO] [stderr] 172 | Err(ErrorKind::TxHashSetErr(format!("txhashset hash mismatch")).into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"txhashset hash mismatch".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/txhashset/txhashset.rs:179:41 [INFO] [stderr] | [INFO] [stderr] 179 | Err(e) => Err(ErrorKind::StoreErr(e, format!("txhashset unspent check")).into()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"txhashset unspent check".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/txhashset/txhashset.rs:215:25 [INFO] [stderr] | [INFO] [stderr] 215 | Err(ErrorKind::Other(format!("get header by height")).into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"get header by height".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/txhashset/txhashset.rs:315:1 [INFO] [stderr] | [INFO] [stderr] 315 | / pub fn extending_readonly<'a, F, T>(trees: &'a mut TxHashSet, inner: F) -> Result [INFO] [stderr] 316 | | where [INFO] [stderr] 317 | | F: FnOnce(&mut Extension) -> Result, [INFO] [stderr] 318 | | { [INFO] [stderr] ... | [INFO] [stderr] 347 | | res [INFO] [stderr] 348 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/txhashset/txhashset.rs:352:1 [INFO] [stderr] | [INFO] [stderr] 352 | / pub fn utxo_view<'a, F, T>(trees: &'a TxHashSet, inner: F) -> Result [INFO] [stderr] 353 | | where [INFO] [stderr] 354 | | F: FnOnce(&UTXOView) -> Result, [INFO] [stderr] 355 | | { [INFO] [stderr] ... | [INFO] [stderr] 367 | | res [INFO] [stderr] 368 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/txhashset/txhashset.rs:375:1 [INFO] [stderr] | [INFO] [stderr] 375 | / pub fn rewindable_kernel_view<'a, F, T>(trees: &'a TxHashSet, inner: F) -> Result [INFO] [stderr] 376 | | where [INFO] [stderr] 377 | | F: FnOnce(&mut RewindableKernelView) -> Result, [INFO] [stderr] 378 | | { [INFO] [stderr] ... | [INFO] [stderr] 391 | | res [INFO] [stderr] 392 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/txhashset/txhashset.rs:632:25 [INFO] [stderr] | [INFO] [stderr] 632 | Err(ErrorKind::Other(format!("get header by height")).into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"get header by height".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: methods called `is_*` usually take self by reference or no self; consider choosing a less ambiguous name [INFO] [stderr] --> src/txhashset/txhashset.rs:638:29 [INFO] [stderr] | [INFO] [stderr] 638 | pub fn is_on_current_chain(&mut self, header: &BlockHeader) -> Result<(), Error> { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/txhashset/txhashset.rs:643:25 [INFO] [stderr] | [INFO] [stderr] 643 | Err(ErrorKind::Other(format!("not on current chain")).into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"not on current chain".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/txhashset/txhashset.rs:721:6 [INFO] [stderr] | [INFO] [stderr] 721 | if header_hashes.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!header_hashes.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/txhashset/txhashset.rs:786:12 [INFO] [stderr] | [INFO] [stderr] 786 | for n in 1..self.output_pmmr.unpruned_size() + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `1..=self.output_pmmr.unpruned_size()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/txhashset/txhashset.rs:798:12 [INFO] [stderr] | [INFO] [stderr] 798 | for n in 1..self.kernel_pmmr.unpruned_size() + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `1..=self.kernel_pmmr.unpruned_size()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/txhashset/txhashset.rs:843:11 [INFO] [stderr] | [INFO] [stderr] 843 | inputs: &Vec, [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Input]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/txhashset/txhashset.rs:917:31 [INFO] [stderr] | [INFO] [stderr] 917 | ErrorKind::TxHashSetErr(format!("output pmmr hash mismatch")).into(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"output pmmr hash mismatch".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/txhashset/txhashset.rs:929:16 [INFO] [stderr] | [INFO] [stderr] 929 | .map_err(|e| ErrorKind::TxHashSetErr(e))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `ErrorKind::TxHashSetErr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/txhashset/txhashset.rs:967:23 [INFO] [stderr] | [INFO] [stderr] 967 | ErrorKind::Other(format!("output vs rproof MMRs different sizes")).into(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"output vs rproof MMRs different sizes".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/txhashset/txhashset.rs:972:33 [INFO] [stderr] | [INFO] [stderr] 972 | return Err(ErrorKind::Other(format!("output vs rproof MMRs different pos")).into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"output vs rproof MMRs different pos".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/txhashset/txhashset.rs:1008:25 [INFO] [stderr] | [INFO] [stderr] 1008 | Err(ErrorKind::Other(format!("get header by height")).into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"get header by height".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: methods called `is_*` usually take self by reference or no self; consider choosing a less ambiguous name [INFO] [stderr] --> src/txhashset/txhashset.rs:1014:29 [INFO] [stderr] | [INFO] [stderr] 1014 | pub fn is_on_current_chain(&mut self, header: &BlockHeader) -> Result<(), Error> { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/txhashset/txhashset.rs:1019:25 [INFO] [stderr] | [INFO] [stderr] 1019 | Err(ErrorKind::Other(format!("not on current chain")).into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"not on current chain".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/txhashset/txhashset.rs:1048:13 [INFO] [stderr] | [INFO] [stderr] 1048 | .map_err(|e| ErrorKind::Other(e))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `ErrorKind::Other` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/txhashset/txhashset.rs:1051:13 [INFO] [stderr] | [INFO] [stderr] 1051 | .map_err(|e| ErrorKind::Other(e))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `ErrorKind::Other` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/txhashset/txhashset.rs:1185:60 [INFO] [stderr] | [INFO] [stderr] 1185 | } else if output_mmr_size != self.header.output_mmr_size { [INFO] [stderr] | __________________________________________________________________^ [INFO] [stderr] 1186 | | Err(ErrorKind::InvalidMMRSize.into()) [INFO] [stderr] 1187 | | } else if kernel_mmr_size != self.header.kernel_mmr_size { [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/txhashset/txhashset.rs:1183:50 [INFO] [stderr] | [INFO] [stderr] 1183 | if header_mmr_size != expected_header_mmr_size { [INFO] [stderr] | ________________________________________________________^ [INFO] [stderr] 1184 | | Err(ErrorKind::InvalidMMRSize.into()) [INFO] [stderr] 1185 | | } else if output_mmr_size != self.header.output_mmr_size { [INFO] [stderr] | |_________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/txhashset/txhashset.rs:1251:15 [INFO] [stderr] | [INFO] [stderr] 1251 | return Ok((zero_commit.clone(), zero_commit.clone())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `zero_commit` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/txhashset/txhashset.rs:1251:36 [INFO] [stderr] | [INFO] [stderr] 1251 | return Ok((zero_commit.clone(), zero_commit.clone())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `zero_commit` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/txhashset/txhashset.rs:1274:12 [INFO] [stderr] | [INFO] [stderr] 1274 | for n in 1..self.output_pmmr.unpruned_size() + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `1..=self.output_pmmr.unpruned_size()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/txhashset/txhashset.rs:1328:12 [INFO] [stderr] | [INFO] [stderr] 1328 | for n in 1..self.kernel_pmmr.unpruned_size() + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `1..=self.kernel_pmmr.unpruned_size()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/txhashset/txhashset.rs:1358:12 [INFO] [stderr] | [INFO] [stderr] 1358 | for n in 1..self.output_pmmr.unpruned_size() + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `1..=self.output_pmmr.unpruned_size()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/txhashset/txhashset.rs:1387:6 [INFO] [stderr] | [INFO] [stderr] 1387 | if proofs.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!proofs.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/txhashset/txhashset.rs:1410:18 [INFO] [stderr] | [INFO] [stderr] 1410 | let ts = if let None = rand { [INFO] [stderr] | ______________- ^^^^ [INFO] [stderr] 1411 | | let now = SystemTime::now(); [INFO] [stderr] 1412 | | now.duration_since(UNIX_EPOCH).unwrap().subsec_micros() [INFO] [stderr] 1413 | | } else { [INFO] [stderr] 1414 | | rand.unwrap() [INFO] [stderr] 1415 | | }; [INFO] [stderr] | |_____- help: try this: `if rand.is_none()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/txhashset/txhashset.rs:1463:8 [INFO] [stderr] | [INFO] [stderr] 1463 | .map(|s| String::from(s)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `String::from` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/txhashset/txhashset.rs:1471:35 [INFO] [stderr] | [INFO] [stderr] 1471 | .and_then(|n| n.to_str().map(|s| String::from(s))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `String::from` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/txhashset/txhashset.rs:1510:36 [INFO] [stderr] | [INFO] [stderr] 1510 | .and_then(|n| n.to_str().map(|s| String::from(s))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `String::from` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `grin_chain`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/chain.rs:92:6 [INFO] [stderr] | [INFO] [stderr] 92 | .or_insert(vec![]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| vec![])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/chain.rs:127:37 [INFO] [stderr] | [INFO] [stderr] 127 | fn remove_by_height(&self, height: &u64) -> Option> { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `u64` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stderr] --> src/chain.rs:263:11 [INFO] [stderr] | [INFO] [stderr] 263 | if let Ok(_) = maybe_new_head { [INFO] [stderr] | _____________- ^^^^^ [INFO] [stderr] 264 | | ctx.batch.commit()?; [INFO] [stderr] 265 | | } [INFO] [stderr] | |_____________- help: try this: `if maybe_new_head.is_ok()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: statement can be reduced [INFO] [stderr] --> src/chain.rs:289:6 [INFO] [stderr] | [INFO] [stderr] 289 | &self.orphans.add(orphan); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.orphans.add(orphan);` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_operation)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_operation [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/chain.rs:706:17 [INFO] [stderr] | [INFO] [stderr] 706 | let horizon = global::cut_through_horizon() as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(global::cut_through_horizon())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stderr] --> src/chain.rs:749:12 [INFO] [stderr] | [INFO] [stderr] 749 | if let Ok(_) = self.is_on_current_chain(&header) { [INFO] [stderr] | _________________- ^^^^^ [INFO] [stderr] 750 | | break; [INFO] [stderr] 751 | | } [INFO] [stderr] | |_________________- help: try this: `if self.is_on_current_chain(&header).is_ok()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/chain.rs:893:17 [INFO] [stderr] | [INFO] [stderr] 893 | let horizon = global::cut_through_horizon() as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(global::cut_through_horizon())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/chain.rs:1119:25 [INFO] [stderr] | [INFO] [stderr] 1119 | Err(ErrorKind::Other(format!("not on current chain")).into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"not on current chain".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/chain.rs:1246:7 [INFO] [stderr] | [INFO] [stderr] 1246 | if genesis.kernels().len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!genesis.kernels().is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: The function/method `validate_utxo` doesn't need a mutable reference [INFO] [stderr] --> src/pipe.rs:145:20 [INFO] [stderr] | [INFO] [stderr] 145 | validate_utxo(b, &mut extension)?; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/pipe.rs:359:6 [INFO] [stderr] | [INFO] [stderr] 359 | if !(ctx.pow_verifier)(header).is_ok() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(ctx.pow_verifier)(header).is_err()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/pipe.rs:432:12 [INFO] [stderr] | [INFO] [stderr] 432 | .map_err(|e| ErrorKind::InvalidBlockProof(e))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `ErrorKind::InvalidBlockProof` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/pipe.rs:583:8 [INFO] [stderr] | [INFO] [stderr] 583 | while current.height > 0 && !ext.is_on_current_chain(¤t).is_ok() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `current.height > 0 && ext.is_on_current_chain(¤t).is_err()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/pipe.rs:599:40 [INFO] [stderr] | [INFO] [stderr] 599 | .map_err(|e| ErrorKind::StoreErr(e, format!("getting forked headers")))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"getting forked headers".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/pipe.rs:614:8 [INFO] [stderr] | [INFO] [stderr] 614 | while current.height > 0 && !ext.is_on_current_chain(¤t).is_ok() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `current.height > 0 && ext.is_on_current_chain(¤t).is_err()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/pipe.rs:630:40 [INFO] [stderr] | [INFO] [stderr] 630 | .map_err(|e| ErrorKind::StoreErr(e, format!("getting forked blocks")))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"getting forked blocks".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/store.rs:34:33 [INFO] [stderr] | [INFO] [stderr] 34 | const BLOCK_HEADER_PREFIX: u8 = 'h' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::char_lit_as_u8)] on by default [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'h' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/store.rs:35:26 [INFO] [stderr] | [INFO] [stderr] 35 | const BLOCK_PREFIX: u8 = 'b' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'b' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/store.rs:36:25 [INFO] [stderr] | [INFO] [stderr] 36 | const HEAD_PREFIX: u8 = 'H' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'H' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/store.rs:37:25 [INFO] [stderr] | [INFO] [stderr] 37 | const TAIL_PREFIX: u8 = 'T' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'T' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/store.rs:38:32 [INFO] [stderr] | [INFO] [stderr] 38 | const HEADER_HEAD_PREFIX: u8 = 'I' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'I' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/store.rs:39:30 [INFO] [stderr] | [INFO] [stderr] 39 | const SYNC_HEAD_PREFIX: u8 = 's' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b's' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/store.rs:40:31 [INFO] [stderr] | [INFO] [stderr] 40 | const COMMIT_POS_PREFIX: u8 = 'c' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'c' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/store.rs:41:39 [INFO] [stderr] | [INFO] [stderr] 41 | const BLOCK_INPUT_BITMAP_PREFIX: u8 = 'B' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'B' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/store.rs:42:31 [INFO] [stderr] | [INFO] [stderr] 42 | const BLOCK_SUMS_PREFIX: u8 = 'M' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'M' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/store.rs:60:39 [INFO] [stderr] | [INFO] [stderr] 60 | option_to_not_found(self.db.get_ser(&vec![HEAD_PREFIX]), "HEAD") [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[HEAD_PREFIX]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_vec)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/store.rs:64:39 [INFO] [stderr] | [INFO] [stderr] 64 | option_to_not_found(self.db.get_ser(&vec![TAIL_PREFIX]), "TAIL") [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[TAIL_PREFIX]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/store.rs:74:39 [INFO] [stderr] | [INFO] [stderr] 74 | option_to_not_found(self.db.get_ser(&vec![HEADER_HEAD_PREFIX]), "HEADER_HEAD") [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[HEADER_HEAD_PREFIX]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/store.rs:78:39 [INFO] [stderr] | [INFO] [stderr] 78 | option_to_not_found(self.db.get_ser(&vec![SYNC_HEAD_PREFIX]), "SYNC_HEAD") [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[SYNC_HEAD_PREFIX]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/store.rs:136:39 [INFO] [stderr] | [INFO] [stderr] 136 | option_to_not_found(self.db.get_ser(&vec![HEAD_PREFIX]), "HEAD") [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[HEAD_PREFIX]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/store.rs:140:39 [INFO] [stderr] | [INFO] [stderr] 140 | option_to_not_found(self.db.get_ser(&vec![TAIL_PREFIX]), "TAIL") [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[TAIL_PREFIX]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/store.rs:150:39 [INFO] [stderr] | [INFO] [stderr] 150 | option_to_not_found(self.db.get_ser(&vec![HEADER_HEAD_PREFIX]), "HEADER_HEAD") [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[HEADER_HEAD_PREFIX]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/store.rs:154:39 [INFO] [stderr] | [INFO] [stderr] 154 | option_to_not_found(self.db.get_ser(&vec![SYNC_HEAD_PREFIX]), "SYNC_HEAD") [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[SYNC_HEAD_PREFIX]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/store.rs:158:19 [INFO] [stderr] | [INFO] [stderr] 158 | self.db.put_ser(&vec![HEAD_PREFIX], t)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[HEAD_PREFIX]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/store.rs:159:19 [INFO] [stderr] | [INFO] [stderr] 159 | self.db.put_ser(&vec![HEADER_HEAD_PREFIX], t) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[HEADER_HEAD_PREFIX]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/store.rs:163:19 [INFO] [stderr] | [INFO] [stderr] 163 | self.db.put_ser(&vec![HEAD_PREFIX], t) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[HEAD_PREFIX]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/store.rs:167:19 [INFO] [stderr] | [INFO] [stderr] 167 | self.db.put_ser(&vec![TAIL_PREFIX], t) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[TAIL_PREFIX]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/store.rs:171:19 [INFO] [stderr] | [INFO] [stderr] 171 | self.db.put_ser(&vec![HEADER_HEAD_PREFIX], t) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[HEADER_HEAD_PREFIX]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/store.rs:175:19 [INFO] [stderr] | [INFO] [stderr] 175 | self.db.put_ser(&vec![SYNC_HEAD_PREFIX], t) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[SYNC_HEAD_PREFIX]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/txhashset/txhashset.rs:172:35 [INFO] [stderr] | [INFO] [stderr] 172 | Err(ErrorKind::TxHashSetErr(format!("txhashset hash mismatch")).into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"txhashset hash mismatch".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/txhashset/txhashset.rs:179:41 [INFO] [stderr] | [INFO] [stderr] 179 | Err(e) => Err(ErrorKind::StoreErr(e, format!("txhashset unspent check")).into()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"txhashset unspent check".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/txhashset/txhashset.rs:215:25 [INFO] [stderr] | [INFO] [stderr] 215 | Err(ErrorKind::Other(format!("get header by height")).into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"get header by height".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/txhashset/txhashset.rs:315:1 [INFO] [stderr] | [INFO] [stderr] 315 | / pub fn extending_readonly<'a, F, T>(trees: &'a mut TxHashSet, inner: F) -> Result [INFO] [stderr] 316 | | where [INFO] [stderr] 317 | | F: FnOnce(&mut Extension) -> Result, [INFO] [stderr] 318 | | { [INFO] [stderr] ... | [INFO] [stderr] 347 | | res [INFO] [stderr] 348 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/txhashset/txhashset.rs:352:1 [INFO] [stderr] | [INFO] [stderr] 352 | / pub fn utxo_view<'a, F, T>(trees: &'a TxHashSet, inner: F) -> Result [INFO] [stderr] 353 | | where [INFO] [stderr] 354 | | F: FnOnce(&UTXOView) -> Result, [INFO] [stderr] 355 | | { [INFO] [stderr] ... | [INFO] [stderr] 367 | | res [INFO] [stderr] 368 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/txhashset/txhashset.rs:375:1 [INFO] [stderr] | [INFO] [stderr] 375 | / pub fn rewindable_kernel_view<'a, F, T>(trees: &'a TxHashSet, inner: F) -> Result [INFO] [stderr] 376 | | where [INFO] [stderr] 377 | | F: FnOnce(&mut RewindableKernelView) -> Result, [INFO] [stderr] 378 | | { [INFO] [stderr] ... | [INFO] [stderr] 391 | | res [INFO] [stderr] 392 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/txhashset/txhashset.rs:632:25 [INFO] [stderr] | [INFO] [stderr] 632 | Err(ErrorKind::Other(format!("get header by height")).into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"get header by height".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: methods called `is_*` usually take self by reference or no self; consider choosing a less ambiguous name [INFO] [stderr] --> src/txhashset/txhashset.rs:638:29 [INFO] [stderr] | [INFO] [stderr] 638 | pub fn is_on_current_chain(&mut self, header: &BlockHeader) -> Result<(), Error> { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/txhashset/txhashset.rs:643:25 [INFO] [stderr] | [INFO] [stderr] 643 | Err(ErrorKind::Other(format!("not on current chain")).into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"not on current chain".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/txhashset/txhashset.rs:721:6 [INFO] [stderr] | [INFO] [stderr] 721 | if header_hashes.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!header_hashes.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/txhashset/txhashset.rs:786:12 [INFO] [stderr] | [INFO] [stderr] 786 | for n in 1..self.output_pmmr.unpruned_size() + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `1..=self.output_pmmr.unpruned_size()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/txhashset/txhashset.rs:798:12 [INFO] [stderr] | [INFO] [stderr] 798 | for n in 1..self.kernel_pmmr.unpruned_size() + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `1..=self.kernel_pmmr.unpruned_size()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/txhashset/txhashset.rs:843:11 [INFO] [stderr] | [INFO] [stderr] 843 | inputs: &Vec, [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Input]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/txhashset/txhashset.rs:917:31 [INFO] [stderr] | [INFO] [stderr] 917 | ErrorKind::TxHashSetErr(format!("output pmmr hash mismatch")).into(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"output pmmr hash mismatch".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/txhashset/txhashset.rs:929:16 [INFO] [stderr] | [INFO] [stderr] 929 | .map_err(|e| ErrorKind::TxHashSetErr(e))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `ErrorKind::TxHashSetErr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/txhashset/txhashset.rs:967:23 [INFO] [stderr] | [INFO] [stderr] 967 | ErrorKind::Other(format!("output vs rproof MMRs different sizes")).into(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"output vs rproof MMRs different sizes".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/txhashset/txhashset.rs:972:33 [INFO] [stderr] | [INFO] [stderr] 972 | return Err(ErrorKind::Other(format!("output vs rproof MMRs different pos")).into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"output vs rproof MMRs different pos".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/txhashset/txhashset.rs:1008:25 [INFO] [stderr] | [INFO] [stderr] 1008 | Err(ErrorKind::Other(format!("get header by height")).into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"get header by height".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: methods called `is_*` usually take self by reference or no self; consider choosing a less ambiguous name [INFO] [stderr] --> src/txhashset/txhashset.rs:1014:29 [INFO] [stderr] | [INFO] [stderr] 1014 | pub fn is_on_current_chain(&mut self, header: &BlockHeader) -> Result<(), Error> { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/txhashset/txhashset.rs:1019:25 [INFO] [stderr] | [INFO] [stderr] 1019 | Err(ErrorKind::Other(format!("not on current chain")).into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"not on current chain".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/txhashset/txhashset.rs:1048:13 [INFO] [stderr] | [INFO] [stderr] 1048 | .map_err(|e| ErrorKind::Other(e))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `ErrorKind::Other` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/txhashset/txhashset.rs:1051:13 [INFO] [stderr] | [INFO] [stderr] 1051 | .map_err(|e| ErrorKind::Other(e))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `ErrorKind::Other` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/txhashset/txhashset.rs:1185:60 [INFO] [stderr] | [INFO] [stderr] 1185 | } else if output_mmr_size != self.header.output_mmr_size { [INFO] [stderr] | __________________________________________________________________^ [INFO] [stderr] 1186 | | Err(ErrorKind::InvalidMMRSize.into()) [INFO] [stderr] 1187 | | } else if kernel_mmr_size != self.header.kernel_mmr_size { [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/txhashset/txhashset.rs:1183:50 [INFO] [stderr] | [INFO] [stderr] 1183 | if header_mmr_size != expected_header_mmr_size { [INFO] [stderr] | ________________________________________________________^ [INFO] [stderr] 1184 | | Err(ErrorKind::InvalidMMRSize.into()) [INFO] [stderr] 1185 | | } else if output_mmr_size != self.header.output_mmr_size { [INFO] [stderr] | |_________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/txhashset/txhashset.rs:1251:15 [INFO] [stderr] | [INFO] [stderr] 1251 | return Ok((zero_commit.clone(), zero_commit.clone())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `zero_commit` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/txhashset/txhashset.rs:1251:36 [INFO] [stderr] | [INFO] [stderr] 1251 | return Ok((zero_commit.clone(), zero_commit.clone())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `zero_commit` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/txhashset/txhashset.rs:1274:12 [INFO] [stderr] | [INFO] [stderr] 1274 | for n in 1..self.output_pmmr.unpruned_size() + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `1..=self.output_pmmr.unpruned_size()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/txhashset/txhashset.rs:1328:12 [INFO] [stderr] | [INFO] [stderr] 1328 | for n in 1..self.kernel_pmmr.unpruned_size() + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `1..=self.kernel_pmmr.unpruned_size()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/txhashset/txhashset.rs:1358:12 [INFO] [stderr] | [INFO] [stderr] 1358 | for n in 1..self.output_pmmr.unpruned_size() + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `1..=self.output_pmmr.unpruned_size()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/txhashset/txhashset.rs:1387:6 [INFO] [stderr] | [INFO] [stderr] 1387 | if proofs.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!proofs.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/txhashset/txhashset.rs:1410:18 [INFO] [stderr] | [INFO] [stderr] 1410 | let ts = if let None = rand { [INFO] [stderr] | ______________- ^^^^ [INFO] [stderr] 1411 | | let now = SystemTime::now(); [INFO] [stderr] 1412 | | now.duration_since(UNIX_EPOCH).unwrap().subsec_micros() [INFO] [stderr] 1413 | | } else { [INFO] [stderr] 1414 | | rand.unwrap() [INFO] [stderr] 1415 | | }; [INFO] [stderr] | |_____- help: try this: `if rand.is_none()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/txhashset/txhashset.rs:1463:8 [INFO] [stderr] | [INFO] [stderr] 1463 | .map(|s| String::from(s)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `String::from` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/txhashset/txhashset.rs:1471:35 [INFO] [stderr] | [INFO] [stderr] 1471 | .and_then(|n| n.to_str().map(|s| String::from(s))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `String::from` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/txhashset/txhashset.rs:1510:36 [INFO] [stderr] | [INFO] [stderr] 1510 | .and_then(|n| n.to_str().map(|s| String::from(s))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `String::from` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `grin_chain`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "775a8a1f250f2e082a4eff46c50789c4ed897b472147a42d00c9e5863450f9e5"` [INFO] running `"docker" "rm" "-f" "775a8a1f250f2e082a4eff46c50789c4ed897b472147a42d00c9e5863450f9e5"` [INFO] [stdout] 775a8a1f250f2e082a4eff46c50789c4ed897b472147a42d00c9e5863450f9e5