[INFO] crate evm 0.9.4 is already in cache [INFO] extracting crate evm 0.9.4 into work/ex/clippy-test-run/sources/stable/reg/evm/0.9.4 [INFO] extracting crate evm 0.9.4 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/evm/0.9.4 [INFO] validating manifest of evm-0.9.4 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 evm-0.9.4 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 evm-0.9.4 [INFO] finished frobbing evm-0.9.4 [INFO] frobbed toml for evm-0.9.4 written to work/ex/clippy-test-run/sources/stable/reg/evm/0.9.4/Cargo.toml [INFO] started frobbing evm-0.9.4 [INFO] finished frobbing evm-0.9.4 [INFO] frobbed toml for evm-0.9.4 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/evm/0.9.4/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 evm-0.9.4 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/evm/0.9.4:/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] 96b639091ae89077d0b01713061627935a50bf82fa9b65c39efbef654d445469 [INFO] running `"docker" "start" "-a" "96b639091ae89077d0b01713061627935a50bf82fa9b65c39efbef654d445469"` [INFO] [stderr] Checking ethereum-hexutil v0.2.3 [INFO] [stderr] Checking crypto-mac v0.4.0 [INFO] [stderr] Checking sha3 v0.6.0 [INFO] [stderr] Checking ripemd160 v0.6.0 [INFO] [stderr] Checking hmac v0.4.2 [INFO] [stderr] Checking ethereum-rlp v0.2.3 [INFO] [stderr] Checking hmac-drbg v0.1.2 [INFO] [stderr] Checking libsecp256k1 v0.1.15 [INFO] [stderr] Checking ethereum-bigint v0.2.9 [INFO] [stderr] Checking ethereum-bloom v0.2.1 [INFO] [stderr] Checking ethereum-trie v0.3.8 [INFO] [stderr] Checking ethereum-block-core v0.1.0 [INFO] [stderr] Checking ethereum-block v0.3.5 [INFO] [stderr] Checking evm v0.9.4 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/eval/run/system.rs:42:9 [INFO] [stderr] | [INFO] [stderr] 42 | data: data, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `data` [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/eval/run/system.rs:43:9 [INFO] [stderr] | [INFO] [stderr] 43 | topics: topics, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `topics` [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/eval/run/system.rs:86:9 [INFO] [stderr] | [INFO] [stderr] 86 | value: value, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [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/eval/run/system.rs:113:9 [INFO] [stderr] | [INFO] [stderr] 113 | gas_limit: gas_limit, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `gas_limit` [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/eval/run/system.rs:114:9 [INFO] [stderr] | [INFO] [stderr] 114 | value: value, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [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/eval/run/system.rs:115:9 [INFO] [stderr] | [INFO] [stderr] 115 | input: input, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `input` [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/eval/run/system.rs:144:9 [INFO] [stderr] | [INFO] [stderr] 144 | gas_limit: gas_limit, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `gas_limit` [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/eval/run/system.rs:146:9 [INFO] [stderr] | [INFO] [stderr] 146 | input: input, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `input` [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/commit/account.rs:37:13 [INFO] [stderr] | [INFO] [stderr] 37 | partial: partial, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `partial` [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/commit/account.rs:38:13 [INFO] [stderr] | [INFO] [stderr] 38 | address: address, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `address` [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/transaction.rs:98:17 [INFO] [stderr] | [INFO] [stderr] 98 | nonce: nonce, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `nonce` [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/transaction.rs:153:13 [INFO] [stderr] | [INFO] [stderr] 153 | nonce: nonce, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `nonce` [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/transaction.rs:290:13 [INFO] [stderr] | [INFO] [stderr] 290 | block: block, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `block` [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/transaction.rs:303:13 [INFO] [stderr] | [INFO] [stderr] 303 | transaction: transaction, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `transaction` [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/transaction.rs:304:13 [INFO] [stderr] | [INFO] [stderr] 304 | block: block, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `block` [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/transaction.rs:317:13 [INFO] [stderr] | [INFO] [stderr] 317 | transaction: transaction, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `transaction` [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/transaction.rs:318:13 [INFO] [stderr] | [INFO] [stderr] 318 | block: block, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `block` [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/eval/run/system.rs:42:9 [INFO] [stderr] | [INFO] [stderr] 42 | data: data, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `data` [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/eval/run/system.rs:43:9 [INFO] [stderr] | [INFO] [stderr] 43 | topics: topics, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `topics` [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/eval/run/system.rs:86:9 [INFO] [stderr] | [INFO] [stderr] 86 | value: value, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [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/eval/run/system.rs:113:9 [INFO] [stderr] | [INFO] [stderr] 113 | gas_limit: gas_limit, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `gas_limit` [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/eval/run/system.rs:114:9 [INFO] [stderr] | [INFO] [stderr] 114 | value: value, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [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/eval/run/system.rs:115:9 [INFO] [stderr] | [INFO] [stderr] 115 | input: input, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `input` [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/eval/run/system.rs:144:9 [INFO] [stderr] | [INFO] [stderr] 144 | gas_limit: gas_limit, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `gas_limit` [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/eval/run/system.rs:146:9 [INFO] [stderr] | [INFO] [stderr] 146 | input: input, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `input` [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/commit/account.rs:37:13 [INFO] [stderr] | [INFO] [stderr] 37 | partial: partial, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `partial` [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/commit/account.rs:38:13 [INFO] [stderr] | [INFO] [stderr] 38 | address: address, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `address` [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/transaction.rs:98:17 [INFO] [stderr] | [INFO] [stderr] 98 | nonce: nonce, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `nonce` [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/transaction.rs:153:13 [INFO] [stderr] | [INFO] [stderr] 153 | nonce: nonce, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `nonce` [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/transaction.rs:290:13 [INFO] [stderr] | [INFO] [stderr] 290 | block: block, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `block` [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/transaction.rs:303:13 [INFO] [stderr] | [INFO] [stderr] 303 | transaction: transaction, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `transaction` [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/transaction.rs:304:13 [INFO] [stderr] | [INFO] [stderr] 304 | block: block, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `block` [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/transaction.rs:317:13 [INFO] [stderr] | [INFO] [stderr] 317 | transaction: transaction, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `transaction` [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/transaction.rs:318:13 [INFO] [stderr] | [INFO] [stderr] 318 | block: block, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `block` [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: unneeded return statement [INFO] [stderr] --> src/pc.rs:77:9 [INFO] [stderr] | [INFO] [stderr] 77 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [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: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/eval/cost.rs:155:5 [INFO] [stderr] | [INFO] [stderr] 155 | next [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/eval/cost.rs:114:16 [INFO] [stderr] | [INFO] [stderr] 114 | let next = match instruction { [INFO] [stderr] | ________________^ [INFO] [stderr] 115 | | Instruction::SHA3 | Instruction::RETURN | Instruction::LOG(_) => { [INFO] [stderr] 116 | | let from: U256 = stack.peek(0).unwrap().into(); [INFO] [stderr] 117 | | let len: U256 = stack.peek(1).unwrap().into(); [INFO] [stderr] ... | [INFO] [stderr] 153 | | } [INFO] [stderr] 154 | | }; [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/eval/mod.rs:240:9 [INFO] [stderr] | [INFO] [stderr] 240 | 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/commit/account.rs:256:50 [INFO] [stderr] | [INFO] [stderr] 256 | Some(&AccountChange::Full { .. }) => 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/commit/account.rs:257:52 [INFO] [stderr] | [INFO] [stderr] 257 | Some(&AccountChange::Create { .. }) => 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/commit/account.rs:258:50 [INFO] [stderr] | [INFO] [stderr] 258 | Some(&AccountChange::Nonexist(_)) => 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/commit/account.rs:259:18 [INFO] [stderr] | [INFO] [stderr] 259 | _ => return Err(RequireError::Account(address)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(RequireError::Account(address))` [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/commit/account.rs:271:50 [INFO] [stderr] | [INFO] [stderr] 271 | Some(&AccountChange::Full { .. }) => 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/commit/account.rs:272:52 [INFO] [stderr] | [INFO] [stderr] 272 | Some(&AccountChange::Create { .. }) => 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/commit/account.rs:273:50 [INFO] [stderr] | [INFO] [stderr] 273 | Some(&AccountChange::Nonexist(_)) => 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/commit/account.rs:274:18 [INFO] [stderr] | [INFO] [stderr] 274 | _ => return Err(RequireError::AccountCode(address)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(RequireError::AccountCode(address))` [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/commit/account.rs:379:24 [INFO] [stderr] | [INFO] [stderr] 379 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 380 | | if self.premarked_exists.contains(&address) { [INFO] [stderr] 381 | | AccountChange::Create { [INFO] [stderr] 382 | | nonce: A::initial_nonce(), [INFO] [stderr] ... | [INFO] [stderr] 390 | | } [INFO] [stderr] 391 | | }; [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] 379 | } else if self.premarked_exists.contains(&address) { [INFO] [stderr] 380 | AccountChange::Create { [INFO] [stderr] 381 | nonce: A::initial_nonce(), [INFO] [stderr] 382 | address, [INFO] [stderr] 383 | balance: U256::zero(), [INFO] [stderr] 384 | storage: Storage::new(address, false), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/commit/account.rs:456:13 [INFO] [stderr] | [INFO] [stderr] 456 | return Ok(self.codes.get(&address).unwrap().clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(self.codes.get(&address).unwrap().clone())` [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/commit/account.rs:458:13 [INFO] [stderr] | [INFO] [stderr] 458 | return Err(RequireError::AccountCode(address)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(RequireError::AccountCode(address))` [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/commit/account.rs:482:9 [INFO] [stderr] | [INFO] [stderr] 482 | return Err(RequireError::Account(address)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(RequireError::Account(address))` [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/commit/account.rs:505:9 [INFO] [stderr] | [INFO] [stderr] 505 | return Err(RequireError::Account(address)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(RequireError::Account(address))` [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/commit/account.rs:525:9 [INFO] [stderr] | [INFO] [stderr] 525 | return Err(RequireError::Account(address)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(RequireError::Account(address))` [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/commit/account.rs:563:9 [INFO] [stderr] | [INFO] [stderr] 563 | return Err(RequireError::Account(address)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(RequireError::Account(address))` [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/transaction.rs:106:9 [INFO] [stderr] | [INFO] [stderr] 106 | return Ok(valid); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(valid)` [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/transaction.rs:199:9 [INFO] [stderr] | [INFO] [stderr] 199 | return gas; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `gas` [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/pc.rs:77:9 [INFO] [stderr] | [INFO] [stderr] 77 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [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: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/eval/cost.rs:155:5 [INFO] [stderr] | [INFO] [stderr] 155 | next [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/eval/cost.rs:114:16 [INFO] [stderr] | [INFO] [stderr] 114 | let next = match instruction { [INFO] [stderr] | ________________^ [INFO] [stderr] 115 | | Instruction::SHA3 | Instruction::RETURN | Instruction::LOG(_) => { [INFO] [stderr] 116 | | let from: U256 = stack.peek(0).unwrap().into(); [INFO] [stderr] 117 | | let len: U256 = stack.peek(1).unwrap().into(); [INFO] [stderr] ... | [INFO] [stderr] 153 | | } [INFO] [stderr] 154 | | }; [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/eval/mod.rs:240:9 [INFO] [stderr] | [INFO] [stderr] 240 | 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/commit/account.rs:256:50 [INFO] [stderr] | [INFO] [stderr] 256 | Some(&AccountChange::Full { .. }) => 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/commit/account.rs:257:52 [INFO] [stderr] | [INFO] [stderr] 257 | Some(&AccountChange::Create { .. }) => 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/commit/account.rs:258:50 [INFO] [stderr] | [INFO] [stderr] 258 | Some(&AccountChange::Nonexist(_)) => 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/commit/account.rs:259:18 [INFO] [stderr] | [INFO] [stderr] 259 | _ => return Err(RequireError::Account(address)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(RequireError::Account(address))` [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/commit/account.rs:271:50 [INFO] [stderr] | [INFO] [stderr] 271 | Some(&AccountChange::Full { .. }) => 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/commit/account.rs:272:52 [INFO] [stderr] | [INFO] [stderr] 272 | Some(&AccountChange::Create { .. }) => 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/commit/account.rs:273:50 [INFO] [stderr] | [INFO] [stderr] 273 | Some(&AccountChange::Nonexist(_)) => 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/commit/account.rs:274:18 [INFO] [stderr] | [INFO] [stderr] 274 | _ => return Err(RequireError::AccountCode(address)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(RequireError::AccountCode(address))` [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/commit/account.rs:379:24 [INFO] [stderr] | [INFO] [stderr] 379 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 380 | | if self.premarked_exists.contains(&address) { [INFO] [stderr] 381 | | AccountChange::Create { [INFO] [stderr] 382 | | nonce: A::initial_nonce(), [INFO] [stderr] ... | [INFO] [stderr] 390 | | } [INFO] [stderr] 391 | | }; [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] 379 | } else if self.premarked_exists.contains(&address) { [INFO] [stderr] 380 | AccountChange::Create { [INFO] [stderr] 381 | nonce: A::initial_nonce(), [INFO] [stderr] 382 | address, [INFO] [stderr] 383 | balance: U256::zero(), [INFO] [stderr] 384 | storage: Storage::new(address, false), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/commit/account.rs:456:13 [INFO] [stderr] | [INFO] [stderr] 456 | return Ok(self.codes.get(&address).unwrap().clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(self.codes.get(&address).unwrap().clone())` [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/commit/account.rs:458:13 [INFO] [stderr] | [INFO] [stderr] 458 | return Err(RequireError::AccountCode(address)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(RequireError::AccountCode(address))` [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/commit/account.rs:482:9 [INFO] [stderr] | [INFO] [stderr] 482 | return Err(RequireError::Account(address)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(RequireError::Account(address))` [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/commit/account.rs:505:9 [INFO] [stderr] | [INFO] [stderr] 505 | return Err(RequireError::Account(address)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(RequireError::Account(address))` [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/commit/account.rs:525:9 [INFO] [stderr] | [INFO] [stderr] 525 | return Err(RequireError::Account(address)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(RequireError::Account(address))` [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/commit/account.rs:563:9 [INFO] [stderr] | [INFO] [stderr] 563 | return Err(RequireError::Account(address)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(RequireError::Account(address))` [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/transaction.rs:106:9 [INFO] [stderr] | [INFO] [stderr] 106 | return Ok(valid); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(valid)` [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/transaction.rs:199:9 [INFO] [stderr] | [INFO] [stderr] 199 | return gas; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `gas` [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: method is never used: `full` [INFO] [stderr] --> src/commit/account.rs:44:5 [INFO] [stderr] | [INFO] [stderr] 44 | fn full(address: Address) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: item `memory::SeqMemory

` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/memory.rs:52:1 [INFO] [stderr] | [INFO] [stderr] 52 | / impl SeqMemory

{ [INFO] [stderr] 53 | | pub fn len(&self) -> usize { [INFO] [stderr] 54 | | self.memory.len() [INFO] [stderr] 55 | | } [INFO] [stderr] 56 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `a` [INFO] [stderr] --> src/memory.rs:110:18 [INFO] [stderr] | [INFO] [stderr] 110 | for i in 0..32 { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 110 | for (i, ) in a.iter_mut().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: item `stack::Stack` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/stack.rs:22:1 [INFO] [stderr] | [INFO] [stderr] 22 | / impl Stack { [INFO] [stderr] 23 | | /// Check a pop-push cycle. If the check succeeded, `push`, `pop`, [INFO] [stderr] 24 | | /// `set`, `peek` within the limit should not fail. [INFO] [stderr] 25 | | pub fn check_pop_push(&self, pop: usize, push: usize) -> Result<(), OnChainError> { [INFO] [stderr] ... | [INFO] [stderr] 81 | | } [INFO] [stderr] 82 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: item `pc::Valids` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/pc.rs:39:1 [INFO] [stderr] | [INFO] [stderr] 39 | / impl Valids { [INFO] [stderr] 40 | | pub fn new(code: &[u8]) -> Self { [INFO] [stderr] 41 | | let mut valids: Vec = Vec::with_capacity(code.len()); [INFO] [stderr] 42 | | valids.resize(code.len(), false); [INFO] [stderr] ... | [INFO] [stderr] 78 | | } [INFO] [stderr] 79 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/pc.rs:50:21 [INFO] [stderr] | [INFO] [stderr] 50 | i = i + 1; [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `i += 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: manual implementation of an assign operation [INFO] [stderr] --> src/pc.rs:56:21 [INFO] [stderr] | [INFO] [stderr] 56 | i = i + 1; [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `i += 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/pc.rs:128:21 [INFO] [stderr] | [INFO] [stderr] 128 | i = i + 1; [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `i += 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/pc.rs:131:13 [INFO] [stderr] | [INFO] [stderr] 131 | o = o + 1; [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `o += 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/pc.rs:314:21 [INFO] [stderr] | [INFO] [stderr] 314 | i = i + 1; [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `i += 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/pc.rs:317:13 [INFO] [stderr] | [INFO] [stderr] 317 | o = o + 1; [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `o += 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/pc.rs:439:17 [INFO] [stderr] | [INFO] [stderr] 439 | *self.position = *self.position + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `*self.position += 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: identical conversion [INFO] [stderr] --> src/eval/cost.rs:50:5 [INFO] [stderr] | [INFO] [stderr] 50 | Gas::from(P::gas_call()) + xfer_cost(machine, instruction) + new_cost(machine, instruction) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Gas::from()`: `P::gas_call()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/eval/cost.rs:77:5 [INFO] [stderr] | [INFO] [stderr] 77 | Gas::from(P::gas_suicide()) + if !machine.account_state.exists(address).unwrap() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Gas::from()`: `P::gas_suicide()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/eval/cost.rs:78:9 [INFO] [stderr] | [INFO] [stderr] 78 | Gas::from(P::gas_suicide_new_account()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Gas::from()`: `P::gas_suicide_new_account()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/eval/cost.rs:105:5 [INFO] [stderr] | [INFO] [stderr] 105 | (Gas::from(G_MEMORY) * a + a * a / Gas::from(512u64)).into() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `(Gas::from(G_MEMORY) * a + a * a / Gas::from(512u64))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/eval/cost.rs:111:9 [INFO] [stderr] | [INFO] [stderr] 111 | let ref stack = state.stack; [INFO] [stderr] | ----^^^^^^^^^--------------- help: try: `let stack = &state.stack;` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/eval/cost.rs:171:13 [INFO] [stderr] | [INFO] [stderr] 171 | (Gas::from(G_SHA3) + Gas::from(G_SHA3WORD) * if wordr == Gas::zero() { wordd } else { wordd + Gas::from(1u64) }).into() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `(Gas::from(G_SHA3) + Gas::from(G_SHA3WORD) * if wordr == Gas::zero() { wordd } else { wordd + Gas::from(1u64) })` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/eval/cost.rs:176:13 [INFO] [stderr] | [INFO] [stderr] 176 | (Gas::from(G_LOG) + Gas::from(G_LOGDATA) * Gas::from(len) + Gas::from(G_LOGTOPIC) * Gas::from(v)).into() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `(Gas::from(G_LOG) + Gas::from(G_LOGDATA) * Gas::from(len) + Gas::from(G_LOGTOPIC) * Gas::from(v))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/eval/cost.rs:183:13 [INFO] [stderr] | [INFO] [stderr] 183 | (Gas::from(P::gas_extcode()) + Gas::from(G_COPY) * if wordr == Gas::zero() { wordd } else { wordd + Gas::from(1u64) }).into() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `(Gas::from(P::gas_extcode()) + Gas::from(G_COPY) * if wordr == Gas::zero() { wordd } else { wordd + Gas::from(1u64) })` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/eval/cost.rs:183:14 [INFO] [stderr] | [INFO] [stderr] 183 | (Gas::from(P::gas_extcode()) + Gas::from(G_COPY) * if wordr == Gas::zero() { wordd } else { wordd + Gas::from(1u64) }).into() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Gas::from()`: `P::gas_extcode()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/eval/cost.rs:190:13 [INFO] [stderr] | [INFO] [stderr] 190 | (Gas::from(G_VERYLOW) + Gas::from(G_COPY) * if wordr == Gas::zero() { wordd } else { wordd + Gas::from(1u64) }).into() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `(Gas::from(G_VERYLOW) + Gas::from(G_COPY) * if wordr == Gas::zero() { wordd } else { wordd + Gas::from(1u64) })` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/eval/cost.rs:197:36 [INFO] [stderr] | [INFO] [stderr] 197 | Gas::from(G_EXP) + Gas::from(P::gas_expbyte()) * (Gas::from(1u64) + Gas::from(state.stack.peek(1).unwrap().log2floor()) / Gas::from(8u64)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Gas::from()`: `P::gas_expbyte()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: The function/method `copy_from_memory` doesn't need a mutable reference [INFO] [stderr] --> src/eval/run/mod.rs:174:71 [INFO] [stderr] | [INFO] [stderr] 174 | state.out = Rc::new(copy_from_memory(&mut state.memory, start, len)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/eval/util.rs:60:9 [INFO] [stderr] | [INFO] [stderr] 60 | j = j + 1; [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `j += 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: large size difference between variants [INFO] [stderr] --> src/eval/mod.rs:124:5 [INFO] [stderr] | [INFO] [stderr] 124 | InvokeCall(Context, (U256, U256)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::large_enum_variant)] on by default [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] --> src/eval/mod.rs:124:5 [INFO] [stderr] | [INFO] [stderr] 124 | InvokeCall(Context, (U256, U256)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/eval/mod.rs:139:5 [INFO] [stderr] | [INFO] [stderr] 139 | InvokeCall(Context, (U256, U256)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] --> src/eval/mod.rs:139:5 [INFO] [stderr] | [INFO] [stderr] 139 | InvokeCall(Context, (U256, U256)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/eval/mod.rs:276:9 [INFO] [stderr] | [INFO] [stderr] 276 | / match &self.status { [INFO] [stderr] 277 | | &MachineStatus::Running => (), [INFO] [stderr] 278 | | _ => panic!(), [INFO] [stderr] 279 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 276 | match self.status { [INFO] [stderr] 277 | MachineStatus::Running => (), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: item `commit::account::Storage` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/commit/account.rs:33:1 [INFO] [stderr] | [INFO] [stderr] 33 | / impl Storage { [INFO] [stderr] 34 | | /// Create a new storage. [INFO] [stderr] 35 | | fn new(address: Address, partial: bool) -> Self { [INFO] [stderr] 36 | | Storage { [INFO] [stderr] ... | [INFO] [stderr] 86 | | } [INFO] [stderr] 87 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/commit/account.rs:130:9 [INFO] [stderr] | [INFO] [stderr] 130 | / match self { [INFO] [stderr] 131 | | &AccountCommitment::Full { [INFO] [stderr] 132 | | address, [INFO] [stderr] 133 | | .. [INFO] [stderr] ... | [INFO] [stderr] 143 | | &AccountCommitment::Nonexist(address) => address, [INFO] [stderr] 144 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 130 | match *self { [INFO] [stderr] 131 | AccountCommitment::Full { [INFO] [stderr] 132 | address, [INFO] [stderr] 133 | .. [INFO] [stderr] 134 | } => address, [INFO] [stderr] 135 | AccountCommitment::Code { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/commit/account.rs:187:9 [INFO] [stderr] | [INFO] [stderr] 187 | / match self { [INFO] [stderr] 188 | | &AccountChange::Full { [INFO] [stderr] 189 | | address, [INFO] [stderr] 190 | | .. [INFO] [stderr] ... | [INFO] [stderr] 198 | | &AccountChange::Nonexist(address) => address, [INFO] [stderr] 199 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 187 | match *self { [INFO] [stderr] 188 | AccountChange::Full { [INFO] [stderr] 189 | address, [INFO] [stderr] 190 | .. [INFO] [stderr] 191 | } => address, [INFO] [stderr] 192 | AccountChange::IncreaseBalance(address, _) => address, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to want to iterate on a map's keys [INFO] [stderr] --> src/commit/account.rs:241:29 [INFO] [stderr] | [INFO] [stderr] 241 | for (address, _) in &self.codes { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::for_kv_map)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stderr] help: use the corresponding method [INFO] [stderr] | [INFO] [stderr] 241 | for address in self.codes.keys() { [INFO] [stderr] | ^^^^^^^ ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/commit/account.rs:422:17 [INFO] [stderr] | [INFO] [stderr] 422 | / match val { [INFO] [stderr] 423 | | &mut AccountChange::Nonexist(_) => (), [INFO] [stderr] 424 | | // The above matches all cases in enum. FIXME when [INFO] [stderr] 425 | | // there're more AccountChange variants added. [INFO] [stderr] 426 | | _ => unreachable!(), [INFO] [stderr] 427 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 422 | match *val { [INFO] [stderr] 423 | AccountChange::Nonexist(_) => (), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/commit/account.rs:446:13 [INFO] [stderr] | [INFO] [stderr] 446 | / match self.accounts.get(&address).unwrap() { [INFO] [stderr] 447 | | &AccountChange::Full { ref code, .. } => return Ok(code.clone()), [INFO] [stderr] 448 | | &AccountChange::Create { ref code, .. } => return Ok(code.clone()), [INFO] [stderr] 449 | | &AccountChange::Nonexist(_) => return Ok(Rc::new(Vec::new())), [INFO] [stderr] 450 | | &AccountChange::IncreaseBalance(_, _) => (), [INFO] [stderr] 451 | | &AccountChange::DecreaseBalance(_, _) => (), [INFO] [stderr] 452 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 446 | match *self.accounts.get(&address).unwrap() { [INFO] [stderr] 447 | AccountChange::Full { ref code, .. } => return Ok(code.clone()), [INFO] [stderr] 448 | AccountChange::Create { ref code, .. } => return Ok(code.clone()), [INFO] [stderr] 449 | AccountChange::Nonexist(_) => return Ok(Rc::new(Vec::new())), [INFO] [stderr] 450 | AccountChange::IncreaseBalance(_, _) => (), [INFO] [stderr] 451 | AccountChange::DecreaseBalance(_, _) => (), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/commit/account.rs:446:19 [INFO] [stderr] | [INFO] [stderr] 446 | match self.accounts.get(&address).unwrap() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.accounts[&address]` [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/commit/account.rs:456:23 [INFO] [stderr] | [INFO] [stderr] 456 | return Ok(self.codes.get(&address).unwrap().clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.codes[&address]` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/commit/account.rs:466:13 [INFO] [stderr] | [INFO] [stderr] 466 | / match self.accounts.get(&address).unwrap() { [INFO] [stderr] 467 | | &AccountChange::Full { [INFO] [stderr] 468 | | nonce, [INFO] [stderr] 469 | | .. [INFO] [stderr] ... | [INFO] [stderr] 478 | | _ => (), [INFO] [stderr] 479 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 466 | match *self.accounts.get(&address).unwrap() { [INFO] [stderr] 467 | AccountChange::Full { [INFO] [stderr] 468 | nonce, [INFO] [stderr] 469 | .. [INFO] [stderr] 470 | } => return Ok(nonce), [INFO] [stderr] 471 | AccountChange::Create { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/commit/account.rs:466:19 [INFO] [stderr] | [INFO] [stderr] 466 | match self.accounts.get(&address).unwrap() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.accounts[&address]` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/commit/account.rs:489:13 [INFO] [stderr] | [INFO] [stderr] 489 | / match self.accounts.get(&address).unwrap() { [INFO] [stderr] 490 | | &AccountChange::Full { [INFO] [stderr] 491 | | balance, [INFO] [stderr] 492 | | .. [INFO] [stderr] ... | [INFO] [stderr] 501 | | _ => (), [INFO] [stderr] 502 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 489 | match *self.accounts.get(&address).unwrap() { [INFO] [stderr] 490 | AccountChange::Full { [INFO] [stderr] 491 | balance, [INFO] [stderr] 492 | .. [INFO] [stderr] 493 | } => return Ok(balance), [INFO] [stderr] 494 | AccountChange::Create { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/commit/account.rs:489:19 [INFO] [stderr] | [INFO] [stderr] 489 | match self.accounts.get(&address).unwrap() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.accounts[&address]` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/commit/account.rs:511:13 [INFO] [stderr] | [INFO] [stderr] 511 | / match self.accounts.get(&address).unwrap() { [INFO] [stderr] 512 | | &AccountChange::Full { [INFO] [stderr] 513 | | ref changing_storage, [INFO] [stderr] 514 | | .. [INFO] [stderr] ... | [INFO] [stderr] 521 | | _ => (), [INFO] [stderr] 522 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 511 | match *self.accounts.get(&address).unwrap() { [INFO] [stderr] 512 | AccountChange::Full { [INFO] [stderr] 513 | ref changing_storage, [INFO] [stderr] 514 | .. [INFO] [stderr] 515 | } => return changing_storage.read(index), [INFO] [stderr] 516 | AccountChange::Create { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/commit/account.rs:511:19 [INFO] [stderr] | [INFO] [stderr] 511 | match self.accounts.get(&address).unwrap() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.accounts[&address]` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/commit/account.rs:543:21 [INFO] [stderr] | [INFO] [stderr] 543 | / match val { [INFO] [stderr] 544 | | &mut AccountChange::Nonexist(_) => { is_nonexist = true; } [INFO] [stderr] 545 | | _ => { is_nonexist = false; } [INFO] [stderr] 546 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 543 | match *val { [INFO] [stderr] 544 | AccountChange::Nonexist(_) => { is_nonexist = true; } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/commit/account.rs:612:9 [INFO] [stderr] | [INFO] [stderr] 612 | / match self.accounts.get_mut(&address).unwrap() { [INFO] [stderr] 613 | | &mut AccountChange::Create { ref mut code, .. } => { [INFO] [stderr] 614 | | *code = new_code; [INFO] [stderr] 615 | | }, [INFO] [stderr] 616 | | _ => panic!(), [INFO] [stderr] 617 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 612 | match *self.accounts.get_mut(&address).unwrap() { [INFO] [stderr] 613 | AccountChange::Create { ref mut code, .. } => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/commit/account.rs:773:17 [INFO] [stderr] | [INFO] [stderr] 773 | / match val { [INFO] [stderr] 774 | | &mut AccountChange::Nonexist(_) => { is_nonexist = true; } [INFO] [stderr] 775 | | _ => { is_nonexist = false; } [INFO] [stderr] 776 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 773 | match *val { [INFO] [stderr] 774 | AccountChange::Nonexist(_) => { is_nonexist = true; } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/patch/precompiled.rs:111:18 [INFO] [stderr] | [INFO] [stderr] 111 | for i in 0..min(datao.len(), 128) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try replacing the loop by: `data[..min(datao.len(), 128)].clone_from_slice(&datao[..min(datao.len(), 128)])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::manual_memcpy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `ret`. [INFO] [stderr] --> src/patch/precompiled.rs:116:26 [INFO] [stderr] | [INFO] [stderr] 116 | for i in 0..12 { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 116 | for in ret.iter_mut().take(12) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/patch/precompiled.rs:168:14 [INFO] [stderr] | [INFO] [stderr] 168 | for i in 0..32 { [INFO] [stderr] | ^^^^^ help: try replacing the loop by: `message_raw[..32].clone_from_slice(&data[..32])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/patch/precompiled.rs:178:14 [INFO] [stderr] | [INFO] [stderr] 178 | for i in 0..64 { [INFO] [stderr] | ^^^^^ help: try replacing the loop by: `sig_raw[..64].clone_from_slice(&data[64..(64 + 64)])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/transaction.rs:95:25 [INFO] [stderr] | [INFO] [stderr] 95 | action: self.action.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.action` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/transaction.rs:150:21 [INFO] [stderr] | [INFO] [stderr] 150 | action: transaction.action.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `transaction.action` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/transaction.rs:182:41 [INFO] [stderr] | [INFO] [stderr] 182 | self.action.address(self.caller.unwrap_or(system_address!()), self.nonce) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| system_address!())` [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: identical conversion [INFO] [stderr] --> src/transaction.rs:190:25 [INFO] [stderr] | [INFO] [stderr] 190 | gas = gas + Gas::from(P::gas_transaction_create()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Gas::from()`: `P::gas_transaction_create()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/transaction.rs:223:41 [INFO] [stderr] | [INFO] [stderr] 223 | caller: self.caller.unwrap_or(system_address!()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| system_address!())` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/transaction.rs:229:36 [INFO] [stderr] | [INFO] [stderr] 229 | origin: origin.unwrap_or(self.caller.unwrap_or(system_address!())), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| self.caller.unwrap_or(system_address!()))` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/transaction.rs:229:58 [INFO] [stderr] | [INFO] [stderr] 229 | origin: origin.unwrap_or(self.caller.unwrap_or(system_address!())), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| system_address!())` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/transaction.rs:243:41 [INFO] [stderr] | [INFO] [stderr] 243 | caller: self.caller.unwrap_or(system_address!()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| system_address!())` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/transaction.rs:249:36 [INFO] [stderr] | [INFO] [stderr] 249 | origin: origin.unwrap_or(self.caller.unwrap_or(system_address!())), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| self.caller.unwrap_or(system_address!()))` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/transaction.rs:249:58 [INFO] [stderr] | [INFO] [stderr] 249 | origin: origin.unwrap_or(self.caller.unwrap_or(system_address!())), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| system_address!())` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:216:9 [INFO] [stderr] | [INFO] [stderr] 216 | / match self.machines.last().unwrap().status().clone() { [INFO] [stderr] 217 | | MachineStatus::ExitedNotSupported(err) => return VMStatus::ExitedNotSupported(err), [INFO] [stderr] 218 | | _ => (), [INFO] [stderr] 219 | | } [INFO] [stderr] | |_________^ help: try this: `if let MachineStatus::ExitedNotSupported(err) = self.machines.last().unwrap().status().clone() { return VMStatus::ExitedNotSupported(err) }` [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] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib.rs:224:66 [INFO] [stderr] | [INFO] [stderr] 224 | MachineStatus::ExitedErr(err) => VMStatus::ExitedErr(err.into()), [INFO] [stderr] | ^^^^^^^^^^ help: consider removing `.into()`: `err` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:253:20 [INFO] [stderr] | [INFO] [stderr] 253 | if self.machines.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.machines.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: method is never used: `full` [INFO] [stderr] --> src/commit/account.rs:44:5 [INFO] [stderr] | [INFO] [stderr] 44 | fn full(address: Address) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: item `memory::SeqMemory

` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/memory.rs:52:1 [INFO] [stderr] | [INFO] [stderr] 52 | / impl SeqMemory

{ [INFO] [stderr] 53 | | pub fn len(&self) -> usize { [INFO] [stderr] 54 | | self.memory.len() [INFO] [stderr] 55 | | } [INFO] [stderr] 56 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `a` [INFO] [stderr] --> src/memory.rs:110:18 [INFO] [stderr] | [INFO] [stderr] 110 | for i in 0..32 { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 110 | for (i, ) in a.iter_mut().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: item `stack::Stack` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/stack.rs:22:1 [INFO] [stderr] | [INFO] [stderr] 22 | / impl Stack { [INFO] [stderr] 23 | | /// Check a pop-push cycle. If the check succeeded, `push`, `pop`, [INFO] [stderr] 24 | | /// `set`, `peek` within the limit should not fail. [INFO] [stderr] 25 | | pub fn check_pop_push(&self, pop: usize, push: usize) -> Result<(), OnChainError> { [INFO] [stderr] ... | [INFO] [stderr] 81 | | } [INFO] [stderr] 82 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: item `pc::Valids` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/pc.rs:39:1 [INFO] [stderr] | [INFO] [stderr] 39 | / impl Valids { [INFO] [stderr] 40 | | pub fn new(code: &[u8]) -> Self { [INFO] [stderr] 41 | | let mut valids: Vec = Vec::with_capacity(code.len()); [INFO] [stderr] 42 | | valids.resize(code.len(), false); [INFO] [stderr] ... | [INFO] [stderr] 78 | | } [INFO] [stderr] 79 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/pc.rs:50:21 [INFO] [stderr] | [INFO] [stderr] 50 | i = i + 1; [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `i += 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: manual implementation of an assign operation [INFO] [stderr] --> src/pc.rs:56:21 [INFO] [stderr] | [INFO] [stderr] 56 | i = i + 1; [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `i += 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/pc.rs:128:21 [INFO] [stderr] | [INFO] [stderr] 128 | i = i + 1; [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `i += 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/pc.rs:131:13 [INFO] [stderr] | [INFO] [stderr] 131 | o = o + 1; [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `o += 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/pc.rs:314:21 [INFO] [stderr] | [INFO] [stderr] 314 | i = i + 1; [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `i += 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/pc.rs:317:13 [INFO] [stderr] | [INFO] [stderr] 317 | o = o + 1; [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `o += 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/pc.rs:439:17 [INFO] [stderr] | [INFO] [stderr] 439 | *self.position = *self.position + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `*self.position += 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: identical conversion [INFO] [stderr] --> src/eval/cost.rs:50:5 [INFO] [stderr] | [INFO] [stderr] 50 | Gas::from(P::gas_call()) + xfer_cost(machine, instruction) + new_cost(machine, instruction) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Gas::from()`: `P::gas_call()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/eval/cost.rs:77:5 [INFO] [stderr] | [INFO] [stderr] 77 | Gas::from(P::gas_suicide()) + if !machine.account_state.exists(address).unwrap() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Gas::from()`: `P::gas_suicide()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/eval/cost.rs:78:9 [INFO] [stderr] | [INFO] [stderr] 78 | Gas::from(P::gas_suicide_new_account()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Gas::from()`: `P::gas_suicide_new_account()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/eval/cost.rs:105:5 [INFO] [stderr] | [INFO] [stderr] 105 | (Gas::from(G_MEMORY) * a + a * a / Gas::from(512u64)).into() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `(Gas::from(G_MEMORY) * a + a * a / Gas::from(512u64))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/eval/cost.rs:111:9 [INFO] [stderr] | [INFO] [stderr] 111 | let ref stack = state.stack; [INFO] [stderr] | ----^^^^^^^^^--------------- help: try: `let stack = &state.stack;` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/eval/cost.rs:171:13 [INFO] [stderr] | [INFO] [stderr] 171 | (Gas::from(G_SHA3) + Gas::from(G_SHA3WORD) * if wordr == Gas::zero() { wordd } else { wordd + Gas::from(1u64) }).into() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `(Gas::from(G_SHA3) + Gas::from(G_SHA3WORD) * if wordr == Gas::zero() { wordd } else { wordd + Gas::from(1u64) })` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/eval/cost.rs:176:13 [INFO] [stderr] | [INFO] [stderr] 176 | (Gas::from(G_LOG) + Gas::from(G_LOGDATA) * Gas::from(len) + Gas::from(G_LOGTOPIC) * Gas::from(v)).into() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `(Gas::from(G_LOG) + Gas::from(G_LOGDATA) * Gas::from(len) + Gas::from(G_LOGTOPIC) * Gas::from(v))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/eval/cost.rs:183:13 [INFO] [stderr] | [INFO] [stderr] 183 | (Gas::from(P::gas_extcode()) + Gas::from(G_COPY) * if wordr == Gas::zero() { wordd } else { wordd + Gas::from(1u64) }).into() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `(Gas::from(P::gas_extcode()) + Gas::from(G_COPY) * if wordr == Gas::zero() { wordd } else { wordd + Gas::from(1u64) })` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/eval/cost.rs:183:14 [INFO] [stderr] | [INFO] [stderr] 183 | (Gas::from(P::gas_extcode()) + Gas::from(G_COPY) * if wordr == Gas::zero() { wordd } else { wordd + Gas::from(1u64) }).into() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Gas::from()`: `P::gas_extcode()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/eval/cost.rs:190:13 [INFO] [stderr] | [INFO] [stderr] 190 | (Gas::from(G_VERYLOW) + Gas::from(G_COPY) * if wordr == Gas::zero() { wordd } else { wordd + Gas::from(1u64) }).into() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `(Gas::from(G_VERYLOW) + Gas::from(G_COPY) * if wordr == Gas::zero() { wordd } else { wordd + Gas::from(1u64) })` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/eval/cost.rs:197:36 [INFO] [stderr] | [INFO] [stderr] 197 | Gas::from(G_EXP) + Gas::from(P::gas_expbyte()) * (Gas::from(1u64) + Gas::from(state.stack.peek(1).unwrap().log2floor()) / Gas::from(8u64)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Gas::from()`: `P::gas_expbyte()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: The function/method `copy_from_memory` doesn't need a mutable reference [INFO] [stderr] --> src/eval/run/mod.rs:174:71 [INFO] [stderr] | [INFO] [stderr] 174 | state.out = Rc::new(copy_from_memory(&mut state.memory, start, len)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/eval/util.rs:60:9 [INFO] [stderr] | [INFO] [stderr] 60 | j = j + 1; [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `j += 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: large size difference between variants [INFO] [stderr] --> src/eval/mod.rs:124:5 [INFO] [stderr] | [INFO] [stderr] 124 | InvokeCall(Context, (U256, U256)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::large_enum_variant)] on by default [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] --> src/eval/mod.rs:124:5 [INFO] [stderr] | [INFO] [stderr] 124 | InvokeCall(Context, (U256, U256)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/eval/mod.rs:139:5 [INFO] [stderr] | [INFO] [stderr] 139 | InvokeCall(Context, (U256, U256)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] --> src/eval/mod.rs:139:5 [INFO] [stderr] | [INFO] [stderr] 139 | InvokeCall(Context, (U256, U256)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/eval/mod.rs:276:9 [INFO] [stderr] | [INFO] [stderr] 276 | / match &self.status { [INFO] [stderr] 277 | | &MachineStatus::Running => (), [INFO] [stderr] 278 | | _ => panic!(), [INFO] [stderr] 279 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 276 | match self.status { [INFO] [stderr] 277 | MachineStatus::Running => (), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: item `commit::account::Storage` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/commit/account.rs:33:1 [INFO] [stderr] | [INFO] [stderr] 33 | / impl Storage { [INFO] [stderr] 34 | | /// Create a new storage. [INFO] [stderr] 35 | | fn new(address: Address, partial: bool) -> Self { [INFO] [stderr] 36 | | Storage { [INFO] [stderr] ... | [INFO] [stderr] 86 | | } [INFO] [stderr] 87 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/commit/account.rs:130:9 [INFO] [stderr] | [INFO] [stderr] 130 | / match self { [INFO] [stderr] 131 | | &AccountCommitment::Full { [INFO] [stderr] 132 | | address, [INFO] [stderr] 133 | | .. [INFO] [stderr] ... | [INFO] [stderr] 143 | | &AccountCommitment::Nonexist(address) => address, [INFO] [stderr] 144 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 130 | match *self { [INFO] [stderr] 131 | AccountCommitment::Full { [INFO] [stderr] 132 | address, [INFO] [stderr] 133 | .. [INFO] [stderr] 134 | } => address, [INFO] [stderr] 135 | AccountCommitment::Code { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/commit/account.rs:187:9 [INFO] [stderr] | [INFO] [stderr] 187 | / match self { [INFO] [stderr] 188 | | &AccountChange::Full { [INFO] [stderr] 189 | | address, [INFO] [stderr] 190 | | .. [INFO] [stderr] ... | [INFO] [stderr] 198 | | &AccountChange::Nonexist(address) => address, [INFO] [stderr] 199 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 187 | match *self { [INFO] [stderr] 188 | AccountChange::Full { [INFO] [stderr] 189 | address, [INFO] [stderr] 190 | .. [INFO] [stderr] 191 | } => address, [INFO] [stderr] 192 | AccountChange::IncreaseBalance(address, _) => address, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to want to iterate on a map's keys [INFO] [stderr] --> src/commit/account.rs:241:29 [INFO] [stderr] | [INFO] [stderr] 241 | for (address, _) in &self.codes { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::for_kv_map)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stderr] help: use the corresponding method [INFO] [stderr] | [INFO] [stderr] 241 | for address in self.codes.keys() { [INFO] [stderr] | ^^^^^^^ ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/commit/account.rs:422:17 [INFO] [stderr] | [INFO] [stderr] 422 | / match val { [INFO] [stderr] 423 | | &mut AccountChange::Nonexist(_) => (), [INFO] [stderr] 424 | | // The above matches all cases in enum. FIXME when [INFO] [stderr] 425 | | // there're more AccountChange variants added. [INFO] [stderr] 426 | | _ => unreachable!(), [INFO] [stderr] 427 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 422 | match *val { [INFO] [stderr] 423 | AccountChange::Nonexist(_) => (), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/commit/account.rs:446:13 [INFO] [stderr] | [INFO] [stderr] 446 | / match self.accounts.get(&address).unwrap() { [INFO] [stderr] 447 | | &AccountChange::Full { ref code, .. } => return Ok(code.clone()), [INFO] [stderr] 448 | | &AccountChange::Create { ref code, .. } => return Ok(code.clone()), [INFO] [stderr] 449 | | &AccountChange::Nonexist(_) => return Ok(Rc::new(Vec::new())), [INFO] [stderr] 450 | | &AccountChange::IncreaseBalance(_, _) => (), [INFO] [stderr] 451 | | &AccountChange::DecreaseBalance(_, _) => (), [INFO] [stderr] 452 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 446 | match *self.accounts.get(&address).unwrap() { [INFO] [stderr] 447 | AccountChange::Full { ref code, .. } => return Ok(code.clone()), [INFO] [stderr] 448 | AccountChange::Create { ref code, .. } => return Ok(code.clone()), [INFO] [stderr] 449 | AccountChange::Nonexist(_) => return Ok(Rc::new(Vec::new())), [INFO] [stderr] 450 | AccountChange::IncreaseBalance(_, _) => (), [INFO] [stderr] 451 | AccountChange::DecreaseBalance(_, _) => (), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/commit/account.rs:446:19 [INFO] [stderr] | [INFO] [stderr] 446 | match self.accounts.get(&address).unwrap() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.accounts[&address]` [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/commit/account.rs:456:23 [INFO] [stderr] | [INFO] [stderr] 456 | return Ok(self.codes.get(&address).unwrap().clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.codes[&address]` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/commit/account.rs:466:13 [INFO] [stderr] | [INFO] [stderr] 466 | / match self.accounts.get(&address).unwrap() { [INFO] [stderr] 467 | | &AccountChange::Full { [INFO] [stderr] 468 | | nonce, [INFO] [stderr] 469 | | .. [INFO] [stderr] ... | [INFO] [stderr] 478 | | _ => (), [INFO] [stderr] 479 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 466 | match *self.accounts.get(&address).unwrap() { [INFO] [stderr] 467 | AccountChange::Full { [INFO] [stderr] 468 | nonce, [INFO] [stderr] 469 | .. [INFO] [stderr] 470 | } => return Ok(nonce), [INFO] [stderr] 471 | AccountChange::Create { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/commit/account.rs:466:19 [INFO] [stderr] | [INFO] [stderr] 466 | match self.accounts.get(&address).unwrap() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.accounts[&address]` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/commit/account.rs:489:13 [INFO] [stderr] | [INFO] [stderr] 489 | / match self.accounts.get(&address).unwrap() { [INFO] [stderr] 490 | | &AccountChange::Full { [INFO] [stderr] 491 | | balance, [INFO] [stderr] 492 | | .. [INFO] [stderr] ... | [INFO] [stderr] 501 | | _ => (), [INFO] [stderr] 502 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 489 | match *self.accounts.get(&address).unwrap() { [INFO] [stderr] 490 | AccountChange::Full { [INFO] [stderr] 491 | balance, [INFO] [stderr] 492 | .. [INFO] [stderr] 493 | } => return Ok(balance), [INFO] [stderr] 494 | AccountChange::Create { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/commit/account.rs:489:19 [INFO] [stderr] | [INFO] [stderr] 489 | match self.accounts.get(&address).unwrap() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.accounts[&address]` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/commit/account.rs:511:13 [INFO] [stderr] | [INFO] [stderr] 511 | / match self.accounts.get(&address).unwrap() { [INFO] [stderr] 512 | | &AccountChange::Full { [INFO] [stderr] 513 | | ref changing_storage, [INFO] [stderr] 514 | | .. [INFO] [stderr] ... | [INFO] [stderr] 521 | | _ => (), [INFO] [stderr] 522 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 511 | match *self.accounts.get(&address).unwrap() { [INFO] [stderr] 512 | AccountChange::Full { [INFO] [stderr] 513 | ref changing_storage, [INFO] [stderr] 514 | .. [INFO] [stderr] 515 | } => return changing_storage.read(index), [INFO] [stderr] 516 | AccountChange::Create { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/commit/account.rs:511:19 [INFO] [stderr] | [INFO] [stderr] 511 | match self.accounts.get(&address).unwrap() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.accounts[&address]` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/commit/account.rs:543:21 [INFO] [stderr] | [INFO] [stderr] 543 | / match val { [INFO] [stderr] 544 | | &mut AccountChange::Nonexist(_) => { is_nonexist = true; } [INFO] [stderr] 545 | | _ => { is_nonexist = false; } [INFO] [stderr] 546 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 543 | match *val { [INFO] [stderr] 544 | AccountChange::Nonexist(_) => { is_nonexist = true; } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/commit/account.rs:612:9 [INFO] [stderr] | [INFO] [stderr] 612 | / match self.accounts.get_mut(&address).unwrap() { [INFO] [stderr] 613 | | &mut AccountChange::Create { ref mut code, .. } => { [INFO] [stderr] 614 | | *code = new_code; [INFO] [stderr] 615 | | }, [INFO] [stderr] 616 | | _ => panic!(), [INFO] [stderr] 617 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 612 | match *self.accounts.get_mut(&address).unwrap() { [INFO] [stderr] 613 | AccountChange::Create { ref mut code, .. } => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/commit/account.rs:773:17 [INFO] [stderr] | [INFO] [stderr] 773 | / match val { [INFO] [stderr] 774 | | &mut AccountChange::Nonexist(_) => { is_nonexist = true; } [INFO] [stderr] 775 | | _ => { is_nonexist = false; } [INFO] [stderr] 776 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 773 | match *val { [INFO] [stderr] 774 | AccountChange::Nonexist(_) => { is_nonexist = true; } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/patch/precompiled.rs:111:18 [INFO] [stderr] | [INFO] [stderr] 111 | for i in 0..min(datao.len(), 128) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try replacing the loop by: `data[..min(datao.len(), 128)].clone_from_slice(&datao[..min(datao.len(), 128)])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::manual_memcpy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `ret`. [INFO] [stderr] --> src/patch/precompiled.rs:116:26 [INFO] [stderr] | [INFO] [stderr] 116 | for i in 0..12 { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 116 | for in ret.iter_mut().take(12) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/patch/precompiled.rs:168:14 [INFO] [stderr] | [INFO] [stderr] 168 | for i in 0..32 { [INFO] [stderr] | ^^^^^ help: try replacing the loop by: `message_raw[..32].clone_from_slice(&data[..32])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/patch/precompiled.rs:178:14 [INFO] [stderr] | [INFO] [stderr] 178 | for i in 0..64 { [INFO] [stderr] | ^^^^^ help: try replacing the loop by: `sig_raw[..64].clone_from_slice(&data[64..(64 + 64)])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/transaction.rs:95:25 [INFO] [stderr] | [INFO] [stderr] 95 | action: self.action.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.action` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/transaction.rs:150:21 [INFO] [stderr] | [INFO] [stderr] 150 | action: transaction.action.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `transaction.action` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/transaction.rs:182:41 [INFO] [stderr] | [INFO] [stderr] 182 | self.action.address(self.caller.unwrap_or(system_address!()), self.nonce) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| system_address!())` [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: identical conversion [INFO] [stderr] --> src/transaction.rs:190:25 [INFO] [stderr] | [INFO] [stderr] 190 | gas = gas + Gas::from(P::gas_transaction_create()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Gas::from()`: `P::gas_transaction_create()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/transaction.rs:223:41 [INFO] [stderr] | [INFO] [stderr] 223 | caller: self.caller.unwrap_or(system_address!()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| system_address!())` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/transaction.rs:229:36 [INFO] [stderr] | [INFO] [stderr] 229 | origin: origin.unwrap_or(self.caller.unwrap_or(system_address!())), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| self.caller.unwrap_or(system_address!()))` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/transaction.rs:229:58 [INFO] [stderr] | [INFO] [stderr] 229 | origin: origin.unwrap_or(self.caller.unwrap_or(system_address!())), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| system_address!())` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/transaction.rs:243:41 [INFO] [stderr] | [INFO] [stderr] 243 | caller: self.caller.unwrap_or(system_address!()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| system_address!())` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/transaction.rs:249:36 [INFO] [stderr] | [INFO] [stderr] 249 | origin: origin.unwrap_or(self.caller.unwrap_or(system_address!())), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| self.caller.unwrap_or(system_address!()))` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/transaction.rs:249:58 [INFO] [stderr] | [INFO] [stderr] 249 | origin: origin.unwrap_or(self.caller.unwrap_or(system_address!())), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| system_address!())` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:216:9 [INFO] [stderr] | [INFO] [stderr] 216 | / match self.machines.last().unwrap().status().clone() { [INFO] [stderr] 217 | | MachineStatus::ExitedNotSupported(err) => return VMStatus::ExitedNotSupported(err), [INFO] [stderr] 218 | | _ => (), [INFO] [stderr] 219 | | } [INFO] [stderr] | |_________^ help: try this: `if let MachineStatus::ExitedNotSupported(err) = self.machines.last().unwrap().status().clone() { return VMStatus::ExitedNotSupported(err) }` [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] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib.rs:224:66 [INFO] [stderr] | [INFO] [stderr] 224 | MachineStatus::ExitedErr(err) => VMStatus::ExitedErr(err.into()), [INFO] [stderr] | ^^^^^^^^^^ help: consider removing `.into()`: `err` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:253:20 [INFO] [stderr] | [INFO] [stderr] 253 | if self.machines.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.machines.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 28.10s [INFO] running `"docker" "inspect" "96b639091ae89077d0b01713061627935a50bf82fa9b65c39efbef654d445469"` [INFO] running `"docker" "rm" "-f" "96b639091ae89077d0b01713061627935a50bf82fa9b65c39efbef654d445469"` [INFO] [stdout] 96b639091ae89077d0b01713061627935a50bf82fa9b65c39efbef654d445469