[INFO] crate grin_wallet 0.4.2 is already in cache [INFO] extracting crate grin_wallet 0.4.2 into work/ex/clippy-test-run/sources/stable/reg/grin_wallet/0.4.2 [INFO] extracting crate grin_wallet 0.4.2 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/grin_wallet/0.4.2 [INFO] validating manifest of grin_wallet-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_wallet-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_wallet-0.4.2 [INFO] finished frobbing grin_wallet-0.4.2 [INFO] frobbed toml for grin_wallet-0.4.2 written to work/ex/clippy-test-run/sources/stable/reg/grin_wallet/0.4.2/Cargo.toml [INFO] started frobbing grin_wallet-0.4.2 [INFO] finished frobbing grin_wallet-0.4.2 [INFO] frobbed toml for grin_wallet-0.4.2 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/grin_wallet/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_wallet-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-7/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/grin_wallet/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] 843aed14ab5da80ae59d9ed1d3803cd63eb1d949ab56a58b24855f93da27c0ed [INFO] running `"docker" "start" "-a" "843aed14ab5da80ae59d9ed1d3803cd63eb1d949ab56a58b24855f93da27c0ed"` [INFO] [stderr] Compiling grin_secp256k1zkp v0.7.4 [INFO] [stderr] Checking arrayvec v0.4.10 [INFO] [stderr] Compiling memchr v1.0.2 [INFO] [stderr] Checking mio v0.6.16 [INFO] [stderr] Checking want v0.0.6 [INFO] [stderr] Compiling clang-sys v0.23.0 [INFO] [stderr] Checking num-bigint v0.2.2 [INFO] [stderr] Checking tokio-io v0.1.11 [INFO] [stderr] Checking prettytable-rs v0.7.0 [INFO] [stderr] Checking ct-logs v0.4.0 [INFO] [stderr] Checking rustls v0.13.1 [INFO] [stderr] Checking flate2 v1.0.6 [INFO] [stderr] Checking ripemd160 v0.7.0 [INFO] [stderr] Checking env_logger v0.5.13 [INFO] [stderr] Compiling nom v3.2.1 [INFO] [stderr] Checking tokio-codec v0.1.1 [INFO] [stderr] Checking h2 v0.1.16 [INFO] [stderr] Checking crossbeam-epoch v0.7.1 [INFO] [stderr] Checking blake2-rfc v0.2.18 [INFO] [stderr] Checking mio-uds v0.6.7 [INFO] [stderr] Checking num-rational v0.2.1 [INFO] [stderr] Checking zip v0.4.2 [INFO] [stderr] Checking log4rs v0.8.1 [INFO] [stderr] Checking crossbeam-deque v0.6.3 [INFO] [stderr] Checking num v0.2.0 [INFO] [stderr] Checking tokio-reactor v0.1.8 [INFO] [stderr] Checking crossbeam v0.6.0 [INFO] [stderr] Compiling cexpr v0.2.3 [INFO] [stderr] Checking grin_util v0.4.2 [INFO] [stderr] Checking tokio-threadpool v0.1.11 [INFO] [stderr] Checking tokio-tcp v0.1.3 [INFO] [stderr] Checking tokio-uds v0.2.5 [INFO] [stderr] Checking tokio-udp v0.1.3 [INFO] [stderr] Compiling bindgen v0.37.4 [INFO] [stderr] Checking tokio-fs v0.1.5 [INFO] [stderr] Checking tokio v0.1.15 [INFO] [stderr] Checking grin_keychain v0.4.2 [INFO] [stderr] Checking hyper v0.12.23 [INFO] [stderr] Checking tokio-core v0.1.17 [INFO] [stderr] Checking tokio-rustls v0.7.2 [INFO] [stderr] Compiling croaring-sys v0.3.8 [INFO] [stderr] Checking tokio-retry v0.1.1 [INFO] [stderr] Checking hyper-rustls v0.14.0 [INFO] [stderr] Checking croaring v0.3.8 [INFO] [stderr] Checking grin_core v0.4.2 [INFO] [stderr] Checking grin_store v0.4.2 [INFO] [stderr] Checking grin_pool v0.4.2 [INFO] [stderr] Checking grin_p2p v0.4.2 [INFO] [stderr] Checking grin_chain v0.4.2 [INFO] [stderr] Checking grin_api v0.4.2 [INFO] [stderr] Checking grin_wallet v0.4.2 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/command_args.rs:145:3 [INFO] [stderr] | [INFO] [stderr] 145 | show_spent: show_spent, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `show_spent` [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/command_args.rs:145:3 [INFO] [stderr] | [INFO] [stderr] 145 | show_spent: show_spent, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `show_spent` [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/command_args.rs:146:3 [INFO] [stderr] | [INFO] [stderr] 146 | node_api_secret: node_api_secret, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `node_api_secret` [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/command_args.rs:147:3 [INFO] [stderr] | [INFO] [stderr] 147 | password: password, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `password` [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/command_args.rs:148:3 [INFO] [stderr] | [INFO] [stderr] 148 | tls_conf: tls_conf, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `tls_conf` [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/command_args.rs:167:3 [INFO] [stderr] | [INFO] [stderr] 167 | list_length: list_length, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `list_length` [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/command_args.rs:168:3 [INFO] [stderr] | [INFO] [stderr] 168 | password: password, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `password` [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/command_args.rs:191:3 [INFO] [stderr] | [INFO] [stderr] 191 | passphrase: passphrase, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `passphrase` [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/command_args.rs:192:3 [INFO] [stderr] | [INFO] [stderr] 192 | recovery_phrase: recovery_phrase, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `recovery_phrase` [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] | [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] warning: redundant field names in struct initialization [INFO] [stderr] --> src/command_args.rs:221:28 [INFO] [stderr] | [INFO] [stderr] 221 | Ok(command::AccountArgs { create: create }) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `create` [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/command_args.rs:146:3 [INFO] [stderr] | [INFO] [stderr] 146 | node_api_secret: node_api_secret, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `node_api_secret` [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] | [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/command_args.rs:285:3 [INFO] [stderr] | [INFO] [stderr] 285 | amount: amount, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `amount` [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/command_args.rs:147:3 [INFO] [stderr] | [INFO] [stderr] 147 | password: password, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `password` [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] | [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/command_args.rs:148:3 [INFO] [stderr] | [INFO] [stderr] 148 | tls_conf: tls_conf, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `tls_conf` [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/command_args.rs:286:3 [INFO] [stderr] | [INFO] [stderr] 286 | message: message, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `message` [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] [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/command_args.rs:291:3 [INFO] [stderr] | [INFO] [stderr] 291 | change_outputs: change_outputs, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `change_outputs` [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/command_args.rs:292:3 [INFO] [stderr] | [INFO] [stderr] 292 | fluff: fluff, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `fluff` [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/command_args.rs:167:3 [INFO] [stderr] | [INFO] [stderr] 167 | list_length: list_length, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `list_length` [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] [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/command_args.rs:293:3 [INFO] [stderr] | [INFO] [stderr] 293 | max_outputs: max_outputs, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `max_outputs` [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/command_args.rs:168:3 [INFO] [stderr] | [INFO] [stderr] 168 | password: password, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `password` [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/command_args.rs:315:3 [INFO] [stderr] | [INFO] [stderr] 315 | message: message, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `message` [INFO] [stderr] | [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/command_args.rs:191:3 [INFO] [stderr] | [INFO] [stderr] 191 | passphrase: passphrase, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `passphrase` [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/command_args.rs:329:3 [INFO] [stderr] | [INFO] [stderr] 329 | fluff: fluff, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `fluff` [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/command_args.rs:192:3 [INFO] [stderr] | [INFO] [stderr] 192 | recovery_phrase: recovery_phrase, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `recovery_phrase` [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/command_args.rs:364:3 [INFO] [stderr] | [INFO] [stderr] 364 | dump_file: dump_file, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `dump_file` [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/command_args.rs:221:28 [INFO] [stderr] | [INFO] [stderr] 221 | Ok(command::AccountArgs { create: create }) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `create` [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/command_args.rs:365:3 [INFO] [stderr] | [INFO] [stderr] 365 | fluff: fluff, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `fluff` [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/command_args.rs:285:3 [INFO] [stderr] | [INFO] [stderr] 285 | amount: amount, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `amount` [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/command_args.rs:393:3 [INFO] [stderr] | [INFO] [stderr] 393 | tx_id: tx_id, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `tx_id` [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/command_args.rs:286:3 [INFO] [stderr] | [INFO] [stderr] 286 | message: message, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `message` [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] | [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/command_args.rs:394:3 [INFO] [stderr] | [INFO] [stderr] 394 | tx_slate_id: tx_slate_id, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `tx_slate_id` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] | [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/command_args.rs:291:3 [INFO] [stderr] | [INFO] [stderr] 291 | change_outputs: change_outputs, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `change_outputs` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [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/command_args.rs:292:3 [INFO] [stderr] | [INFO] [stderr] 292 | fluff: fluff, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `fluff` [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/command_args.rs:293:3 [INFO] [stderr] | [INFO] [stderr] 293 | max_outputs: max_outputs, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `max_outputs` [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/error.rs:163:11 [INFO] [stderr] | [INFO] [stderr] 163 | 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/command_args.rs:315:3 [INFO] [stderr] | [INFO] [stderr] 315 | message: message, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `message` [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/command_args.rs:329:3 [INFO] [stderr] | [INFO] [stderr] 329 | fluff: fluff, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `fluff` [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/command_args.rs:364:3 [INFO] [stderr] | [INFO] [stderr] 364 | dump_file: dump_file, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `dump_file` [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/command_args.rs:365:3 [INFO] [stderr] | [INFO] [stderr] 365 | fluff: fluff, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `fluff` [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/command_args.rs:393:3 [INFO] [stderr] | [INFO] [stderr] 393 | tx_id: tx_id, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `tx_id` [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/command_args.rs:394:3 [INFO] [stderr] | [INFO] [stderr] 394 | tx_slate_id: tx_slate_id, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `tx_slate_id` [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:163:11 [INFO] [stderr] | [INFO] [stderr] 163 | 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/libwallet/api.rs:717:41 [INFO] [stderr] | [INFO] [stderr] 717 | let res = client.post_tx(&TxWrapper { tx_hex: tx_hex }, fluff); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `tx_hex` [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/libwallet/error.rs:253:11 [INFO] [stderr] | [INFO] [stderr] 253 | 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/libwallet/api.rs:717:41 [INFO] [stderr] | [INFO] [stderr] 717 | let res = client.post_tx(&TxWrapper { tx_hex: tx_hex }, fluff); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `tx_hex` [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/libwallet/internal/restore.rs:92:4 [INFO] [stderr] | [INFO] [stderr] 92 | lock_height: lock_height, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `lock_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] [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/libwallet/error.rs:253:11 [INFO] [stderr] | [INFO] [stderr] 253 | Error { inner: inner } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `inner` [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/libwallet/internal/selection.rs:205:4 [INFO] [stderr] | [INFO] [stderr] 205 | 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/libwallet/internal/restore.rs:92:4 [INFO] [stderr] | [INFO] [stderr] 92 | lock_height: lock_height, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `lock_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/libwallet/internal/updater.rs:443:4 [INFO] [stderr] | [INFO] [stderr] 443 | 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/libwallet/internal/selection.rs:205:4 [INFO] [stderr] | [INFO] [stderr] 205 | 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/libwallet/internal/updater.rs:443:4 [INFO] [stderr] | [INFO] [stderr] 443 | 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/libwallet/internal/updater.rs:444:4 [INFO] [stderr] | [INFO] [stderr] 444 | lock_height: lock_height, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `lock_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/libwallet/types.rs:375:4 [INFO] [stderr] | [INFO] [stderr] 375 | sec_key: sec_key, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `sec_key` [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/libwallet/types.rs:624:4 [INFO] [stderr] | [INFO] [stderr] 624 | parent_key_id: parent_key_id, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `parent_key_id` [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/libwallet/internal/updater.rs:444:4 [INFO] [stderr] | [INFO] [stderr] 444 | lock_height: lock_height, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `lock_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/libwallet/types.rs:626:4 [INFO] [stderr] | [INFO] [stderr] 626 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [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/libwallet/types.rs:375:4 [INFO] [stderr] | [INFO] [stderr] 375 | sec_key: sec_key, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `sec_key` [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/node_clients/http.rs:42:4 [INFO] [stderr] | [INFO] [stderr] 42 | node_api_secret: node_api_secret, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `node_api_secret` [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/libwallet/types.rs:624:4 [INFO] [stderr] | [INFO] [stderr] 624 | parent_key_id: parent_key_id, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `parent_key_id` [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] = 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/libwallet/types.rs:626:4 [INFO] [stderr] | [INFO] [stderr] 626 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [INFO] [stderr] [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/node_clients/http.rs:42:4 [INFO] [stderr] | [INFO] [stderr] 42 | node_api_secret: node_api_secret, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `node_api_secret` [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:37:1 [INFO] [stderr] | [INFO] [stderr] 37 | #[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/adapters/keybase.rs:197:19 [INFO] [stderr] | [INFO] [stderr] 197 | Some(slate) => return Ok(slate), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(slate)` [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/adapters/keybase.rs:198:12 [INFO] [stderr] | [INFO] [stderr] 198 | None => return Err(ErrorKind::ClientCallback("Receiving reply from recipient"))?, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(ErrorKind::ClientCallback("Receiving reply from recipient"))?` [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: unneeded return statement [INFO] [stderr] --> src/command.rs:410:5 [INFO] [stderr] | [INFO] [stderr] 410 | return Ok(()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [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: unneeded return statement [INFO] [stderr] --> src/command.rs:417:5 [INFO] [stderr] | [INFO] [stderr] 417 | return Ok(()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [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: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/display.rs:200:10 [INFO] [stderr] | [INFO] [stderr] 200 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 201 | | if t.confirmed { [INFO] [stderr] 202 | | table.add_row(row![ [INFO] [stderr] 203 | | bFD->id, [INFO] [stderr] ... | [INFO] [stderr] 233 | | } [INFO] [stderr] 234 | | } [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] 200 | } else if t.confirmed { [INFO] [stderr] 201 | table.add_row(row![ [INFO] [stderr] 202 | bFD->id, [INFO] [stderr] 203 | bFb->entry_type, [INFO] [stderr] 204 | bFD->slate_id, [INFO] [stderr] 205 | bFB->creation_ts, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/libwallet/internal/selection.rs:453:9 [INFO] [stderr] | [INFO] [stderr] 453 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 454 | | if let Some(outputs) = select_from(amount, select_all, eligible.clone()) { [INFO] [stderr] 455 | | return (max_available, outputs); [INFO] [stderr] 456 | | } [INFO] [stderr] 457 | | } [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] 453 | } else if let Some(outputs) = select_from(amount, select_all, eligible.clone()) { [INFO] [stderr] 454 | return (max_available, outputs); [INFO] [stderr] 455 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/libwallet/internal/selection.rs:473:4 [INFO] [stderr] | [INFO] [stderr] 473 | return Some(outputs.iter().cloned().collect()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(outputs.iter().cloned().collect())` [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: unneeded return statement [INFO] [stderr] --> src/libwallet/internal/selection.rs:476:4 [INFO] [stderr] | [INFO] [stderr] 476 | return Some( [INFO] [stderr] | _____________^ [INFO] [stderr] 477 | | outputs [INFO] [stderr] 478 | | .iter() [INFO] [stderr] 479 | | .take_while(|out| { [INFO] [stderr] ... | [INFO] [stderr] 484 | | .collect(), [INFO] [stderr] 485 | | ); [INFO] [stderr] | |______________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 476 | Some( [INFO] [stderr] 477 | outputs [INFO] [stderr] 478 | .iter() [INFO] [stderr] 479 | .take_while(|out| { [INFO] [stderr] 480 | let res = selected_amount < amount; [INFO] [stderr] 481 | selected_amount += out.value; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/libwallet/types.rs:295:4 [INFO] [stderr] | [INFO] [stderr] 295 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [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: unneeded return statement [INFO] [stderr] --> src/libwallet/types.rs:297:4 [INFO] [stderr] | [INFO] [stderr] 297 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [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: unneeded return statement [INFO] [stderr] --> src/libwallet/types.rs:299:4 [INFO] [stderr] | [INFO] [stderr] 299 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [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: unneeded return statement [INFO] [stderr] --> src/libwallet/types.rs:303:4 [INFO] [stderr] | [INFO] [stderr] 303 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [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: unneeded return statement [INFO] [stderr] --> src/libwallet/types.rs:305:4 [INFO] [stderr] | [INFO] [stderr] 305 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [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: unneeded return statement [INFO] [stderr] --> src/libwallet/types.rs:307:4 [INFO] [stderr] | [INFO] [stderr] 307 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [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/lmdb_wallet.rs:30:20 [INFO] [stderr] | [INFO] [stderr] 30 | pub const DB_DIR: &'static str = "db"; [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/types.rs:33:23 [INFO] [stderr] | [INFO] [stderr] 33 | pub const SEED_FILE: &'static str = "wallet.seed"; [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: unused `#[macro_use]` import [INFO] [stderr] --> src/lib.rs:37:1 [INFO] [stderr] | [INFO] [stderr] 37 | #[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/adapters/keybase.rs:197:19 [INFO] [stderr] | [INFO] [stderr] 197 | Some(slate) => return Ok(slate), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(slate)` [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/adapters/keybase.rs:198:12 [INFO] [stderr] | [INFO] [stderr] 198 | None => return Err(ErrorKind::ClientCallback("Receiving reply from recipient"))?, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(ErrorKind::ClientCallback("Receiving reply from recipient"))?` [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: unneeded return statement [INFO] [stderr] --> src/command.rs:410:5 [INFO] [stderr] | [INFO] [stderr] 410 | return Ok(()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [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: unneeded return statement [INFO] [stderr] --> src/command.rs:417:5 [INFO] [stderr] | [INFO] [stderr] 417 | return Ok(()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [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: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/display.rs:200:10 [INFO] [stderr] | [INFO] [stderr] 200 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 201 | | if t.confirmed { [INFO] [stderr] 202 | | table.add_row(row![ [INFO] [stderr] 203 | | bFD->id, [INFO] [stderr] ... | [INFO] [stderr] 233 | | } [INFO] [stderr] 234 | | } [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] 200 | } else if t.confirmed { [INFO] [stderr] 201 | table.add_row(row![ [INFO] [stderr] 202 | bFD->id, [INFO] [stderr] 203 | bFb->entry_type, [INFO] [stderr] 204 | bFD->slate_id, [INFO] [stderr] 205 | bFB->creation_ts, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/libwallet/internal/selection.rs:453:9 [INFO] [stderr] | [INFO] [stderr] 453 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 454 | | if let Some(outputs) = select_from(amount, select_all, eligible.clone()) { [INFO] [stderr] 455 | | return (max_available, outputs); [INFO] [stderr] 456 | | } [INFO] [stderr] 457 | | } [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] 453 | } else if let Some(outputs) = select_from(amount, select_all, eligible.clone()) { [INFO] [stderr] 454 | return (max_available, outputs); [INFO] [stderr] 455 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/libwallet/internal/selection.rs:473:4 [INFO] [stderr] | [INFO] [stderr] 473 | return Some(outputs.iter().cloned().collect()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(outputs.iter().cloned().collect())` [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: unneeded return statement [INFO] [stderr] --> src/libwallet/internal/selection.rs:476:4 [INFO] [stderr] | [INFO] [stderr] 476 | return Some( [INFO] [stderr] | _____________^ [INFO] [stderr] 477 | | outputs [INFO] [stderr] 478 | | .iter() [INFO] [stderr] 479 | | .take_while(|out| { [INFO] [stderr] ... | [INFO] [stderr] 484 | | .collect(), [INFO] [stderr] 485 | | ); [INFO] [stderr] | |______________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 476 | Some( [INFO] [stderr] 477 | outputs [INFO] [stderr] 478 | .iter() [INFO] [stderr] 479 | .take_while(|out| { [INFO] [stderr] 480 | let res = selected_amount < amount; [INFO] [stderr] 481 | selected_amount += out.value; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/libwallet/types.rs:295:4 [INFO] [stderr] | [INFO] [stderr] 295 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [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: unneeded return statement [INFO] [stderr] --> src/libwallet/types.rs:297:4 [INFO] [stderr] | [INFO] [stderr] 297 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [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: unneeded return statement [INFO] [stderr] --> src/libwallet/types.rs:299:4 [INFO] [stderr] | [INFO] [stderr] 299 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [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: unneeded return statement [INFO] [stderr] --> src/libwallet/types.rs:303:4 [INFO] [stderr] | [INFO] [stderr] 303 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [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: unneeded return statement [INFO] [stderr] --> src/libwallet/types.rs:305:4 [INFO] [stderr] | [INFO] [stderr] 305 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [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: unneeded return statement [INFO] [stderr] --> src/libwallet/types.rs:307:4 [INFO] [stderr] | [INFO] [stderr] 307 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [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/lmdb_wallet.rs:30:20 [INFO] [stderr] | [INFO] [stderr] 30 | pub const DB_DIR: &'static str = "db"; [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/types.rs:33:23 [INFO] [stderr] | [INFO] [stderr] 33 | pub const SEED_FILE: &'static str = "wallet.seed"; [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: methods called `new` usually return `Self` [INFO] [stderr] --> src/adapters/file.rs:31:2 [INFO] [stderr] | [INFO] [stderr] 31 | pub fn new() -> Box { [INFO] [stderr] | _____^ [INFO] [stderr] 32 | | Box::new(FileWalletCommAdapter {}) [INFO] [stderr] 33 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_ret_no_self)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/adapters/http.rs:30:2 [INFO] [stderr] | [INFO] [stderr] 30 | pub fn new() -> Box { [INFO] [stderr] | _____^ [INFO] [stderr] 31 | | Box::new(HTTPWalletCommAdapter {}) [INFO] [stderr] 32 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/adapters/http.rs:76:21 [INFO] [stderr] | [INFO] [stderr] 76 | let listen_addr = params.get("api_listen_addr").unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `¶ms["api_listen_addr"]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/adapters/http.rs:80:5 [INFO] [stderr] | [INFO] [stderr] 80 | params.get("private_key").unwrap().to_owned(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `¶ms["private_key"]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/adapters/keybase.rs:42:2 [INFO] [stderr] | [INFO] [stderr] 42 | pub fn new() -> Box { [INFO] [stderr] | _____^ [INFO] [stderr] 43 | | let mut proc = if cfg!(target_os = "windows") { [INFO] [stderr] 44 | | Command::new("where") [INFO] [stderr] 45 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 53 | | Box::new(KeybaseWalletCommAdapter {}) [INFO] [stderr] 54 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/adapters/keybase.rs:88:51 [INFO] [stderr] | [INFO] [stderr] 88 | if (msg["msg"]["content"]["type"] == "text") && (msg["msg"]["unread"] == true) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `msg["msg"]["unread"]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/adapters/keybase.rs:117:6 [INFO] [stderr] | [INFO] [stderr] 117 | if (msg["unread"] == true) && (msg["channel"]["topic_name"] == topic) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `msg["unread"]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/adapters/keybase.rs:165:4 [INFO] [stderr] | [INFO] [stderr] 165 | match blob { [INFO] [stderr] | _____________^ [INFO] [stderr] 166 | | Ok(slate) => { [INFO] [stderr] 167 | | println!("Received message from {}", channel); [INFO] [stderr] 168 | | return Some(slate); [INFO] [stderr] 169 | | } [INFO] [stderr] 170 | | Err(_) => (), [INFO] [stderr] 171 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 165 | if let Ok(slate) = blob { [INFO] [stderr] 166 | println!("Received message from {}", channel); [INFO] [stderr] 167 | return Some(slate); [INFO] [stderr] 168 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/adapters/keybase.rs:190:3 [INFO] [stderr] | [INFO] [stderr] 190 | match send(slate, addr, SLATE_NEW, TTL) { [INFO] [stderr] | _________^ [INFO] [stderr] 191 | | true => (), [INFO] [stderr] 192 | | false => return Err(ErrorKind::ClientCallback("Posting transaction slate"))?, [INFO] [stderr] 193 | | } [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if !send(slate, addr, SLATE_NEW, TTL) { return Err(ErrorKind::ClientCallback("Posting transaction slate"))? }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/adapters/keybase.rs:196:14 [INFO] [stderr] | [INFO] [stderr] 196 | match poll(TTL as u64, addr) { [INFO] [stderr] | ^^^^^^^^^^ help: try: `u64::from(TTL)` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/adapters/keybase.rs:232:5 [INFO] [stderr] | [INFO] [stderr] 232 | match blob { [INFO] [stderr] | _________________^ [INFO] [stderr] 233 | | Ok(mut slate) => { [INFO] [stderr] 234 | | println!("Received message from channel {}", channel); [INFO] [stderr] 235 | | match controller::foreign_single_use(wallet.clone(), |api| { [INFO] [stderr] ... | [INFO] [stderr] 253 | | Err(_) => (), [INFO] [stderr] 254 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 232 | if let Ok(mut slate) = blob { [INFO] [stderr] 233 | println!("Received message from channel {}", channel); [INFO] [stderr] 234 | match controller::foreign_single_use(wallet.clone(), |api| { [INFO] [stderr] 235 | api.receive_tx(&mut slate, None, None)?; [INFO] [stderr] 236 | Ok(()) [INFO] [stderr] 237 | }) { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/adapters/keybase.rs:240:17 [INFO] [stderr] | [INFO] [stderr] 240 | Ok(_) => match send(slate, channel, SLATE_SIGNED, TTL) { [INFO] [stderr] | ______________________________________^ [INFO] [stderr] 241 | | true => { [INFO] [stderr] 242 | | println!("Returned slate to {}", channel); [INFO] [stderr] 243 | | } [INFO] [stderr] ... | [INFO] [stderr] 246 | | } [INFO] [stderr] 247 | | }, [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 240 | Ok(_) => if send(slate, channel, SLATE_SIGNED, TTL) { [INFO] [stderr] 241 | println!("Returned slate to {}", channel); [INFO] [stderr] 242 | } else { [INFO] [stderr] 243 | println!("Failed to return slate to {}", channel); [INFO] [stderr] 244 | }, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/adapters/file.rs:31:2 [INFO] [stderr] | [INFO] [stderr] 31 | pub fn new() -> Box { [INFO] [stderr] | _____^ [INFO] [stderr] 32 | | Box::new(FileWalletCommAdapter {}) [INFO] [stderr] 33 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_ret_no_self)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/adapters/http.rs:30:2 [INFO] [stderr] | [INFO] [stderr] 30 | pub fn new() -> Box { [INFO] [stderr] | _____^ [INFO] [stderr] 31 | | Box::new(HTTPWalletCommAdapter {}) [INFO] [stderr] 32 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/adapters/http.rs:76:21 [INFO] [stderr] | [INFO] [stderr] 76 | let listen_addr = params.get("api_listen_addr").unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `¶ms["api_listen_addr"]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/adapters/http.rs:80:5 [INFO] [stderr] | [INFO] [stderr] 80 | params.get("private_key").unwrap().to_owned(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `¶ms["private_key"]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/adapters/keybase.rs:42:2 [INFO] [stderr] | [INFO] [stderr] 42 | pub fn new() -> Box { [INFO] [stderr] | _____^ [INFO] [stderr] 43 | | let mut proc = if cfg!(target_os = "windows") { [INFO] [stderr] 44 | | Command::new("where") [INFO] [stderr] 45 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 53 | | Box::new(KeybaseWalletCommAdapter {}) [INFO] [stderr] 54 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/command.rs:300:3 [INFO] [stderr] | [INFO] [stderr] 300 | let _ = api.finalize_tx(&mut slate).expect("Finalize failed"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_unit_value)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/adapters/keybase.rs:88:51 [INFO] [stderr] | [INFO] [stderr] 88 | if (msg["msg"]["content"]["type"] == "text") && (msg["msg"]["unread"] == true) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `msg["msg"]["unread"]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/command.rs:361:24 [INFO] [stderr] | [INFO] [stderr] 361 | let include_status = !args.id.is_some(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `args.id.is_none()` [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: equality checks against true are unnecessary [INFO] [stderr] --> src/adapters/keybase.rs:117:6 [INFO] [stderr] | [INFO] [stderr] 117 | if (msg["unread"] == true) && (msg["channel"]["topic_name"] == topic) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `msg["unread"]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/adapters/keybase.rs:165:4 [INFO] [stderr] | [INFO] [stderr] 165 | match blob { [INFO] [stderr] | _____________^ [INFO] [stderr] 166 | | Ok(slate) => { [INFO] [stderr] 167 | | println!("Received message from {}", channel); [INFO] [stderr] 168 | | return Some(slate); [INFO] [stderr] 169 | | } [INFO] [stderr] 170 | | Err(_) => (), [INFO] [stderr] 171 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 165 | if let Ok(slate) = blob { [INFO] [stderr] 166 | println!("Received message from {}", channel); [INFO] [stderr] 167 | return Some(slate); [INFO] [stderr] 168 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/adapters/keybase.rs:190:3 [INFO] [stderr] | [INFO] [stderr] 190 | match send(slate, addr, SLATE_NEW, TTL) { [INFO] [stderr] | _________^ [INFO] [stderr] 191 | | true => (), [INFO] [stderr] 192 | | false => return Err(ErrorKind::ClientCallback("Posting transaction slate"))?, [INFO] [stderr] 193 | | } [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if !send(slate, addr, SLATE_NEW, TTL) { return Err(ErrorKind::ClientCallback("Posting transaction slate"))? }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/adapters/keybase.rs:196:14 [INFO] [stderr] | [INFO] [stderr] 196 | match poll(TTL as u64, addr) { [INFO] [stderr] | ^^^^^^^^^^ help: try: `u64::from(TTL)` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/adapters/keybase.rs:232:5 [INFO] [stderr] | [INFO] [stderr] 232 | match blob { [INFO] [stderr] | _________________^ [INFO] [stderr] 233 | | Ok(mut slate) => { [INFO] [stderr] 234 | | println!("Received message from channel {}", channel); [INFO] [stderr] 235 | | match controller::foreign_single_use(wallet.clone(), |api| { [INFO] [stderr] ... | [INFO] [stderr] 253 | | Err(_) => (), [INFO] [stderr] 254 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 232 | if let Ok(mut slate) = blob { [INFO] [stderr] 233 | println!("Received message from channel {}", channel); [INFO] [stderr] 234 | match controller::foreign_single_use(wallet.clone(), |api| { [INFO] [stderr] 235 | api.receive_tx(&mut slate, None, None)?; [INFO] [stderr] 236 | Ok(()) [INFO] [stderr] 237 | }) { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/adapters/keybase.rs:240:17 [INFO] [stderr] | [INFO] [stderr] 240 | Ok(_) => match send(slate, channel, SLATE_SIGNED, TTL) { [INFO] [stderr] | ______________________________________^ [INFO] [stderr] 241 | | true => { [INFO] [stderr] 242 | | println!("Returned slate to {}", channel); [INFO] [stderr] 243 | | } [INFO] [stderr] ... | [INFO] [stderr] 246 | | } [INFO] [stderr] 247 | | }, [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 240 | Ok(_) => if send(slate, channel, SLATE_SIGNED, TTL) { [INFO] [stderr] 241 | println!("Returned slate to {}", channel); [INFO] [stderr] 242 | } else { [INFO] [stderr] 243 | println!("Failed to return slate to {}", channel); [INFO] [stderr] 244 | }, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/command_args.rs:80:7 [INFO] [stderr] | [INFO] [stderr] 80 | format!("Error decrypting wallet seed (check provided password)") [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Error decrypting wallet seed (check provided password)".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: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/command_args.rs:119:2 [INFO] [stderr] | [INFO] [stderr] 119 | let mut show_spent = false; [INFO] [stderr] | _____^ [INFO] [stderr] 120 | | if args.is_present("show_spent") { [INFO] [stderr] 121 | | show_spent = true; [INFO] [stderr] 122 | | } [INFO] [stderr] | |_____^ help: it is more idiomatic to write: `let show_spent = if args.is_present("show_spent") { true } else { false };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/command_args.rs:135:16 [INFO] [stderr] | [INFO] [stderr] 135 | let msg = format!("Private key for certificate is not set"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Private key for certificate is not set".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: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/command_args.rs:160:20 [INFO] [stderr] | [INFO] [stderr] 160 | let list_length = match args.is_present("short_wordlist") { [INFO] [stderr] | _______________________^ [INFO] [stderr] 161 | | false => 32, [INFO] [stderr] 162 | | true => 16, [INFO] [stderr] 163 | | }; [INFO] [stderr] | |_____^ help: consider using an if/else expression: `if args.is_present("short_wordlist") { 16 } else { 32 }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/command_args.rs:182:16 [INFO] [stderr] | [INFO] [stderr] 182 | let msg = format!("Recovery word phrase is invalid"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Recovery word phrase is invalid".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: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/command_args.rs:240:16 [INFO] [stderr] | [INFO] [stderr] 240 | let message = match args.is_present("message") { [INFO] [stderr] | ___________________^ [INFO] [stderr] 241 | | true => Some(args.value_of("message").unwrap().to_owned()), [INFO] [stderr] 242 | | false => None, [INFO] [stderr] 243 | | }; [INFO] [stderr] | |_____^ help: consider using an if/else expression: `if args.is_present("message") { Some(args.value_of("message").unwrap().to_owned()) } else { None }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/command_args.rs:299:16 [INFO] [stderr] | [INFO] [stderr] 299 | let message = match receive_args.is_present("message") { [INFO] [stderr] | ___________________^ [INFO] [stderr] 300 | | true => Some(receive_args.value_of("message").unwrap().to_owned()), [INFO] [stderr] 301 | | false => None, [INFO] [stderr] 302 | | }; [INFO] [stderr] | |_____^ help: consider using an if/else expression: `if receive_args.is_present("message") { Some(receive_args.value_of("message").unwrap().to_owned()) } else { None }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/command_args.rs:389:13 [INFO] [stderr] | [INFO] [stderr] 389 | let msg = format!("'id' (-i) or 'txid' (-t) argument is required."); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"'id' (-i) or 'txid' (-t) argument is required.".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 pattern matching, consider using `is_some()` [INFO] [stderr] --> src/controller.rs:184:10 [INFO] [stderr] | [INFO] [stderr] 184 | if let Some(_) = params.get("refresh") { [INFO] [stderr] | _________- ^^^^^^^ [INFO] [stderr] 185 | | update_from_node = true; [INFO] [stderr] 186 | | } [INFO] [stderr] | |_________- help: try this: `if params.get("refresh").is_some()` [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: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/controller.rs:187:10 [INFO] [stderr] | [INFO] [stderr] 187 | if let Some(_) = params.get("show_spent") { [INFO] [stderr] | _________- ^^^^^^^ [INFO] [stderr] 188 | | show_spent = true; [INFO] [stderr] 189 | | } [INFO] [stderr] | |_________- help: try this: `if params.get("show_spent").is_some()` [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 pattern matching, consider using `is_some()` [INFO] [stderr] --> src/controller.rs:209:10 [INFO] [stderr] | [INFO] [stderr] 209 | if let Some(_) = params.get("refresh") { [INFO] [stderr] | _________- ^^^^^^^ [INFO] [stderr] 210 | | update_from_node = true; [INFO] [stderr] 211 | | } [INFO] [stderr] | |_________- help: try this: `if params.get("refresh").is_some()` [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: single-character string constant used as pattern [INFO] [stderr] --> src/controller.rs:287:12 [INFO] [stderr] | [INFO] [stderr] 287 | .rsplit("/") [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/controller.rs:286:24 [INFO] [stderr] | [INFO] [stderr] 286 | .trim_right_matches("/") [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/command.rs:300:3 [INFO] [stderr] | [INFO] [stderr] 300 | let _ = api.finalize_tx(&mut slate).expect("Finalize failed"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_unit_value)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/command.rs:361:24 [INFO] [stderr] | [INFO] [stderr] 361 | let include_status = !args.id.is_some(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `args.id.is_none()` [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: use of `or_insert` followed by a function call [INFO] [stderr] --> src/controller.rs:430:18 [INFO] [stderr] | [INFO] [stderr] 430 | hm.entry(k).or_insert(vec![]).push(v); [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: useless use of `format!` [INFO] [stderr] --> src/command_args.rs:80:7 [INFO] [stderr] | [INFO] [stderr] 80 | format!("Error decrypting wallet seed (check provided password)") [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Error decrypting wallet seed (check provided password)".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: single-character string constant used as pattern [INFO] [stderr] --> src/controller.rs:453:12 [INFO] [stderr] | [INFO] [stderr] 453 | .rsplit("/") [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/controller.rs:452:24 [INFO] [stderr] | [INFO] [stderr] 452 | .trim_right_matches("/") [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/command_args.rs:119:2 [INFO] [stderr] | [INFO] [stderr] 119 | let mut show_spent = false; [INFO] [stderr] | _____^ [INFO] [stderr] 120 | | if args.is_present("show_spent") { [INFO] [stderr] 121 | | show_spent = true; [INFO] [stderr] 122 | | } [INFO] [stderr] | |_____^ help: it is more idiomatic to write: `let show_spent = if args.is_present("show_spent") { true } else { false };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/command_args.rs:135:16 [INFO] [stderr] | [INFO] [stderr] 135 | let msg = format!("Private key for certificate is not set"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Private key for certificate is not set".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] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/command_args.rs:160:20 [INFO] [stderr] | [INFO] [stderr] 160 | let list_length = match args.is_present("short_wordlist") { [INFO] [stderr] --> src/controller.rs:499:15 [INFO] [stderr] | _______________________^ [INFO] [stderr] | [INFO] [stderr] 161 | | false => 32, [INFO] [stderr] 499 | .and_then(|r| ok(r)) [INFO] [stderr] | ^^^^^^^^^ help: remove closure as shown: `ok` [INFO] [stderr] 162 | | true => 16, [INFO] [stderr] 163 | | }; [INFO] [stderr] | |_____^ help: consider using an if/else expression: `if args.is_present("short_wordlist") { 16 } else { 32 }` [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [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] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/command_args.rs:182:16 [INFO] [stderr] | [INFO] [stderr] 182 | let msg = format!("Recovery word phrase is invalid"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Recovery word phrase is invalid".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: single-character string constant used as pattern [INFO] [stderr] --> src/controller.rs:572:12 [INFO] [stderr] | [INFO] [stderr] 572 | .rsplit("/") [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/controller.rs:571:24 [INFO] [stderr] | [INFO] [stderr] 571 | .trim_right_matches("/") [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/controller.rs:595:46 [INFO] [stderr] | [INFO] [stderr] 595 | Box::new(self.handle_request(req).and_then(|r| ok(r)).or_else(|e| { [INFO] [stderr] | ^^^^^^^^^ help: remove closure as shown: `ok` [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: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/command_args.rs:240:16 [INFO] [stderr] | [INFO] [stderr] 240 | let message = match args.is_present("message") { [INFO] [stderr] | ___________________^ [INFO] [stderr] 241 | | true => Some(args.value_of("message").unwrap().to_owned()), [INFO] [stderr] 242 | | false => None, [INFO] [stderr] 243 | | }; [INFO] [stderr] | |_____^ help: consider using an if/else expression: `if args.is_present("message") { Some(args.value_of("message").unwrap().to_owned()) } else { None }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/command_args.rs:299:16 [INFO] [stderr] | [INFO] [stderr] 299 | let message = match receive_args.is_present("message") { [INFO] [stderr] | ___________________^ [INFO] [stderr] 300 | | true => Some(receive_args.value_of("message").unwrap().to_owned()), [INFO] [stderr] 301 | | false => None, [INFO] [stderr] 302 | | }; [INFO] [stderr] | |_____^ help: consider using an if/else expression: `if receive_args.is_present("message") { Some(receive_args.value_of("message").unwrap().to_owned()) } else { None }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/controller.rs:655:17 [INFO] [stderr] | [INFO] [stderr] 655 | hm.entry(k).or_insert(vec![]).push(v); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| vec![])` [INFO] [stderr] | [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: useless use of `format!` [INFO] [stderr] --> src/command_args.rs:389:13 [INFO] [stderr] | [INFO] [stderr] 389 | let msg = format!("'id' (-i) or 'txid' (-t) argument is required."); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"'id' (-i) or 'txid' (-t) argument is required.".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/display.rs:57:16 [INFO] [stderr] | [INFO] [stderr] 57 | let commit = format!("{}", util::to_hex(commit.as_ref().to_vec())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `util::to_hex(commit.as_ref().to_vec()).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] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/display.rs:69:15 [INFO] [stderr] | [INFO] [stderr] 69 | let value = format!("{}", core::amount_to_hr_string(out.value, false)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `core::amount_to_hr_string(out.value, false).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] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/controller.rs:184:10 [INFO] [stderr] | [INFO] [stderr] 184 | if let Some(_) = params.get("refresh") { [INFO] [stderr] | _________- ^^^^^^^ [INFO] [stderr] 185 | | update_from_node = true; [INFO] [stderr] 186 | | } [INFO] [stderr] | |_________- help: try this: `if params.get("refresh").is_some()` [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: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/controller.rs:187:10 [INFO] [stderr] | [INFO] [stderr] 187 | if let Some(_) = params.get("show_spent") { [INFO] [stderr] | _________- ^^^^^^^ [INFO] [stderr] 188 | | show_spent = true; [INFO] [stderr] 189 | | } [INFO] [stderr] | |_________- help: try this: `if params.get("show_spent").is_some()` [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 pattern matching, consider using `is_some()` [INFO] [stderr] --> src/controller.rs:209:10 [INFO] [stderr] | [INFO] [stderr] 209 | if let Some(_) = params.get("refresh") { [INFO] [stderr] | _________- ^^^^^^^ [INFO] [stderr] 210 | | update_from_node = true; [INFO] [stderr] 211 | | } [INFO] [stderr] | |_________- help: try this: `if params.get("refresh").is_some()` [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: useless use of `format!` [INFO] [stderr] --> src/display.rs:169:15 [INFO] [stderr] | [INFO] [stderr] 169 | Some(f) => format!("{}", core::amount_to_hr_string(f, true)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `core::amount_to_hr_string(f, true).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] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/display.rs:181:15 [INFO] [stderr] | [INFO] [stderr] 181 | Some(_) => format!("Exists"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Exists".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: single-character string constant used as pattern [INFO] [stderr] --> src/controller.rs:287:12 [INFO] [stderr] | [INFO] [stderr] 287 | .rsplit("/") [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/controller.rs:286:24 [INFO] [stderr] | [INFO] [stderr] 286 | .trim_right_matches("/") [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/controller.rs:430:18 [INFO] [stderr] | [INFO] [stderr] 430 | hm.entry(k).or_insert(vec![]).push(v); [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 if-then-else expression returns a bool literal [INFO] [stderr] --> src/error.rs:117:13 [INFO] [stderr] | [INFO] [stderr] 117 | Ok(r) => if r == "1" { [INFO] [stderr] | ______________________^ [INFO] [stderr] 118 | | true [INFO] [stderr] 119 | | } else { [INFO] [stderr] 120 | | false [INFO] [stderr] 121 | | }, [INFO] [stderr] | |_____________^ help: you can reduce it to: `r == "1"` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/controller.rs:453:12 [INFO] [stderr] | [INFO] [stderr] 453 | .rsplit("/") [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/controller.rs:452:24 [INFO] [stderr] | [INFO] [stderr] 452 | .trim_right_matches("/") [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/controller.rs:499:15 [INFO] [stderr] | [INFO] [stderr] 499 | .and_then(|r| ok(r)) [INFO] [stderr] | ^^^^^^^^^ help: remove closure as shown: `ok` [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: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/libwallet/api.rs:344:3 [INFO] [stderr] | [INFO] [stderr] 344 | let mut validated = false; [INFO] [stderr] | _________^ [INFO] [stderr] 345 | | if refresh_from_node { [INFO] [stderr] 346 | | validated = self.update_outputs(&mut w); [INFO] [stderr] 347 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let validated = if refresh_from_node { self.update_outputs(&mut w) } else { false };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/libwallet/api.rs:421:3 [INFO] [stderr] | [INFO] [stderr] 421 | let mut validated = false; [INFO] [stderr] | _________^ [INFO] [stderr] 422 | | if refresh_from_node { [INFO] [stderr] 423 | | validated = self.update_outputs(&mut w); [INFO] [stderr] 424 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let validated = if refresh_from_node { self.update_outputs(&mut w) } else { false };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/libwallet/api.rs:492:3 [INFO] [stderr] | [INFO] [stderr] 492 | let mut validated = false; [INFO] [stderr] | _________^ [INFO] [stderr] 493 | | if refresh_from_node { [INFO] [stderr] 494 | | validated = self.update_outputs(&mut w); [INFO] [stderr] 495 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let validated = if refresh_from_node { self.update_outputs(&mut w) } else { false };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/controller.rs:572:12 [INFO] [stderr] | [INFO] [stderr] 572 | .rsplit("/") [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/controller.rs:571:24 [INFO] [stderr] | [INFO] [stderr] 571 | .trim_right_matches("/") [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (8/7) [INFO] [stderr] --> src/libwallet/api.rs:606:2 [INFO] [stderr] | [INFO] [stderr] 606 | pub fn initiate_tx( [INFO] [stderr] | _____^ [INFO] [stderr] 607 | | &mut self, [INFO] [stderr] 608 | | src_acct_name: Option<&str>, [INFO] [stderr] 609 | | amount: u64, [INFO] [stderr] ... | [INFO] [stderr] 650 | | Ok((slate, lock_fn)) [INFO] [stderr] 651 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/controller.rs:595:46 [INFO] [stderr] | [INFO] [stderr] 595 | Box::new(self.handle_request(req).and_then(|r| ok(r)).or_else(|e| { [INFO] [stderr] | ^^^^^^^^^ help: remove closure as shown: `ok` [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: use of `or_insert` followed by a function call [INFO] [stderr] --> src/controller.rs:655:17 [INFO] [stderr] | [INFO] [stderr] 655 | hm.entry(k).or_insert(vec![]).push(v); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| vec![])` [INFO] [stderr] | [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: redundant pattern matching, consider using `is_ok()` [INFO] [stderr] --> src/libwallet/api.rs:770:3 [INFO] [stderr] | [INFO] [stderr] 770 | match updater::refresh_outputs(&mut *w, &parent_key_id) { [INFO] [stderr] | _________^ [INFO] [stderr] 771 | | Ok(_) => true, [INFO] [stderr] 772 | | Err(_) => false, [INFO] [stderr] 773 | | } [INFO] [stderr] | |_________^ help: try this: `updater::refresh_outputs(&mut *w, &parent_key_id).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: useless use of `format!` [INFO] [stderr] --> src/display.rs:57:16 [INFO] [stderr] | [INFO] [stderr] 57 | let commit = format!("{}", util::to_hex(commit.as_ref().to_vec())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `util::to_hex(commit.as_ref().to_vec()).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] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/display.rs:69:15 [INFO] [stderr] | [INFO] [stderr] 69 | let value = format!("{}", core::amount_to_hr_string(out.value, false)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `core::amount_to_hr_string(out.value, false).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] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/libwallet/error.rs:200:13 [INFO] [stderr] | [INFO] [stderr] 200 | Ok(r) => if r == "1" { [INFO] [stderr] | ______________________^ [INFO] [stderr] 201 | | true [INFO] [stderr] 202 | | } else { [INFO] [stderr] 203 | | false [INFO] [stderr] 204 | | }, [INFO] [stderr] | |_____________^ help: you can reduce it to: `r == "1"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/libwallet/error.rs:230:12 [INFO] [stderr] | [INFO] [stderr] 230 | None => format!("Unknown"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Unknown".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 pattern matching, consider using `is_some()` [INFO] [stderr] --> src/libwallet/internal/keys.rs:65:9 [INFO] [stderr] | [INFO] [stderr] 65 | if let Some(_) = wallet.acct_path_iter().find(|l| l.label == label) { [INFO] [stderr] | _____- ^^^^^^^ [INFO] [stderr] 66 | | return Err(ErrorKind::AccountLabelAlreadyExists(label.clone()).into()); [INFO] [stderr] 67 | | } [INFO] [stderr] | |_____- help: try this: `if wallet.acct_path_iter().find(|l| l.label == label).is_some()` [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: useless use of `format!` [INFO] [stderr] --> src/display.rs:169:15 [INFO] [stderr] | [INFO] [stderr] 169 | Some(f) => format!("{}", core::amount_to_hr_string(f, true)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `core::amount_to_hr_string(f, true).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] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/display.rs:181:15 [INFO] [stderr] | [INFO] [stderr] 181 | Some(_) => format!("Exists"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Exists".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: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/libwallet/internal/restore.rs:155:21 [INFO] [stderr] | [INFO] [stderr] 155 | let entry_type = match output.is_coinbase { [INFO] [stderr] | ______________________________^ [INFO] [stderr] 156 | | true => TxLogEntryType::ConfirmedCoinbase, [INFO] [stderr] 157 | | false => TxLogEntryType::TxReceived, [INFO] [stderr] 158 | | }; [INFO] [stderr] | |_____________^ help: consider using an if/else expression: `if output.is_coinbase { TxLogEntryType::ConfirmedCoinbase } else { TxLogEntryType::TxReceived }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/libwallet/internal/restore.rs:179:26 [INFO] [stderr] | [INFO] [stderr] 179 | let max_child_index = found_parents.get(&parent_key_id).unwrap().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*found_parents.get(&parent_key_id).unwrap()` [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: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/libwallet/internal/restore.rs:179:26 [INFO] [stderr] | [INFO] [stderr] 179 | let max_child_index = found_parents.get(&parent_key_id).unwrap().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&found_parents[&parent_key_id]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/libwallet/internal/restore.rs:196:3 [INFO] [stderr] | [INFO] [stderr] 196 | index = index + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: replace it with: `index += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (11/7) [INFO] [stderr] --> src/libwallet/internal/selection.rs:28:1 [INFO] [stderr] | [INFO] [stderr] 28 | / pub fn build_send_tx_slate( [INFO] [stderr] 29 | | wallet: &mut T, [INFO] [stderr] 30 | | num_participants: usize, [INFO] [stderr] 31 | | amount: u64, [INFO] [stderr] ... | [INFO] [stderr] 140 | | Ok((slate, context, update_sender_wallet_fn)) [INFO] [stderr] 141 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/libwallet/internal/selection.rs:71:17 [INFO] [stderr] | [INFO] [stderr] 71 | let slate_id = slate.id.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `slate.id` [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: manual implementation of an assign operation [INFO] [stderr] --> src/libwallet/internal/selection.rs:113:4 [INFO] [stderr] | [INFO] [stderr] 113 | amount_debited = amount_debited + coin.value; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `amount_debited += coin.value` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/libwallet/internal/selection.rs:127:12 [INFO] [stderr] | [INFO] [stderr] 127 | value: change_amount.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*change_amount` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/libwallet/internal/selection.rs:173:17 [INFO] [stderr] | [INFO] [stderr] 173 | let slate_id = slate.id.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `slate.id` [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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/libwallet/internal/selection.rs:230:6 [INFO] [stderr] | [INFO] [stderr] 230 | ) -> Result< [INFO] [stderr] | ______^ [INFO] [stderr] 231 | | ( [INFO] [stderr] 232 | | Vec>>, [INFO] [stderr] 233 | | Vec, [INFO] [stderr] ... | [INFO] [stderr] 238 | | Error, [INFO] [stderr] 239 | | > [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (9/7) [INFO] [stderr] --> src/libwallet/internal/selection.rs:220:1 [INFO] [stderr] | [INFO] [stderr] 220 | / pub fn select_send_tx( [INFO] [stderr] 221 | | wallet: &mut T, [INFO] [stderr] 222 | | amount: u64, [INFO] [stderr] 223 | | current_height: u64, [INFO] [stderr] ... | [INFO] [stderr] 325 | | Ok((parts, coins, change_amounts_derivations, amount, fee)) [INFO] [stderr] 326 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [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/libwallet/internal/selection.rs:330:9 [INFO] [stderr] | [INFO] [stderr] 330 | coins: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: change this to: `&[OutputData]` [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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/libwallet/internal/selection.rs:335:6 [INFO] [stderr] | [INFO] [stderr] 335 | ) -> Result<(Vec>>, Vec<(u64, Identifier)>), Error> [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/error.rs:117:13 [INFO] [stderr] | [INFO] [stderr] 117 | Ok(r) => if r == "1" { [INFO] [stderr] | ______________________^ [INFO] [stderr] 118 | | true [INFO] [stderr] 119 | | } else { [INFO] [stderr] 120 | | false [INFO] [stderr] 121 | | }, [INFO] [stderr] | |_____________^ help: you can reduce it to: `r == "1"` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: called `cloned().collect()` on a slice to create a `Vec`. Calling `to_vec()` is both faster and more readable [INFO] [stderr] --> src/libwallet/internal/selection.rs:438:29 [INFO] [stderr] | [INFO] [stderr] 438 | let windowed_eligibles = window.iter().cloned().collect::>(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::iter_cloned_collect)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_cloned_collect [INFO] [stderr] [INFO] [stderr] warning: called `cloned().collect()` on a slice to create a `Vec`. Calling `to_vec()` is both faster and more readable [INFO] [stderr] --> src/libwallet/internal/selection.rs:473:16 [INFO] [stderr] | [INFO] [stderr] 473 | return Some(outputs.iter().cloned().collect()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_cloned_collect [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/libwallet/internal/tx.rs:50:2 [INFO] [stderr] | [INFO] [stderr] 50 | let _ = slate.fill_round_1( [INFO] [stderr] | _____^ [INFO] [stderr] 51 | | wallet.keychain(), [INFO] [stderr] 52 | | &mut context.sec_key, [INFO] [stderr] 53 | | &context.sec_nonce, [INFO] [stderr] 54 | | 1, [INFO] [stderr] 55 | | message, [INFO] [stderr] 56 | | )?; [INFO] [stderr] | |_______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/libwallet/internal/tx.rs:59:2 [INFO] [stderr] | [INFO] [stderr] 59 | let _ = slate.fill_round_2(wallet.keychain(), &context.sec_key, &context.sec_nonce, 1)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (9/7) [INFO] [stderr] --> src/libwallet/internal/tx.rs:69:1 [INFO] [stderr] | [INFO] [stderr] 69 | / pub fn create_send_tx( [INFO] [stderr] 70 | | wallet: &mut T, [INFO] [stderr] 71 | | amount: u64, [INFO] [stderr] 72 | | minimum_confirmations: u64, [INFO] [stderr] ... | [INFO] [stderr] 131 | | Ok((slate, context, sender_lock_fn)) [INFO] [stderr] 132 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/libwallet/internal/tx.rs:123:2 [INFO] [stderr] | [INFO] [stderr] 123 | let _ = slate.fill_round_1( [INFO] [stderr] | _____^ [INFO] [stderr] 124 | | wallet.keychain(), [INFO] [stderr] 125 | | &mut context.sec_key, [INFO] [stderr] 126 | | &context.sec_nonce, [INFO] [stderr] 127 | | 0, [INFO] [stderr] 128 | | message, [INFO] [stderr] 129 | | )?; [INFO] [stderr] | |_______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/libwallet/internal/tx.rs:145:2 [INFO] [stderr] | [INFO] [stderr] 145 | let _ = slate.fill_round_2(wallet.keychain(), &context.sec_key, &context.sec_nonce, 0)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/libwallet/internal/tx.rs:180:5 [INFO] [stderr] | [INFO] [stderr] 180 | if tx.confirmed == true { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `tx.confirmed` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/libwallet/api.rs:344:3 [INFO] [stderr] | [INFO] [stderr] 344 | let mut validated = false; [INFO] [stderr] | _________^ [INFO] [stderr] 345 | | if refresh_from_node { [INFO] [stderr] 346 | | validated = self.update_outputs(&mut w); [INFO] [stderr] 347 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let validated = if refresh_from_node { self.update_outputs(&mut w) } else { false };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/libwallet/api.rs:421:3 [INFO] [stderr] | [INFO] [stderr] 421 | let mut validated = false; [INFO] [stderr] | _________^ [INFO] [stderr] 422 | | if refresh_from_node { [INFO] [stderr] 423 | | validated = self.update_outputs(&mut w); [INFO] [stderr] 424 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let validated = if refresh_from_node { self.update_outputs(&mut w) } else { false };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/libwallet/api.rs:492:3 [INFO] [stderr] | [INFO] [stderr] 492 | let mut validated = false; [INFO] [stderr] | _________^ [INFO] [stderr] 493 | | if refresh_from_node { [INFO] [stderr] 494 | | validated = self.update_outputs(&mut w); [INFO] [stderr] 495 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let validated = if refresh_from_node { self.update_outputs(&mut w) } else { false };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (8/7) [INFO] [stderr] --> src/libwallet/api.rs:606:2 [INFO] [stderr] | [INFO] [stderr] 606 | pub fn initiate_tx( [INFO] [stderr] | _____^ [INFO] [stderr] 607 | | &mut self, [INFO] [stderr] 608 | | src_acct_name: Option<&str>, [INFO] [stderr] 609 | | amount: u64, [INFO] [stderr] ... | [INFO] [stderr] 650 | | Ok((slate, lock_fn)) [INFO] [stderr] 651 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: parameter of type `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/libwallet/internal/updater.rs:196:19 [INFO] [stderr] | [INFO] [stderr] 196 | wallet_outputs: &HashMap, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::implicit_hasher)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 194 | pub fn apply_api_outputs( [INFO] [stderr] 195 | wallet: &mut T, [INFO] [stderr] 196 | wallet_outputs: &HashMap, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: parameter of type `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/libwallet/internal/updater.rs:197:16 [INFO] [stderr] | [INFO] [stderr] 197 | api_outputs: &HashMap, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 194 | pub fn apply_api_outputs( [INFO] [stderr] 195 | wallet: &mut T, [INFO] [stderr] 196 | wallet_outputs: &HashMap, [INFO] [stderr] 197 | api_outputs: &HashMap, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/libwallet/internal/updater.rs:290:27 [INFO] [stderr] | [INFO] [stderr] 290 | let wallet_output_keys = wallet_outputs.keys().map(|commit| commit.clone()).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `wallet_outputs.keys().cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/libwallet/internal/updater.rs:290:62 [INFO] [stderr] | [INFO] [stderr] 290 | let wallet_output_keys = wallet_outputs.keys().map(|commit| commit.clone()).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try dereferencing it: `*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: redundant pattern matching, consider using `is_ok()` [INFO] [stderr] --> src/libwallet/api.rs:770:3 [INFO] [stderr] | [INFO] [stderr] 770 | match updater::refresh_outputs(&mut *w, &parent_key_id) { [INFO] [stderr] | _________^ [INFO] [stderr] 771 | | Ok(_) => true, [INFO] [stderr] 772 | | Err(_) => false, [INFO] [stderr] 773 | | } [INFO] [stderr] | |_________^ help: try this: `updater::refresh_outputs(&mut *w, &parent_key_id).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: this lifetime isn't used in the function definition [INFO] [stderr] --> src/libwallet/types.rs:114:16 [INFO] [stderr] | [INFO] [stderr] 114 | fn next_child<'a>(&mut self) -> Result; [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::extra_unused_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/libwallet/types.rs:117:27 [INFO] [stderr] | [INFO] [stderr] 117 | fn last_confirmed_height<'a>(&mut self) -> Result; [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/libwallet/types.rs:216:7 [INFO] [stderr] | [INFO] [stderr] 216 | ) -> Result< [INFO] [stderr] | __________^ [INFO] [stderr] 217 | | ( [INFO] [stderr] 218 | | u64, [INFO] [stderr] 219 | | u64, [INFO] [stderr] ... | [INFO] [stderr] 222 | | Error, [INFO] [stderr] 223 | | >; [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/libwallet/error.rs:200:13 [INFO] [stderr] | [INFO] [stderr] 200 | Ok(r) => if r == "1" { [INFO] [stderr] | ______________________^ [INFO] [stderr] 201 | | true [INFO] [stderr] 202 | | } else { [INFO] [stderr] 203 | | false [INFO] [stderr] 204 | | }, [INFO] [stderr] | |_____________^ help: you can reduce it to: `r == "1"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/libwallet/error.rs:230:12 [INFO] [stderr] | [INFO] [stderr] 230 | None => format!("Unknown"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Unknown".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 pattern matching, consider using `is_some()` [INFO] [stderr] --> src/libwallet/internal/keys.rs:65:9 [INFO] [stderr] | [INFO] [stderr] 65 | if let Some(_) = wallet.acct_path_iter().find(|l| l.label == label) { [INFO] [stderr] | _____- ^^^^^^^ [INFO] [stderr] 66 | | return Err(ErrorKind::AccountLabelAlreadyExists(label.clone()).into()); [INFO] [stderr] 67 | | } [INFO] [stderr] | |_____- help: try this: `if wallet.acct_path_iter().find(|l| l.label == label).is_some()` [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] error: this `if` has identical blocks [INFO] [stderr] --> src/libwallet/types.rs:282:30 [INFO] [stderr] | [INFO] [stderr] 282 | } else if self.height == 0 { [INFO] [stderr] | ____________________________________^ [INFO] [stderr] 283 | | 0 [INFO] [stderr] 284 | | } else { [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/libwallet/types.rs:280:47 [INFO] [stderr] | [INFO] [stderr] 280 | if self.status == OutputStatus::Unconfirmed { [INFO] [stderr] | _____________________________________________________^ [INFO] [stderr] 281 | | 0 [INFO] [stderr] 282 | | } else if self.height == 0 { [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] error: this `if` has identical blocks [INFO] [stderr] --> src/libwallet/types.rs:296:74 [INFO] [stderr] | [INFO] [stderr] 296 | } else if self.status == OutputStatus::Unconfirmed && self.is_coinbase { [INFO] [stderr] | ________________________________________________________________________________^ [INFO] [stderr] 297 | | return false; [INFO] [stderr] 298 | | } else if self.lock_height > current_height { [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] note: same as this [INFO] [stderr] --> src/libwallet/types.rs:294:73 [INFO] [stderr] | [INFO] [stderr] 294 | if [OutputStatus::Spent, OutputStatus::Locked].contains(&self.status) { [INFO] [stderr] | _______________________________________________________________________________^ [INFO] [stderr] 295 | | return false; [INFO] [stderr] 296 | | } else if self.status == OutputStatus::Unconfirmed && self.is_coinbase { [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: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/libwallet/types.rs:304:10 [INFO] [stderr] | [INFO] [stderr] 304 | } else if self.status == OutputStatus::Unconfirmed && minimum_confirmations == 0 { [INFO] [stderr] | ________________^ [INFO] [stderr] 305 | | return true; [INFO] [stderr] 306 | | } else { [INFO] [stderr] 307 | | return false; [INFO] [stderr] 308 | | } [INFO] [stderr] | |_________^ help: you can reduce it to: `return self.status == OutputStatus::Unconfirmed && minimum_confirmations == 0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/libwallet/types.rs:313:3 [INFO] [stderr] | [INFO] [stderr] 313 | match self.status { [INFO] [stderr] | _________^ [INFO] [stderr] 314 | | OutputStatus::Unconfirmed => self.status = OutputStatus::Unspent, [INFO] [stderr] 315 | | _ => (), [INFO] [stderr] 316 | | } [INFO] [stderr] | |_________^ help: try this: `if let OutputStatus::Unconfirmed = self.status { self.status = OutputStatus::Unspent }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/libwallet/types.rs:409:4 [INFO] [stderr] | [INFO] [stderr] 409 | (self.sec_key.clone(), self.sec_nonce.clone()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.sec_key` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/libwallet/types.rs:409:26 [INFO] [stderr] | [INFO] [stderr] 409 | (self.sec_key.clone(), self.sec_nonce.clone()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.sec_nonce` [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: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/libwallet/internal/restore.rs:155:21 [INFO] [stderr] | [INFO] [stderr] 155 | let entry_type = match output.is_coinbase { [INFO] [stderr] | ______________________________^ [INFO] [stderr] 156 | | true => TxLogEntryType::ConfirmedCoinbase, [INFO] [stderr] 157 | | false => TxLogEntryType::TxReceived, [INFO] [stderr] 158 | | }; [INFO] [stderr] | |_____________^ help: consider using an if/else expression: `if output.is_coinbase { TxLogEntryType::ConfirmedCoinbase } else { TxLogEntryType::TxReceived }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/libwallet/internal/restore.rs:179:26 [INFO] [stderr] | [INFO] [stderr] 179 | let max_child_index = found_parents.get(&parent_key_id).unwrap().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*found_parents.get(&parent_key_id).unwrap()` [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: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/libwallet/internal/restore.rs:179:26 [INFO] [stderr] | [INFO] [stderr] 179 | let max_child_index = found_parents.get(&parent_key_id).unwrap().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&found_parents[&parent_key_id]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/libwallet/internal/restore.rs:196:3 [INFO] [stderr] | [INFO] [stderr] 196 | index = index + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: replace it with: `index += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (11/7) [INFO] [stderr] --> src/libwallet/internal/selection.rs:28:1 [INFO] [stderr] | [INFO] [stderr] 28 | / pub fn build_send_tx_slate( [INFO] [stderr] 29 | | wallet: &mut T, [INFO] [stderr] 30 | | num_participants: usize, [INFO] [stderr] 31 | | amount: u64, [INFO] [stderr] ... | [INFO] [stderr] 140 | | Ok((slate, context, update_sender_wallet_fn)) [INFO] [stderr] 141 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/libwallet/internal/selection.rs:71:17 [INFO] [stderr] | [INFO] [stderr] 71 | let slate_id = slate.id.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `slate.id` [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: manual implementation of an assign operation [INFO] [stderr] --> src/libwallet/internal/selection.rs:113:4 [INFO] [stderr] | [INFO] [stderr] 113 | amount_debited = amount_debited + coin.value; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `amount_debited += coin.value` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/libwallet/internal/selection.rs:127:12 [INFO] [stderr] | [INFO] [stderr] 127 | value: change_amount.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*change_amount` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/libwallet/internal/selection.rs:173:17 [INFO] [stderr] | [INFO] [stderr] 173 | let slate_id = slate.id.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `slate.id` [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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/libwallet/internal/selection.rs:230:6 [INFO] [stderr] | [INFO] [stderr] 230 | ) -> Result< [INFO] [stderr] | ______^ [INFO] [stderr] 231 | | ( [INFO] [stderr] 232 | | Vec>>, [INFO] [stderr] 233 | | Vec, [INFO] [stderr] ... | [INFO] [stderr] 238 | | Error, [INFO] [stderr] 239 | | > [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (9/7) [INFO] [stderr] --> src/libwallet/internal/selection.rs:220:1 [INFO] [stderr] | [INFO] [stderr] 220 | / pub fn select_send_tx( [INFO] [stderr] 221 | | wallet: &mut T, [INFO] [stderr] 222 | | amount: u64, [INFO] [stderr] 223 | | current_height: u64, [INFO] [stderr] ... | [INFO] [stderr] 325 | | Ok((parts, coins, change_amounts_derivations, amount, fee)) [INFO] [stderr] 326 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [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/libwallet/internal/selection.rs:330:9 [INFO] [stderr] | [INFO] [stderr] 330 | coins: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: change this to: `&[OutputData]` [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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/libwallet/internal/selection.rs:335:6 [INFO] [stderr] | [INFO] [stderr] 335 | ) -> Result<(Vec>>, Vec<(u64, Identifier)>), Error> [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: called `cloned().collect()` on a slice to create a `Vec`. Calling `to_vec()` is both faster and more readable [INFO] [stderr] --> src/libwallet/internal/selection.rs:438:29 [INFO] [stderr] | [INFO] [stderr] 438 | let windowed_eligibles = window.iter().cloned().collect::>(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::iter_cloned_collect)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_cloned_collect [INFO] [stderr] [INFO] [stderr] warning: called `cloned().collect()` on a slice to create a `Vec`. Calling `to_vec()` is both faster and more readable [INFO] [stderr] --> src/libwallet/internal/selection.rs:473:16 [INFO] [stderr] | [INFO] [stderr] 473 | return Some(outputs.iter().cloned().collect()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_cloned_collect [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/libwallet/internal/tx.rs:50:2 [INFO] [stderr] | [INFO] [stderr] 50 | let _ = slate.fill_round_1( [INFO] [stderr] | _____^ [INFO] [stderr] 51 | | wallet.keychain(), [INFO] [stderr] 52 | | &mut context.sec_key, [INFO] [stderr] 53 | | &context.sec_nonce, [INFO] [stderr] 54 | | 1, [INFO] [stderr] 55 | | message, [INFO] [stderr] 56 | | )?; [INFO] [stderr] | |_______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/libwallet/internal/tx.rs:59:2 [INFO] [stderr] | [INFO] [stderr] 59 | let _ = slate.fill_round_2(wallet.keychain(), &context.sec_key, &context.sec_nonce, 1)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (9/7) [INFO] [stderr] --> src/libwallet/internal/tx.rs:69:1 [INFO] [stderr] | [INFO] [stderr] 69 | / pub fn create_send_tx( [INFO] [stderr] 70 | | wallet: &mut T, [INFO] [stderr] 71 | | amount: u64, [INFO] [stderr] 72 | | minimum_confirmations: u64, [INFO] [stderr] ... | [INFO] [stderr] 131 | | Ok((slate, context, sender_lock_fn)) [INFO] [stderr] 132 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/libwallet/internal/tx.rs:123:2 [INFO] [stderr] | [INFO] [stderr] 123 | let _ = slate.fill_round_1( [INFO] [stderr] | _____^ [INFO] [stderr] 124 | | wallet.keychain(), [INFO] [stderr] 125 | | &mut context.sec_key, [INFO] [stderr] 126 | | &context.sec_nonce, [INFO] [stderr] 127 | | 0, [INFO] [stderr] 128 | | message, [INFO] [stderr] 129 | | )?; [INFO] [stderr] | |_______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/libwallet/internal/tx.rs:145:2 [INFO] [stderr] | [INFO] [stderr] 145 | let _ = slate.fill_round_2(wallet.keychain(), &context.sec_key, &context.sec_nonce, 0)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/libwallet/internal/tx.rs:180:5 [INFO] [stderr] | [INFO] [stderr] 180 | if tx.confirmed == true { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `tx.confirmed` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: parameter of type `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/libwallet/internal/updater.rs:196:19 [INFO] [stderr] | [INFO] [stderr] 196 | wallet_outputs: &HashMap, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::implicit_hasher)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 194 | pub fn apply_api_outputs( [INFO] [stderr] 195 | wallet: &mut T, [INFO] [stderr] 196 | wallet_outputs: &HashMap, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: parameter of type `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/libwallet/internal/updater.rs:197:16 [INFO] [stderr] | [INFO] [stderr] 197 | api_outputs: &HashMap, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 194 | pub fn apply_api_outputs( [INFO] [stderr] 195 | wallet: &mut T, [INFO] [stderr] 196 | wallet_outputs: &HashMap, [INFO] [stderr] 197 | api_outputs: &HashMap, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/libwallet/internal/updater.rs:290:27 [INFO] [stderr] | [INFO] [stderr] 290 | let wallet_output_keys = wallet_outputs.keys().map(|commit| commit.clone()).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `wallet_outputs.keys().cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/libwallet/internal/updater.rs:290:62 [INFO] [stderr] | [INFO] [stderr] 290 | let wallet_output_keys = wallet_outputs.keys().map(|commit| commit.clone()).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try dereferencing it: `*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: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/lmdb_wallet.rs:32:31 [INFO] [stderr] | [INFO] [stderr] 32 | const COMMITMENT_PREFIX: u8 = 'C' 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'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/lmdb_wallet.rs:33:27 [INFO] [stderr] | [INFO] [stderr] 33 | const OUTPUT_PREFIX: u8 = 'o' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'o' [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/lmdb_wallet.rs:34:26 [INFO] [stderr] | [INFO] [stderr] 34 | const DERIV_PREFIX: u8 = 'd' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'd' [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/lmdb_wallet.rs:35:37 [INFO] [stderr] | [INFO] [stderr] 35 | const CONFIRMED_HEIGHT_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/lmdb_wallet.rs:36:39 [INFO] [stderr] | [INFO] [stderr] 36 | const PRIVATE_TX_CONTEXT_PREFIX: u8 = 'p' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'p' [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/lmdb_wallet.rs:37:33 [INFO] [stderr] | [INFO] [stderr] 37 | const TX_LOG_ENTRY_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: this lifetime isn't used in the function definition [INFO] [stderr] --> src/libwallet/types.rs:114:16 [INFO] [stderr] | [INFO] [stderr] 114 | fn next_child<'a>(&mut self) -> Result; [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::extra_unused_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/libwallet/types.rs:117:27 [INFO] [stderr] | [INFO] [stderr] 117 | fn last_confirmed_height<'a>(&mut self) -> Result; [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [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/lmdb_wallet.rs:38:30 [INFO] [stderr] | [INFO] [stderr] 38 | const TX_LOG_ID_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/lmdb_wallet.rs:39:41 [INFO] [stderr] | [INFO] [stderr] 39 | const ACCOUNT_PATH_MAPPING_PREFIX: u8 = 'a' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/libwallet/types.rs:216:7 [INFO] [stderr] | [INFO] [stderr] 216 | ) -> Result< [INFO] [stderr] | __________^ [INFO] [stderr] 217 | | ( [INFO] [stderr] 218 | | u64, [INFO] [stderr] 219 | | u64, [INFO] [stderr] ... | [INFO] [stderr] 222 | | Error, [INFO] [stderr] 223 | | >; [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/lmdb_wallet.rs:238:16 [INFO] [stderr] | [INFO] [stderr] 238 | fn next_child<'a>(&mut self) -> Result { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/lmdb_wallet.rs:249:3 [INFO] [stderr] | [INFO] [stderr] 249 | return_path.depth = return_path.depth + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `return_path.depth += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/lmdb_wallet.rs:251:3 [INFO] [stderr] | [INFO] [stderr] 251 | deriv_idx = deriv_idx + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `deriv_idx += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/lmdb_wallet.rs:258:27 [INFO] [stderr] | [INFO] [stderr] 258 | fn last_confirmed_height<'a>(&mut self) -> Result { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/lmdb_wallet.rs:408:4 [INFO] [stderr] | [INFO] [stderr] 408 | t.id as u64, [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u64::from(t.id)` [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] error: this `if` has identical blocks [INFO] [stderr] --> src/libwallet/types.rs:282:30 [INFO] [stderr] | [INFO] [stderr] 282 | } else if self.height == 0 { [INFO] [stderr] | ____________________________________^ [INFO] [stderr] 283 | | 0 [INFO] [stderr] 284 | | } else { [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/libwallet/types.rs:280:47 [INFO] [stderr] | [INFO] [stderr] 280 | if self.status == OutputStatus::Unconfirmed { [INFO] [stderr] | _____________________________________________________^ [INFO] [stderr] 281 | | 0 [INFO] [stderr] 282 | | } else if self.height == 0 { [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] error: this `if` has identical blocks [INFO] [stderr] --> src/libwallet/types.rs:296:74 [INFO] [stderr] | [INFO] [stderr] 296 | } else if self.status == OutputStatus::Unconfirmed && self.is_coinbase { [INFO] [stderr] | ________________________________________________________________________________^ [INFO] [stderr] 297 | | return false; [INFO] [stderr] 298 | | } else if self.lock_height > current_height { [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] note: same as this [INFO] [stderr] --> src/libwallet/types.rs:294:73 [INFO] [stderr] | [INFO] [stderr] 294 | if [OutputStatus::Spent, OutputStatus::Locked].contains(&self.status) { [INFO] [stderr] | _______________________________________________________________________________^ [INFO] [stderr] 295 | | return false; [INFO] [stderr] 296 | | } else if self.status == OutputStatus::Unconfirmed && self.is_coinbase { [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: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/libwallet/types.rs:304:10 [INFO] [stderr] | [INFO] [stderr] 304 | } else if self.status == OutputStatus::Unconfirmed && minimum_confirmations == 0 { [INFO] [stderr] | ________________^ [INFO] [stderr] 305 | | return true; [INFO] [stderr] 306 | | } else { [INFO] [stderr] 307 | | return false; [INFO] [stderr] 308 | | } [INFO] [stderr] | |_________^ help: you can reduce it to: `return self.status == OutputStatus::Unconfirmed && minimum_confirmations == 0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/libwallet/types.rs:313:3 [INFO] [stderr] | [INFO] [stderr] 313 | match self.status { [INFO] [stderr] | _________^ [INFO] [stderr] 314 | | OutputStatus::Unconfirmed => self.status = OutputStatus::Unspent, [INFO] [stderr] 315 | | _ => (), [INFO] [stderr] 316 | | } [INFO] [stderr] | |_________^ help: try this: `if let OutputStatus::Unconfirmed = self.status { self.status = OutputStatus::Unspent }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/node_clients/http.rs:131:7 [INFO] [stderr] | [INFO] [stderr] 131 | ) -> Result< [INFO] [stderr] | __________^ [INFO] [stderr] 132 | | ( [INFO] [stderr] 133 | | u64, [INFO] [stderr] 134 | | u64, [INFO] [stderr] ... | [INFO] [stderr] 137 | | libwallet::Error, [INFO] [stderr] 138 | | > { [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/libwallet/types.rs:409:4 [INFO] [stderr] | [INFO] [stderr] 409 | (self.sec_key.clone(), self.sec_nonce.clone()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.sec_key` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/libwallet/types.rs:409:26 [INFO] [stderr] | [INFO] [stderr] 409 | (self.sec_key.clone(), self.sec_nonce.clone()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.sec_nonce` [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: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/types.rs:158:3 [INFO] [stderr] | [INFO] [stderr] 158 | let _ = WalletSeed::seed_file_exists(wallet_config)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/types.rs:190:3 [INFO] [stderr] | [INFO] [stderr] 190 | let _ = WalletSeed::seed_file_exists(wallet_config)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `grin_wallet`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [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/lmdb_wallet.rs:32:31 [INFO] [stderr] | [INFO] [stderr] 32 | const COMMITMENT_PREFIX: u8 = 'C' 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'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/lmdb_wallet.rs:33:27 [INFO] [stderr] | [INFO] [stderr] 33 | const OUTPUT_PREFIX: u8 = 'o' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'o' [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/lmdb_wallet.rs:34:26 [INFO] [stderr] | [INFO] [stderr] 34 | const DERIV_PREFIX: u8 = 'd' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'd' [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/lmdb_wallet.rs:35:37 [INFO] [stderr] | [INFO] [stderr] 35 | const CONFIRMED_HEIGHT_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/lmdb_wallet.rs:36:39 [INFO] [stderr] | [INFO] [stderr] 36 | const PRIVATE_TX_CONTEXT_PREFIX: u8 = 'p' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'p' [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/lmdb_wallet.rs:37:33 [INFO] [stderr] | [INFO] [stderr] 37 | const TX_LOG_ENTRY_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/lmdb_wallet.rs:38:30 [INFO] [stderr] | [INFO] [stderr] 38 | const TX_LOG_ID_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/lmdb_wallet.rs:39:41 [INFO] [stderr] | [INFO] [stderr] 39 | const ACCOUNT_PATH_MAPPING_PREFIX: u8 = 'a' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [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: this lifetime isn't used in the function definition [INFO] [stderr] --> src/lmdb_wallet.rs:238:16 [INFO] [stderr] | [INFO] [stderr] 238 | fn next_child<'a>(&mut self) -> Result { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/lmdb_wallet.rs:249:3 [INFO] [stderr] | [INFO] [stderr] 249 | return_path.depth = return_path.depth + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `return_path.depth += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/lmdb_wallet.rs:251:3 [INFO] [stderr] | [INFO] [stderr] 251 | deriv_idx = deriv_idx + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `deriv_idx += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/lmdb_wallet.rs:258:27 [INFO] [stderr] | [INFO] [stderr] 258 | fn last_confirmed_height<'a>(&mut self) -> Result { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/lmdb_wallet.rs:408:4 [INFO] [stderr] | [INFO] [stderr] 408 | t.id as u64, [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u64::from(t.id)` [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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/node_clients/http.rs:131:7 [INFO] [stderr] | [INFO] [stderr] 131 | ) -> Result< [INFO] [stderr] | __________^ [INFO] [stderr] 132 | | ( [INFO] [stderr] 133 | | u64, [INFO] [stderr] 134 | | u64, [INFO] [stderr] ... | [INFO] [stderr] 137 | | libwallet::Error, [INFO] [stderr] 138 | | > { [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/types.rs:158:3 [INFO] [stderr] | [INFO] [stderr] 158 | let _ = WalletSeed::seed_file_exists(wallet_config)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/types.rs:190:3 [INFO] [stderr] | [INFO] [stderr] 190 | let _ = WalletSeed::seed_file_exists(wallet_config)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `grin_wallet`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "843aed14ab5da80ae59d9ed1d3803cd63eb1d949ab56a58b24855f93da27c0ed"` [INFO] running `"docker" "rm" "-f" "843aed14ab5da80ae59d9ed1d3803cd63eb1d949ab56a58b24855f93da27c0ed"` [INFO] [stdout] 843aed14ab5da80ae59d9ed1d3803cd63eb1d949ab56a58b24855f93da27c0ed