[INFO] crate mysql 14.1.1 is already in cache [INFO] extracting crate mysql 14.1.1 into work/ex/clippy-test-run/sources/stable/reg/mysql/14.1.1 [INFO] extracting crate mysql 14.1.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/mysql/14.1.1 [INFO] validating manifest of mysql-14.1.1 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 mysql-14.1.1 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 mysql-14.1.1 [INFO] finished frobbing mysql-14.1.1 [INFO] frobbed toml for mysql-14.1.1 written to work/ex/clippy-test-run/sources/stable/reg/mysql/14.1.1/Cargo.toml [INFO] started frobbing mysql-14.1.1 [INFO] finished frobbing mysql-14.1.1 [INFO] frobbed toml for mysql-14.1.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/mysql/14.1.1/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 mysql-14.1.1 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-5/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/mysql/14.1.1:/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] 2cb7a5fecdc002b9dd891423f3ebfc44ebf71ae3253a05af5f81db3bdb512d03 [INFO] running `"docker" "start" "-a" "2cb7a5fecdc002b9dd891423f3ebfc44ebf71ae3253a05af5f81db3bdb512d03"` [INFO] [stderr] Checking uuid v0.6.5 [INFO] [stderr] Checking checked v0.5.0 [INFO] [stderr] Checking regex v1.0.6 [INFO] [stderr] Checking twox-hash v1.1.2 [INFO] [stderr] Checking mysql_common v0.9.2 [INFO] [stderr] Checking mysql v14.1.1 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/conn/pool.rs:34:13 [INFO] [stderr] | [INFO] [stderr] 34 | opts: opts, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `opts` [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/conn/pool.rs:34:13 [INFO] [stderr] | [INFO] [stderr] 34 | opts: opts, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `opts` [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/conn/pool.rs:868:29 [INFO] [stderr] | [INFO] [stderr] 868 | let mut a = A { pool: pool, x: 0 }; [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `pool` [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/conn/pool.rs:868:29 [INFO] [stderr] | [INFO] [stderr] 868 | let mut a = A { pool: pool, x: 0 }; [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `pool` [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/conn/mod.rs:298:13 [INFO] [stderr] | [INFO] [stderr] 298 | stmt: stmt, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `stmt` [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/conn/mod.rs:305:13 [INFO] [stderr] | [INFO] [stderr] 305 | stmt: stmt, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `stmt` [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/conn/mod.rs:298:13 [INFO] [stderr] | [INFO] [stderr] 298 | stmt: stmt, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `stmt` [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/conn/mod.rs:648:13 [INFO] [stderr] | [INFO] [stderr] 648 | opts: opts, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `opts` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/conn/mod.rs:305:13 [INFO] [stderr] | [INFO] [stderr] 305 | stmt: stmt, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `stmt` [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/conn/mod.rs:648:13 [INFO] [stderr] | [INFO] [stderr] 648 | opts: opts, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `opts` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/conn/mod.rs:1891:13 [INFO] [stderr] | [INFO] [stderr] 1891 | conn: conn, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `conn` [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/conn/mod.rs:1893:13 [INFO] [stderr] | [INFO] [stderr] 1893 | is_bin: is_bin, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `is_bin` [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/conn/mod.rs:1891:13 [INFO] [stderr] | [INFO] [stderr] 1891 | conn: conn, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `conn` [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/conn/mod.rs:1893:13 [INFO] [stderr] | [INFO] [stderr] 1893 | is_bin: is_bin, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `is_bin` [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/packet.rs:26:13 [INFO] [stderr] | [INFO] [stderr] 26 | named_params: named_params, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `named_params` [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/packet.rs:27:13 [INFO] [stderr] | [INFO] [stderr] 27 | statement_id: statement_id, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `statement_id` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/packet.rs:28:13 [INFO] [stderr] | [INFO] [stderr] 28 | num_columns: num_columns, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `num_columns` [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/packet.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | num_params: num_params, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `num_params` [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/packet.rs:30:13 [INFO] [stderr] | [INFO] [stderr] 30 | warning_count: warning_count, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `warning_count` [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/packet.rs:26:13 [INFO] [stderr] | [INFO] [stderr] 26 | named_params: named_params, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `named_params` [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/packet.rs:27:13 [INFO] [stderr] | [INFO] [stderr] 27 | statement_id: statement_id, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `statement_id` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/packet.rs:28:13 [INFO] [stderr] | [INFO] [stderr] 28 | num_columns: num_columns, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `num_columns` [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/packet.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | num_params: num_params, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `num_params` [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/packet.rs:30:13 [INFO] [stderr] | [INFO] [stderr] 30 | warning_count: warning_count, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `warning_count` [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: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/conn/opts.rs:678:20 [INFO] [stderr] | [INFO] [stderr] 678 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 679 | | if value == "true" { [INFO] [stderr] 680 | | opts.set_verify_peer(true); [INFO] [stderr] 681 | | } else if value == "false" { [INFO] [stderr] ... | [INFO] [stderr] 685 | | } [INFO] [stderr] 686 | | } [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] 678 | } else if value == "true" { [INFO] [stderr] 679 | opts.set_verify_peer(true); [INFO] [stderr] 680 | } else if value == "false" { [INFO] [stderr] 681 | opts.set_verify_peer(false); [INFO] [stderr] 682 | } else { [INFO] [stderr] 683 | return Err(UrlError::InvalidValue("verify_peer".into(), value)); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/conn/pool.rs:162:24 [INFO] [stderr] | [INFO] [stderr] 162 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 163 | | if self.count.load(Ordering::Relaxed) < self.max.load(Ordering::Relaxed) { [INFO] [stderr] 164 | | pool.new_conn()?; [INFO] [stderr] 165 | | self.count.fetch_add(1, Ordering::SeqCst); [INFO] [stderr] ... | [INFO] [stderr] 175 | | } [INFO] [stderr] 176 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 162 | } else if self.count.load(Ordering::Relaxed) < self.max.load(Ordering::Relaxed) { [INFO] [stderr] 163 | pool.new_conn()?; [INFO] [stderr] 164 | self.count.fetch_add(1, Ordering::SeqCst); [INFO] [stderr] 165 | } else { [INFO] [stderr] 166 | pool = if let Some((start, timeout, std_timeout)) = times { [INFO] [stderr] 167 | if SteadyTime::now() - start > timeout { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/conn/pool.rs:181:9 [INFO] [stderr] | [INFO] [stderr] 181 | / if call_ping && self.check_health { [INFO] [stderr] 182 | | if !conn.ping() { [INFO] [stderr] 183 | | conn.reset()?; [INFO] [stderr] 184 | | } [INFO] [stderr] 185 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 181 | if call_ping && self.check_health && !conn.ping() { [INFO] [stderr] 182 | conn.reset()?; [INFO] [stderr] 183 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/conn/pool.rs:291:13 [INFO] [stderr] | [INFO] [stderr] 291 | return Ok(None); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(None)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/conn/pool.rs:406:13 [INFO] [stderr] | [INFO] [stderr] 406 | return Ok(None); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(None)` [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/conn/pool.rs:435:13 [INFO] [stderr] | [INFO] [stderr] 435 | return Ok(None); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(None)` [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/conn/mod.rs:150:13 [INFO] [stderr] | [INFO] [stderr] 150 | return Ok(None); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(None)` [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/conn/mod.rs:179:13 [INFO] [stderr] | [INFO] [stderr] 179 | return Ok(None); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(None)` [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/conn/mod.rs:420:13 [INFO] [stderr] | [INFO] [stderr] 420 | return Ok(None); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(None)` [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/conn/mod.rs:726:9 [INFO] [stderr] | [INFO] [stderr] 726 | return Ok(conn); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(conn)` [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/conn/mod.rs:828:9 [INFO] [stderr] | [INFO] [stderr] 828 | return Ok(()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/conn/mod.rs:910:9 [INFO] [stderr] | [INFO] [stderr] 910 | / if self.opts.get_ssl_opts().is_some() && self.stream.is_some() { [INFO] [stderr] 911 | | if self.is_insecure() { [INFO] [stderr] 912 | | if !handshake [INFO] [stderr] 913 | | .capabilities() [INFO] [stderr] ... | [INFO] [stderr] 921 | | } [INFO] [stderr] 922 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 910 | if self.opts.get_ssl_opts().is_some() && self.stream.is_some() && self.is_insecure() { [INFO] [stderr] 911 | if !handshake [INFO] [stderr] 912 | .capabilities() [INFO] [stderr] 913 | .contains(CapabilityFlags::CLIENT_SSL) [INFO] [stderr] 914 | { [INFO] [stderr] 915 | return Err(DriverError(SslNotSupported)); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/conn/mod.rs:977:9 [INFO] [stderr] | [INFO] [stderr] 977 | / if self.is_insecure() { [INFO] [stderr] 978 | | if self.opts.get_ssl_opts().is_some() { [INFO] [stderr] 979 | | client_flags.insert(CapabilityFlags::CLIENT_SSL); [INFO] [stderr] 980 | | } [INFO] [stderr] 981 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 977 | if self.is_insecure() && self.opts.get_ssl_opts().is_some() { [INFO] [stderr] 978 | client_flags.insert(CapabilityFlags::CLIENT_SSL); [INFO] [stderr] 979 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/conn/mod.rs:1449:13 [INFO] [stderr] | [INFO] [stderr] 1449 | return Ok(None); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(None)` [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/conn/mod.rs:1631:13 [INFO] [stderr] | [INFO] [stderr] 1631 | return Ok(None); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(None)` [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/conn/mod.rs:1670:9 [INFO] [stderr] | [INFO] [stderr] 1670 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [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/conn/mod.rs:1908:27 [INFO] [stderr] | [INFO] [stderr] 1908 | Err(e) => return Some(Err(e)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(Err(e))` [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/conn/opts.rs:678:20 [INFO] [stderr] | [INFO] [stderr] 678 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 679 | | if value == "true" { [INFO] [stderr] 680 | | opts.set_verify_peer(true); [INFO] [stderr] 681 | | } else if value == "false" { [INFO] [stderr] ... | [INFO] [stderr] 685 | | } [INFO] [stderr] 686 | | } [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] 678 | } else if value == "true" { [INFO] [stderr] 679 | opts.set_verify_peer(true); [INFO] [stderr] 680 | } else if value == "false" { [INFO] [stderr] 681 | opts.set_verify_peer(false); [INFO] [stderr] 682 | } else { [INFO] [stderr] 683 | return Err(UrlError::InvalidValue("verify_peer".into(), value)); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/conn/pool.rs:162:24 [INFO] [stderr] | [INFO] [stderr] 162 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 163 | | if self.count.load(Ordering::Relaxed) < self.max.load(Ordering::Relaxed) { [INFO] [stderr] 164 | | pool.new_conn()?; [INFO] [stderr] 165 | | self.count.fetch_add(1, Ordering::SeqCst); [INFO] [stderr] ... | [INFO] [stderr] 175 | | } [INFO] [stderr] 176 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 162 | } else if self.count.load(Ordering::Relaxed) < self.max.load(Ordering::Relaxed) { [INFO] [stderr] 163 | pool.new_conn()?; [INFO] [stderr] 164 | self.count.fetch_add(1, Ordering::SeqCst); [INFO] [stderr] 165 | } else { [INFO] [stderr] 166 | pool = if let Some((start, timeout, std_timeout)) = times { [INFO] [stderr] 167 | if SteadyTime::now() - start > timeout { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/conn/pool.rs:181:9 [INFO] [stderr] | [INFO] [stderr] 181 | / if call_ping && self.check_health { [INFO] [stderr] 182 | | if !conn.ping() { [INFO] [stderr] 183 | | conn.reset()?; [INFO] [stderr] 184 | | } [INFO] [stderr] 185 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 181 | if call_ping && self.check_health && !conn.ping() { [INFO] [stderr] 182 | conn.reset()?; [INFO] [stderr] 183 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/conn/pool.rs:291:13 [INFO] [stderr] | [INFO] [stderr] 291 | return Ok(None); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(None)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/conn/pool.rs:406:13 [INFO] [stderr] | [INFO] [stderr] 406 | return Ok(None); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(None)` [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/conn/pool.rs:435:13 [INFO] [stderr] | [INFO] [stderr] 435 | return Ok(None); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(None)` [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/conn/mod.rs:150:13 [INFO] [stderr] | [INFO] [stderr] 150 | return Ok(None); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(None)` [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/conn/mod.rs:179:13 [INFO] [stderr] | [INFO] [stderr] 179 | return Ok(None); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(None)` [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/conn/mod.rs:420:13 [INFO] [stderr] | [INFO] [stderr] 420 | return Ok(None); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(None)` [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/conn/mod.rs:726:9 [INFO] [stderr] | [INFO] [stderr] 726 | return Ok(conn); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(conn)` [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/conn/mod.rs:828:9 [INFO] [stderr] | [INFO] [stderr] 828 | return Ok(()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/conn/mod.rs:910:9 [INFO] [stderr] | [INFO] [stderr] 910 | / if self.opts.get_ssl_opts().is_some() && self.stream.is_some() { [INFO] [stderr] 911 | | if self.is_insecure() { [INFO] [stderr] 912 | | if !handshake [INFO] [stderr] 913 | | .capabilities() [INFO] [stderr] ... | [INFO] [stderr] 921 | | } [INFO] [stderr] 922 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 910 | if self.opts.get_ssl_opts().is_some() && self.stream.is_some() && self.is_insecure() { [INFO] [stderr] 911 | if !handshake [INFO] [stderr] 912 | .capabilities() [INFO] [stderr] 913 | .contains(CapabilityFlags::CLIENT_SSL) [INFO] [stderr] 914 | { [INFO] [stderr] 915 | return Err(DriverError(SslNotSupported)); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/conn/mod.rs:977:9 [INFO] [stderr] | [INFO] [stderr] 977 | / if self.is_insecure() { [INFO] [stderr] 978 | | if self.opts.get_ssl_opts().is_some() { [INFO] [stderr] 979 | | client_flags.insert(CapabilityFlags::CLIENT_SSL); [INFO] [stderr] 980 | | } [INFO] [stderr] 981 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 977 | if self.is_insecure() && self.opts.get_ssl_opts().is_some() { [INFO] [stderr] 978 | client_flags.insert(CapabilityFlags::CLIENT_SSL); [INFO] [stderr] 979 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/conn/mod.rs:1449:13 [INFO] [stderr] | [INFO] [stderr] 1449 | return Ok(None); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(None)` [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/conn/mod.rs:1631:13 [INFO] [stderr] | [INFO] [stderr] 1631 | return Ok(None); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(None)` [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/conn/mod.rs:1670:9 [INFO] [stderr] | [INFO] [stderr] 1670 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [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/conn/mod.rs:1908:27 [INFO] [stderr] | [INFO] [stderr] 1908 | Err(e) => return Some(Err(e)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(Err(e))` [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: value assigned to `socket` is never read [INFO] [stderr] --> src/conn/mod.rs:686:21 [INFO] [stderr] | [INFO] [stderr] 686 | let mut socket = None; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_assignments)] on by default [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/conn/opts.rs:145:20 [INFO] [stderr] | [INFO] [stderr] 145 | } else if self.ip_or_hostname.as_ref().unwrap() == "localhost" { [INFO] [stderr] | ____________________^ [INFO] [stderr] 146 | | true [INFO] [stderr] 147 | | } else { [INFO] [stderr] 148 | | false [INFO] [stderr] 149 | | } [INFO] [stderr] | |_____________^ help: you can reduce it to: `self.ip_or_hostname.as_ref().unwrap() == "localhost"` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/conn/pool.rs:125:40 [INFO] [stderr] | [INFO] [stderr] 125 | Duration::milliseconds(timeout_ms as i64), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `i64::from(timeout_ms)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/conn/pool.rs:126:42 [INFO] [stderr] | [INFO] [stderr] 126 | StdDuration::from_millis(timeout_ms as u64), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u64::from(timeout_ms)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/conn/pool.rs:288:13 [INFO] [stderr] | [INFO] [stderr] 288 | / for row in result { [INFO] [stderr] 289 | | return row.map(Some); [INFO] [stderr] 290 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::never_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/conn/pool.rs:403:13 [INFO] [stderr] | [INFO] [stderr] 403 | / for row in result { [INFO] [stderr] 404 | | return row.map(|x| Some(from_row(x))); [INFO] [stderr] 405 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/conn/pool.rs:432:13 [INFO] [stderr] | [INFO] [stderr] 432 | / for row in result { [INFO] [stderr] 433 | | return row.map(|x| Some(from_row(x))); [INFO] [stderr] 434 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] warning: defining a method called `as_mut` on this type; consider implementing the `std::convert::AsMut` trait or choosing a less ambiguous name [INFO] [stderr] --> src/conn/pool.rs:456:5 [INFO] [stderr] | [INFO] [stderr] 456 | / pub fn as_mut<'a>(&'a mut self) -> &'a mut Conn { [INFO] [stderr] 457 | | self.conn.as_mut().unwrap() [INFO] [stderr] 458 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::should_implement_trait)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/conn/pool.rs:456:5 [INFO] [stderr] | [INFO] [stderr] 456 | / pub fn as_mut<'a>(&'a mut self) -> &'a mut Conn { [INFO] [stderr] 457 | | self.conn.as_mut().unwrap() [INFO] [stderr] 458 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: defining a method called `as_ref` on this type; consider implementing the `std::convert::AsRef` trait or choosing a less ambiguous name [INFO] [stderr] --> src/conn/pool.rs:462:5 [INFO] [stderr] | [INFO] [stderr] 462 | / pub fn as_ref<'a>(&'a self) -> &'a Conn { [INFO] [stderr] 463 | | self.conn.as_ref().unwrap() [INFO] [stderr] 464 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/conn/pool.rs:462:5 [INFO] [stderr] | [INFO] [stderr] 462 | / pub fn as_ref<'a>(&'a self) -> &'a Conn { [INFO] [stderr] 463 | | self.conn.as_ref().unwrap() [INFO] [stderr] 464 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/conn/pool.rs:497:9 [INFO] [stderr] | [INFO] [stderr] 497 | / let _ = self [INFO] [stderr] 498 | | .as_mut() [INFO] [stderr] 499 | | ._start_transaction(consistent_snapshot, isolation_level, readonly)?; [INFO] [stderr] | |_________________________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_unit_value)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/conn/mod.rs:147:13 [INFO] [stderr] | [INFO] [stderr] 147 | / for row in result { [INFO] [stderr] 148 | | return row.map(|x| Some(from_row(x))); [INFO] [stderr] 149 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/conn/mod.rs:176:13 [INFO] [stderr] | [INFO] [stderr] 176 | / for row in result { [INFO] [stderr] 177 | | return row.map(|x| Some(from_row(x))); [INFO] [stderr] 178 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/conn/mod.rs:264:5 [INFO] [stderr] | [INFO] [stderr] 264 | ViaPooledConn(pool::PooledConn), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::large_enum_variant)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] | [INFO] [stderr] 264 | ViaPooledConn(Box), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/conn/mod.rs:270:5 [INFO] [stderr] | [INFO] [stderr] 270 | / fn deref<'c>(&'c self) -> &'c Conn { [INFO] [stderr] 271 | | match *self { [INFO] [stderr] 272 | | ConnRef::ViaConnRef(ref conn_ref) => conn_ref, [INFO] [stderr] 273 | | ConnRef::ViaPooledConn(ref conn) => conn.as_ref(), [INFO] [stderr] 274 | | } [INFO] [stderr] 275 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/conn/mod.rs:279:5 [INFO] [stderr] | [INFO] [stderr] 279 | / fn deref_mut<'c>(&'c mut self) -> &'c mut Conn { [INFO] [stderr] 280 | | match *self { [INFO] [stderr] 281 | | ConnRef::ViaConnRef(ref mut conn_ref) => conn_ref, [INFO] [stderr] 282 | | ConnRef::ViaPooledConn(ref mut conn) => conn.as_mut(), [INFO] [stderr] 283 | | } [INFO] [stderr] 284 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/conn/mod.rs:417:13 [INFO] [stderr] | [INFO] [stderr] 417 | / for row in result { [INFO] [stderr] 418 | | return row.map(|x| Some(from_row(x))); [INFO] [stderr] 419 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/conn/mod.rs:524:5 [INFO] [stderr] | [INFO] [stderr] 524 | Arc FnMut(&'a [u8], &'a mut LocalInfile) -> io::Result<()> + Send>>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stderr] --> src/conn/mod.rs:563:16 [INFO] [stderr] | [INFO] [stderr] 563 | if let Ok(_) = result { [INFO] [stderr] | _________- ^^^^^ [INFO] [stderr] 564 | | if self.buffer.position() as usize >= self.buffer.get_ref().len() { [INFO] [stderr] 565 | | self.flush()?; [INFO] [stderr] 566 | | } [INFO] [stderr] 567 | | } [INFO] [stderr] | |_________- help: try this: `if result.is_ok()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/conn/mod.rs:694:24 [INFO] [stderr] | [INFO] [stderr] 694 | if socket.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!socket.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: using `clone` on a `Copy` type [INFO] [stderr] --> src/conn/mod.rs:806:34 [INFO] [stderr] | [INFO] [stderr] 806 | let tcp_keepalive_time = self.opts.get_tcp_keepalive_time_ms().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.opts.get_tcp_keepalive_time_ms()` [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: length comparison to zero [INFO] [stderr] --> src/conn/mod.rs:973:16 [INFO] [stderr] | [INFO] [stderr] 973 | if db_name.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!db_name.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: this call to `as_ref` does nothing [INFO] [stderr] --> src/conn/mod.rs:1042:34 [INFO] [stderr] | [INFO] [stderr] 1042 | writer.write_all(scr.as_ref()).expect("should not fail"); [INFO] [stderr] | ^^^^^^^^^^^^ help: try this: `scr` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_asref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/conn/mod.rs:1091:72 [INFO] [stderr] | [INFO] [stderr] 1091 | let mut pass = self.opts.get_pass().map(Vec::from).unwrap_or(vec![]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| vec![])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/conn/mod.rs:1102:72 [INFO] [stderr] | [INFO] [stderr] 1102 | let mut pass = self.opts.get_pass().map(Vec::from).unwrap_or(vec![]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| vec![])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/conn/mod.rs:1163:28 [INFO] [stderr] | [INFO] [stderr] 1163 | if x.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!x.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/conn/mod.rs:1271:24 [INFO] [stderr] | [INFO] [stderr] 1271 | if let None = stmt.named_params() { [INFO] [stderr] | _________________- ^^^^ [INFO] [stderr] 1272 | | return Err(DriverError(NamedParamsForPositionalQuery)); [INFO] [stderr] 1273 | | } [INFO] [stderr] | |_________________- help: try this: `if stmt.named_params().is_none()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/conn/mod.rs:1424:9 [INFO] [stderr] | [INFO] [stderr] 1424 | let _ = self._start_transaction(consistent_snapshot, isolation_level, readonly)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/conn/mod.rs:1446:13 [INFO] [stderr] | [INFO] [stderr] 1446 | / for row in result { [INFO] [stderr] 1447 | | return row.map(|x| Some(from_row(x))); [INFO] [stderr] 1448 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/conn/mod.rs:1628:13 [INFO] [stderr] | [INFO] [stderr] 1628 | / for row in result { [INFO] [stderr] 1629 | | return row.map(|x| Some(from_row(x))); [INFO] [stderr] 1630 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [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/conn/mod.rs:1662:13 [INFO] [stderr] | [INFO] [stderr] 1662 | / match row { [INFO] [stderr] 1663 | | Ok(mut r) => match r.len() { [INFO] [stderr] 1664 | | 0 => (), [INFO] [stderr] 1665 | | _ => return r.take(0), [INFO] [stderr] 1666 | | }, [INFO] [stderr] 1667 | | _ => (), [INFO] [stderr] 1668 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 1662 | if let Ok(mut r) = row { match r.len() { [INFO] [stderr] 1663 | 0 => (), [INFO] [stderr] 1664 | _ => return r.take(0), [INFO] [stderr] 1665 | } } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/conn/mod.rs:1673:37 [INFO] [stderr] | [INFO] [stderr] 1673 | fn next_bin(&mut self, columns: &Vec) -> MyResult>> { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[Column]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/conn/mod.rs:1819:5 [INFO] [stderr] | [INFO] [stderr] 1819 | ViaStmt(Stmt<'a>), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] | [INFO] [stderr] 1819 | ViaStmt(Box>), [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/conn/mod.rs:1825:5 [INFO] [stderr] | [INFO] [stderr] 1825 | / fn deref<'c>(&'c self) -> &'c Conn { [INFO] [stderr] 1826 | | match *self { [INFO] [stderr] 1827 | | ResultConnRef::ViaConnRef(ref conn_ref) => conn_ref, [INFO] [stderr] 1828 | | ResultConnRef::ViaStmt(ref stmt) => stmt.conn.deref(), [INFO] [stderr] 1829 | | } [INFO] [stderr] 1830 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/conn/mod.rs:1834:5 [INFO] [stderr] | [INFO] [stderr] 1834 | / fn deref_mut<'c>(&'c mut self) -> &'c mut Conn { [INFO] [stderr] 1835 | | match *self { [INFO] [stderr] 1836 | | ResultConnRef::ViaConnRef(ref mut conn_ref) => conn_ref, [INFO] [stderr] 1837 | | ResultConnRef::ViaStmt(ref mut stmt) => stmt.conn.deref_mut(), [INFO] [stderr] 1838 | | } [INFO] [stderr] 1839 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/conn/mod.rs:1940:51 [INFO] [stderr] | [INFO] [stderr] 1940 | self.conn.info.as_ref().map(Clone::clone).unwrap_or(vec![]) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| vec![])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/error.rs:68:5 [INFO] [stderr] | [INFO] [stderr] 68 | FromRowError(Row), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] | [INFO] [stderr] 68 | FromRowError(Box), [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/error.rs:74:9 [INFO] [stderr] | [INFO] [stderr] 74 | / match self { [INFO] [stderr] 75 | | &Error::IoError(_) | &Error::DriverError(_) => true, [INFO] [stderr] 76 | | #[cfg(all(feature = "ssl", any(unix, target_os = "macos")))] [INFO] [stderr] 77 | | &Error::SslError(_) => true, [INFO] [stderr] ... | [INFO] [stderr] 81 | | | &Error::FromRowError(_) => false, [INFO] [stderr] 82 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 74 | match *self { [INFO] [stderr] 75 | Error::IoError(_) | Error::DriverError(_) => true, [INFO] [stderr] 76 | #[cfg(all(feature = "ssl", any(unix, target_os = "macos")))] [INFO] [stderr] 77 | &Error::SslError(_) => true, [INFO] [stderr] 78 | Error::MySqlError(_) [INFO] [stderr] 79 | | Error::UrlError(_) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/io/mod.rs:62:27 [INFO] [stderr] | [INFO] [stderr] 62 | last_was_max: payload.len() == 0, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `payload.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/io/mod.rs:106:28 [INFO] [stderr] | [INFO] [stderr] 106 | x => return Ok(x as u64), [INFO] [stderr] | ^^^^^^^^ help: try: `u64::from(x)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `for` loop [INFO] [stderr] --> src/io/mod.rs:133:29 [INFO] [stderr] | [INFO] [stderr] 133 | while let Some(c) = chars.next() { [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `for c in chars { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_on_iterator)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i64 may become silently lossy if types change [INFO] [stderr] --> src/io/mod.rs:165:28 [INFO] [stderr] | [INFO] [stderr] 165 | Ok(Int(self.read_u8()? as i64)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(self.read_u8()?)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i8 to i64 may become silently lossy if types change [INFO] [stderr] --> src/io/mod.rs:167:28 [INFO] [stderr] | [INFO] [stderr] 167 | Ok(Int(self.read_i8()? as i64)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(self.read_i8()?)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i64 may become silently lossy if types change [INFO] [stderr] --> src/io/mod.rs:172:28 [INFO] [stderr] | [INFO] [stderr] 172 | Ok(Int(self.read_u16::()? as i64)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(self.read_u16::()?)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i16 to i64 may become silently lossy if types change [INFO] [stderr] --> src/io/mod.rs:174:28 [INFO] [stderr] | [INFO] [stderr] 174 | Ok(Int(self.read_i16::()? as i64)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(self.read_i16::()?)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/io/mod.rs:179:28 [INFO] [stderr] | [INFO] [stderr] 179 | Ok(Int(self.read_u32::()? as i64)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(self.read_u32::()?)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/io/mod.rs:181:28 [INFO] [stderr] | [INFO] [stderr] 181 | Ok(Int(self.read_i32::()? as i64)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(self.read_i32::()?)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/io/mod.rs:191:54 [INFO] [stderr] | [INFO] [stderr] 191 | ColumnType::MYSQL_TYPE_FLOAT => Ok(Float(self.read_f32::()? as f64)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.read_f32::()?)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: slow zero-filling initialization [INFO] [stderr] --> src/io/mod.rs:416:17 [INFO] [stderr] | [INFO] [stderr] 415 | let mut intermediate_buf = Vec::with_capacity(compressed_len); [INFO] [stderr] | ---------------------------------- help: consider replace allocation with: `vec![0; compressed_len]` [INFO] [stderr] 416 | intermediate_buf.resize(compressed_len, 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::slow_vector_initialization)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#slow_vector_initialization [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/io/mod.rs:580:28 [INFO] [stderr] | [INFO] [stderr] 580 | let addr = format!("{}", socket); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `socket.to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (8/7) [INFO] [stderr] --> src/io/mod.rs:616:5 [INFO] [stderr] | [INFO] [stderr] 616 | / pub fn connect_tcp( [INFO] [stderr] 617 | | ip_or_hostname: &str, [INFO] [stderr] 618 | | port: u16, [INFO] [stderr] 619 | | read_timeout: Option, [INFO] [stderr] ... | [INFO] [stderr] 645 | | }) [INFO] [stderr] 646 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/io/mod.rs:649:9 [INFO] [stderr] | [INFO] [stderr] 649 | / match self { [INFO] [stderr] 650 | | &Stream::TcpStream(Some(TcpStream::Insecure(_))) => true, [INFO] [stderr] 651 | | _ => false, [INFO] [stderr] 652 | | } [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] 649 | match *self { [INFO] [stderr] 650 | Stream::TcpStream(Some(TcpStream::Insecure(_))) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/io/mod.rs:826:9 [INFO] [stderr] | [INFO] [stderr] 826 | / if let &mut Stream::TcpStream(None) = self { [INFO] [stderr] 827 | | return; [INFO] [stderr] 828 | | } [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] 826 | if let Stream::TcpStream(None) = *self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] error: aborting due to 8 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `mysql`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/conn/opts.rs:145:20 [INFO] [stderr] | [INFO] [stderr] 145 | } else if self.ip_or_hostname.as_ref().unwrap() == "localhost" { [INFO] [stderr] | ____________________^ [INFO] [stderr] 146 | | true [INFO] [stderr] 147 | | } else { [INFO] [stderr] 148 | | false [INFO] [stderr] 149 | | } [INFO] [stderr] | |_____________^ help: you can reduce it to: `self.ip_or_hostname.as_ref().unwrap() == "localhost"` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/conn/pool.rs:125:40 [INFO] [stderr] | [INFO] [stderr] 125 | Duration::milliseconds(timeout_ms as i64), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `i64::from(timeout_ms)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/conn/pool.rs:126:42 [INFO] [stderr] | [INFO] [stderr] 126 | StdDuration::from_millis(timeout_ms as u64), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u64::from(timeout_ms)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/conn/pool.rs:288:13 [INFO] [stderr] | [INFO] [stderr] 288 | / for row in result { [INFO] [stderr] 289 | | return row.map(Some); [INFO] [stderr] 290 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::never_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/conn/pool.rs:403:13 [INFO] [stderr] | [INFO] [stderr] 403 | / for row in result { [INFO] [stderr] 404 | | return row.map(|x| Some(from_row(x))); [INFO] [stderr] 405 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/conn/pool.rs:432:13 [INFO] [stderr] | [INFO] [stderr] 432 | / for row in result { [INFO] [stderr] 433 | | return row.map(|x| Some(from_row(x))); [INFO] [stderr] 434 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] warning: defining a method called `as_mut` on this type; consider implementing the `std::convert::AsMut` trait or choosing a less ambiguous name [INFO] [stderr] --> src/conn/pool.rs:456:5 [INFO] [stderr] | [INFO] [stderr] 456 | / pub fn as_mut<'a>(&'a mut self) -> &'a mut Conn { [INFO] [stderr] 457 | | self.conn.as_mut().unwrap() [INFO] [stderr] 458 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::should_implement_trait)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/conn/pool.rs:456:5 [INFO] [stderr] | [INFO] [stderr] 456 | / pub fn as_mut<'a>(&'a mut self) -> &'a mut Conn { [INFO] [stderr] 457 | | self.conn.as_mut().unwrap() [INFO] [stderr] 458 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: defining a method called `as_ref` on this type; consider implementing the `std::convert::AsRef` trait or choosing a less ambiguous name [INFO] [stderr] --> src/conn/pool.rs:462:5 [INFO] [stderr] | [INFO] [stderr] 462 | / pub fn as_ref<'a>(&'a self) -> &'a Conn { [INFO] [stderr] 463 | | self.conn.as_ref().unwrap() [INFO] [stderr] 464 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/conn/pool.rs:462:5 [INFO] [stderr] | [INFO] [stderr] 462 | / pub fn as_ref<'a>(&'a self) -> &'a Conn { [INFO] [stderr] 463 | | self.conn.as_ref().unwrap() [INFO] [stderr] 464 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/conn/pool.rs:497:9 [INFO] [stderr] | [INFO] [stderr] 497 | / let _ = self [INFO] [stderr] 498 | | .as_mut() [INFO] [stderr] 499 | | ._start_transaction(consistent_snapshot, isolation_level, readonly)?; [INFO] [stderr] | |_________________________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_unit_value)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/conn/pool.rs:598:64 [INFO] [stderr] | [INFO] [stderr] 598 | let pwd: String = ::std::env::var("MYSQL_SERVER_PASS").unwrap_or(PASS.to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| PASS.to_string())` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/conn/pool.rs:658:54 [INFO] [stderr] | [INFO] [stderr] 658 | ::std::env::var("MYSQL_SERVER_PASS").unwrap_or(super::PASS.to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| super::PASS.to_string())` [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: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/conn/pool.rs:818:13 [INFO] [stderr] | [INFO] [stderr] 818 | / pool.prepare("CREATE TEMPORARY TABLE mysql.tbl(a INT)") [INFO] [stderr] 819 | | .ok() [INFO] [stderr] 820 | | .map(|mut stmt| { [INFO] [stderr] 821 | | assert!(stmt.execute(()).is_ok()); [INFO] [stderr] 822 | | }); [INFO] [stderr] | |__________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::option_map_unit_fn)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 818 | if let Some(mut stmt) = pool.prepare("CREATE TEMPORARY TABLE mysql.tbl(a INT)") [INFO] [stderr] 819 | .ok() { assert!(stmt.execute(()).is_ok()); } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/conn/pool.rs:830:13 [INFO] [stderr] | [INFO] [stderr] 830 | / pool.prepare("SELECT COUNT(a) FROM mysql.tbl") [INFO] [stderr] 831 | | .ok() [INFO] [stderr] 832 | | .map(|mut stmt| { [INFO] [stderr] 833 | | for x in stmt.execute(()).unwrap() { [INFO] [stderr] ... | [INFO] [stderr] 836 | | } [INFO] [stderr] 837 | | }); [INFO] [stderr] | |__________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 830 | if let Some(mut stmt) = pool.prepare("SELECT COUNT(a) FROM mysql.tbl") [INFO] [stderr] 831 | .ok() { ... } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/conn/pool.rs:845:13 [INFO] [stderr] | [INFO] [stderr] 845 | / pool.prepare("SELECT COUNT(a) FROM mysql.tbl") [INFO] [stderr] 846 | | .ok() [INFO] [stderr] 847 | | .map(|mut stmt| { [INFO] [stderr] 848 | | for x in stmt.execute(()).unwrap() { [INFO] [stderr] ... | [INFO] [stderr] 851 | | } [INFO] [stderr] 852 | | }); [INFO] [stderr] | |__________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 845 | if let Some(mut stmt) = pool.prepare("SELECT COUNT(a) FROM mysql.tbl") [INFO] [stderr] 846 | .ok() { ... } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/conn/pool.rs:860:13 [INFO] [stderr] | [INFO] [stderr] 860 | / pool.prepare("SELECT COUNT(a) FROM mysql.tbl") [INFO] [stderr] 861 | | .ok() [INFO] [stderr] 862 | | .map(|mut stmt| { [INFO] [stderr] 863 | | for x in stmt.execute(()).unwrap() { [INFO] [stderr] ... | [INFO] [stderr] 866 | | } [INFO] [stderr] 867 | | }); [INFO] [stderr] | |__________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 860 | if let Some(mut stmt) = pool.prepare("SELECT COUNT(a) FROM mysql.tbl") [INFO] [stderr] 861 | .ok() { ... } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: in an 'if' condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a 'let' [INFO] [stderr] --> src/conn/pool.rs:882:39 [INFO] [stderr] | [INFO] [stderr] 882 | .and_then(|mut t| { [INFO] [stderr] | _______________________________________^ [INFO] [stderr] 883 | | assert!(t.query("INSERT INTO mysql.tbl(a) VALUES(1)").is_ok()); [INFO] [stderr] 884 | | assert!(t.query("INSERT INTO mysql.tbl(a) VALUES(2)").is_ok()); [INFO] [stderr] 885 | | t.commit() [INFO] [stderr] 886 | | }) [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::block_in_if_condition_stmt)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#block_in_if_condition_stmt [INFO] [stderr] [INFO] [stderr] warning: in an 'if' condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a 'let' [INFO] [stderr] --> src/conn/pool.rs:895:39 [INFO] [stderr] | [INFO] [stderr] 895 | .and_then(|mut t| { [INFO] [stderr] | _______________________________________^ [INFO] [stderr] 896 | | assert!(t.query("INSERT INTO mysql.tbl(a) VALUES(1)").is_ok()); [INFO] [stderr] 897 | | assert!(t.query("INSERT INTO mysql.tbl(a) VALUES(2)").is_ok()); [INFO] [stderr] 898 | | t.rollback() [INFO] [stderr] 899 | | }) [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#block_in_if_condition_stmt [INFO] [stderr] [INFO] [stderr] warning: in an 'if' condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a 'let' [INFO] [stderr] --> src/conn/pool.rs:908:39 [INFO] [stderr] | [INFO] [stderr] 908 | .and_then(|mut t| { [INFO] [stderr] | _______________________________________^ [INFO] [stderr] 909 | | assert!(t.query("INSERT INTO mysql.tbl(a) VALUES(1)").is_ok()); [INFO] [stderr] 910 | | assert!(t.query("INSERT INTO mysql.tbl(a) VALUES(2)").is_ok()); [INFO] [stderr] 911 | | Ok(()) [INFO] [stderr] 912 | | }) [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#block_in_if_condition_stmt [INFO] [stderr] [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/conn/mod.rs:147:13 [INFO] [stderr] | [INFO] [stderr] 147 | / for row in result { [INFO] [stderr] 148 | | return row.map(|x| Some(from_row(x))); [INFO] [stderr] 149 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/conn/mod.rs:176:13 [INFO] [stderr] | [INFO] [stderr] 176 | / for row in result { [INFO] [stderr] 177 | | return row.map(|x| Some(from_row(x))); [INFO] [stderr] 178 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/conn/mod.rs:264:5 [INFO] [stderr] | [INFO] [stderr] 264 | ViaPooledConn(pool::PooledConn), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::large_enum_variant)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] | [INFO] [stderr] 264 | ViaPooledConn(Box), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/conn/mod.rs:270:5 [INFO] [stderr] | [INFO] [stderr] 270 | / fn deref<'c>(&'c self) -> &'c Conn { [INFO] [stderr] 271 | | match *self { [INFO] [stderr] 272 | | ConnRef::ViaConnRef(ref conn_ref) => conn_ref, [INFO] [stderr] 273 | | ConnRef::ViaPooledConn(ref conn) => conn.as_ref(), [INFO] [stderr] 274 | | } [INFO] [stderr] 275 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/conn/mod.rs:279:5 [INFO] [stderr] | [INFO] [stderr] 279 | / fn deref_mut<'c>(&'c mut self) -> &'c mut Conn { [INFO] [stderr] 280 | | match *self { [INFO] [stderr] 281 | | ConnRef::ViaConnRef(ref mut conn_ref) => conn_ref, [INFO] [stderr] 282 | | ConnRef::ViaPooledConn(ref mut conn) => conn.as_mut(), [INFO] [stderr] 283 | | } [INFO] [stderr] 284 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/conn/mod.rs:417:13 [INFO] [stderr] | [INFO] [stderr] 417 | / for row in result { [INFO] [stderr] 418 | | return row.map(|x| Some(from_row(x))); [INFO] [stderr] 419 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/conn/mod.rs:524:5 [INFO] [stderr] | [INFO] [stderr] 524 | Arc FnMut(&'a [u8], &'a mut LocalInfile) -> io::Result<()> + Send>>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stderr] --> src/conn/mod.rs:563:16 [INFO] [stderr] | [INFO] [stderr] 563 | if let Ok(_) = result { [INFO] [stderr] | _________- ^^^^^ [INFO] [stderr] 564 | | if self.buffer.position() as usize >= self.buffer.get_ref().len() { [INFO] [stderr] 565 | | self.flush()?; [INFO] [stderr] 566 | | } [INFO] [stderr] 567 | | } [INFO] [stderr] | |_________- help: try this: `if result.is_ok()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/conn/mod.rs:694:24 [INFO] [stderr] | [INFO] [stderr] 694 | if socket.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!socket.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: using `clone` on a `Copy` type [INFO] [stderr] --> src/conn/mod.rs:806:34 [INFO] [stderr] | [INFO] [stderr] 806 | let tcp_keepalive_time = self.opts.get_tcp_keepalive_time_ms().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.opts.get_tcp_keepalive_time_ms()` [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: length comparison to zero [INFO] [stderr] --> src/conn/mod.rs:973:16 [INFO] [stderr] | [INFO] [stderr] 973 | if db_name.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!db_name.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: this call to `as_ref` does nothing [INFO] [stderr] --> src/conn/mod.rs:1042:34 [INFO] [stderr] | [INFO] [stderr] 1042 | writer.write_all(scr.as_ref()).expect("should not fail"); [INFO] [stderr] | ^^^^^^^^^^^^ help: try this: `scr` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_asref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/conn/mod.rs:1091:72 [INFO] [stderr] | [INFO] [stderr] 1091 | let mut pass = self.opts.get_pass().map(Vec::from).unwrap_or(vec![]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| vec![])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/conn/mod.rs:1102:72 [INFO] [stderr] | [INFO] [stderr] 1102 | let mut pass = self.opts.get_pass().map(Vec::from).unwrap_or(vec![]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| vec![])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/conn/mod.rs:1163:28 [INFO] [stderr] | [INFO] [stderr] 1163 | if x.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!x.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/conn/mod.rs:1271:24 [INFO] [stderr] | [INFO] [stderr] 1271 | if let None = stmt.named_params() { [INFO] [stderr] | _________________- ^^^^ [INFO] [stderr] 1272 | | return Err(DriverError(NamedParamsForPositionalQuery)); [INFO] [stderr] 1273 | | } [INFO] [stderr] | |_________________- help: try this: `if stmt.named_params().is_none()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/conn/mod.rs:1424:9 [INFO] [stderr] | [INFO] [stderr] 1424 | let _ = self._start_transaction(consistent_snapshot, isolation_level, readonly)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/conn/mod.rs:1446:13 [INFO] [stderr] | [INFO] [stderr] 1446 | / for row in result { [INFO] [stderr] 1447 | | return row.map(|x| Some(from_row(x))); [INFO] [stderr] 1448 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/conn/mod.rs:1628:13 [INFO] [stderr] | [INFO] [stderr] 1628 | / for row in result { [INFO] [stderr] 1629 | | return row.map(|x| Some(from_row(x))); [INFO] [stderr] 1630 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [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/conn/mod.rs:1662:13 [INFO] [stderr] | [INFO] [stderr] 1662 | / match row { [INFO] [stderr] 1663 | | Ok(mut r) => match r.len() { [INFO] [stderr] 1664 | | 0 => (), [INFO] [stderr] 1665 | | _ => return r.take(0), [INFO] [stderr] 1666 | | }, [INFO] [stderr] 1667 | | _ => (), [INFO] [stderr] 1668 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 1662 | if let Ok(mut r) = row { match r.len() { [INFO] [stderr] 1663 | 0 => (), [INFO] [stderr] 1664 | _ => return r.take(0), [INFO] [stderr] 1665 | } } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/conn/mod.rs:1673:37 [INFO] [stderr] | [INFO] [stderr] 1673 | fn next_bin(&mut self, columns: &Vec) -> MyResult>> { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[Column]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/conn/mod.rs:1819:5 [INFO] [stderr] | [INFO] [stderr] 1819 | ViaStmt(Stmt<'a>), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] | [INFO] [stderr] 1819 | ViaStmt(Box>), [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/conn/mod.rs:1825:5 [INFO] [stderr] | [INFO] [stderr] 1825 | / fn deref<'c>(&'c self) -> &'c Conn { [INFO] [stderr] 1826 | | match *self { [INFO] [stderr] 1827 | | ResultConnRef::ViaConnRef(ref conn_ref) => conn_ref, [INFO] [stderr] 1828 | | ResultConnRef::ViaStmt(ref stmt) => stmt.conn.deref(), [INFO] [stderr] 1829 | | } [INFO] [stderr] 1830 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/conn/mod.rs:1834:5 [INFO] [stderr] | [INFO] [stderr] 1834 | / fn deref_mut<'c>(&'c mut self) -> &'c mut Conn { [INFO] [stderr] 1835 | | match *self { [INFO] [stderr] 1836 | | ResultConnRef::ViaConnRef(ref mut conn_ref) => conn_ref, [INFO] [stderr] 1837 | | ResultConnRef::ViaStmt(ref mut stmt) => stmt.conn.deref_mut(), [INFO] [stderr] 1838 | | } [INFO] [stderr] 1839 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/conn/mod.rs:1940:51 [INFO] [stderr] | [INFO] [stderr] 1940 | self.conn.info.as_ref().map(Clone::clone).unwrap_or(vec![]) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| vec![])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/conn/mod.rs:2100:57 [INFO] [stderr] | [INFO] [stderr] 2100 | let pwd: String = env::var("MYSQL_SERVER_PASS").unwrap_or(PASS.to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| PASS.to_string())` [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: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/conn/mod.rs:2290:13 [INFO] [stderr] | [INFO] [stderr] 2290 | / let _ = [INFO] [stderr] 2291 | | conn.prepare( [INFO] [stderr] 2292 | | "INSERT INTO mysql.tbl(a, b, c, d, e)\ [INFO] [stderr] 2293 | | VALUES (?, ?, ?, ?, ?)", [INFO] [stderr] ... | [INFO] [stderr] 2320 | | }) [INFO] [stderr] 2321 | | .unwrap(); [INFO] [stderr] | |______________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/conn/mod.rs:2322:13 [INFO] [stderr] | [INFO] [stderr] 2322 | / let _ = conn [INFO] [stderr] 2323 | | .prepare("SELECT * from mysql.tbl") [INFO] [stderr] 2324 | | .and_then(|mut stmt| { [INFO] [stderr] 2325 | | for (i, row) in stmt.execute(()).unwrap().enumerate() { [INFO] [stderr] ... | [INFO] [stderr] 2344 | | }) [INFO] [stderr] 2345 | | .unwrap(); [INFO] [stderr] | |__________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/conn/mod.rs:2332:29 [INFO] [stderr] | [INFO] [stderr] 2332 | assert_eq!(row.take::(4).unwrap(), 123.123f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/conn/mod.rs:2332:29 [INFO] [stderr] | [INFO] [stderr] 2332 | assert_eq!(row.take::(4).unwrap(), 123.123f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/conn/mod.rs:2338:29 [INFO] [stderr] | [INFO] [stderr] 2338 | assert_eq!(row.take::(4).unwrap(), 321.321f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/conn/mod.rs:2338:29 [INFO] [stderr] | [INFO] [stderr] 2338 | assert_eq!(row.take::(4).unwrap(), 321.321f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/conn/mod.rs:2351:13 [INFO] [stderr] | [INFO] [stderr] 2351 | assert_eq!(row.take::(2).unwrap(), 1.1f32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/conn/mod.rs:2351:13 [INFO] [stderr] | [INFO] [stderr] 2351 | assert_eq!(row.take::(2).unwrap(), 1.1f32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/conn/mod.rs:2369:13 [INFO] [stderr] | [INFO] [stderr] 2369 | / let _ = conn [INFO] [stderr] 2370 | | .start_transaction(false, None, None) [INFO] [stderr] 2371 | | .and_then(|mut t| { [INFO] [stderr] 2372 | | assert!(t.query("INSERT INTO mysql.tbl(a) VALUES(1)").is_ok()); [INFO] [stderr] ... | [INFO] [stderr] 2376 | | }) [INFO] [stderr] 2377 | | .unwrap(); [INFO] [stderr] | |__________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/conn/mod.rs:2387:13 [INFO] [stderr] | [INFO] [stderr] 2387 | / let _ = conn [INFO] [stderr] 2388 | | .start_transaction(false, None, None) [INFO] [stderr] 2389 | | .and_then(|mut t| { [INFO] [stderr] 2390 | | assert!(t.query("INSERT INTO tbl(a) VALUES(1)").is_err()); [INFO] [stderr] ... | [INFO] [stderr] 2393 | | }) [INFO] [stderr] 2394 | | .unwrap(); [INFO] [stderr] | |__________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/conn/mod.rs:2404:13 [INFO] [stderr] | [INFO] [stderr] 2404 | / let _ = conn [INFO] [stderr] 2405 | | .start_transaction(false, None, None) [INFO] [stderr] 2406 | | .and_then(|mut t| { [INFO] [stderr] 2407 | | assert!(t.query("INSERT INTO mysql.tbl(a) VALUES(1)").is_ok()); [INFO] [stderr] ... | [INFO] [stderr] 2411 | | }) [INFO] [stderr] 2412 | | .unwrap(); [INFO] [stderr] | |__________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/conn/mod.rs:2422:13 [INFO] [stderr] | [INFO] [stderr] 2422 | / let _ = conn [INFO] [stderr] 2423 | | .start_transaction(false, None, None) [INFO] [stderr] 2424 | | .and_then(|mut t| { [INFO] [stderr] 2425 | | let _ = t [INFO] [stderr] ... | [INFO] [stderr] 2435 | | }) [INFO] [stderr] 2436 | | .unwrap(); [INFO] [stderr] | |__________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/conn/mod.rs:2425:21 [INFO] [stderr] | [INFO] [stderr] 2425 | / let _ = t [INFO] [stderr] 2426 | | .prepare("INSERT INTO mysql.tbl(a) VALUES(?)") [INFO] [stderr] 2427 | | .and_then(|mut stmt| { [INFO] [stderr] 2428 | | assert!(stmt.execute((3,)).is_ok()); [INFO] [stderr] ... | [INFO] [stderr] 2431 | | }) [INFO] [stderr] 2432 | | .unwrap(); [INFO] [stderr] | |__________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/conn/mod.rs:2446:13 [INFO] [stderr] | [INFO] [stderr] 2446 | / let _ = conn [INFO] [stderr] 2447 | | .start_transaction(false, None, None) [INFO] [stderr] 2448 | | .and_then(|mut t| { [INFO] [stderr] 2449 | | t.prep_exec("INSERT INTO mysql.tbl(a) VALUES(?)", (5,)) [INFO] [stderr] ... | [INFO] [stderr] 2454 | | }) [INFO] [stderr] 2455 | | .unwrap(); [INFO] [stderr] | |__________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/error.rs:68:5 [INFO] [stderr] | [INFO] [stderr] 68 | FromRowError(Row), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] | [INFO] [stderr] 68 | FromRowError(Box), [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/error.rs:74:9 [INFO] [stderr] | [INFO] [stderr] 74 | / match self { [INFO] [stderr] 75 | | &Error::IoError(_) | &Error::DriverError(_) => true, [INFO] [stderr] 76 | | #[cfg(all(feature = "ssl", any(unix, target_os = "macos")))] [INFO] [stderr] 77 | | &Error::SslError(_) => true, [INFO] [stderr] ... | [INFO] [stderr] 81 | | | &Error::FromRowError(_) => false, [INFO] [stderr] 82 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 74 | match *self { [INFO] [stderr] 75 | Error::IoError(_) | Error::DriverError(_) => true, [INFO] [stderr] 76 | #[cfg(all(feature = "ssl", any(unix, target_os = "macos")))] [INFO] [stderr] 77 | &Error::SslError(_) => true, [INFO] [stderr] 78 | Error::MySqlError(_) [INFO] [stderr] 79 | | Error::UrlError(_) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/io/mod.rs:62:27 [INFO] [stderr] | [INFO] [stderr] 62 | last_was_max: payload.len() == 0, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `payload.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/io/mod.rs:106:28 [INFO] [stderr] | [INFO] [stderr] 106 | x => return Ok(x as u64), [INFO] [stderr] | ^^^^^^^^ help: try: `u64::from(x)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `for` loop [INFO] [stderr] --> src/io/mod.rs:133:29 [INFO] [stderr] | [INFO] [stderr] 133 | while let Some(c) = chars.next() { [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `for c in chars { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_on_iterator)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i64 may become silently lossy if types change [INFO] [stderr] --> src/io/mod.rs:165:28 [INFO] [stderr] | [INFO] [stderr] 165 | Ok(Int(self.read_u8()? as i64)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(self.read_u8()?)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i8 to i64 may become silently lossy if types change [INFO] [stderr] --> src/io/mod.rs:167:28 [INFO] [stderr] | [INFO] [stderr] 167 | Ok(Int(self.read_i8()? as i64)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(self.read_i8()?)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i64 may become silently lossy if types change [INFO] [stderr] --> src/io/mod.rs:172:28 [INFO] [stderr] | [INFO] [stderr] 172 | Ok(Int(self.read_u16::()? as i64)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(self.read_u16::()?)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i16 to i64 may become silently lossy if types change [INFO] [stderr] --> src/io/mod.rs:174:28 [INFO] [stderr] | [INFO] [stderr] 174 | Ok(Int(self.read_i16::()? as i64)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(self.read_i16::()?)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/io/mod.rs:179:28 [INFO] [stderr] | [INFO] [stderr] 179 | Ok(Int(self.read_u32::()? as i64)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(self.read_u32::()?)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/io/mod.rs:181:28 [INFO] [stderr] | [INFO] [stderr] 181 | Ok(Int(self.read_i32::()? as i64)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(self.read_i32::()?)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/io/mod.rs:191:54 [INFO] [stderr] | [INFO] [stderr] 191 | ColumnType::MYSQL_TYPE_FLOAT => Ok(Float(self.read_f32::()? as f64)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.read_f32::()?)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: slow zero-filling initialization [INFO] [stderr] --> src/io/mod.rs:416:17 [INFO] [stderr] | [INFO] [stderr] 415 | let mut intermediate_buf = Vec::with_capacity(compressed_len); [INFO] [stderr] | ---------------------------------- help: consider replace allocation with: `vec![0; compressed_len]` [INFO] [stderr] 416 | intermediate_buf.resize(compressed_len, 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::slow_vector_initialization)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#slow_vector_initialization [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/io/mod.rs:580:28 [INFO] [stderr] | [INFO] [stderr] 580 | let addr = format!("{}", socket); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `socket.to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (8/7) [INFO] [stderr] --> src/io/mod.rs:616:5 [INFO] [stderr] | [INFO] [stderr] 616 | / pub fn connect_tcp( [INFO] [stderr] 617 | | ip_or_hostname: &str, [INFO] [stderr] 618 | | port: u16, [INFO] [stderr] 619 | | read_timeout: Option, [INFO] [stderr] ... | [INFO] [stderr] 645 | | }) [INFO] [stderr] 646 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/io/mod.rs:649:9 [INFO] [stderr] | [INFO] [stderr] 649 | / match self { [INFO] [stderr] 650 | | &Stream::TcpStream(Some(TcpStream::Insecure(_))) => true, [INFO] [stderr] 651 | | _ => false, [INFO] [stderr] 652 | | } [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] 649 | match *self { [INFO] [stderr] 650 | Stream::TcpStream(Some(TcpStream::Insecure(_))) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/io/mod.rs:826:9 [INFO] [stderr] | [INFO] [stderr] 826 | / if let &mut Stream::TcpStream(None) = self { [INFO] [stderr] 827 | | return; [INFO] [stderr] 828 | | } [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] 826 | if let Stream::TcpStream(None) = *self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of a blacklisted/placeholder name `foo` [INFO] [stderr] --> src/lib.rs:304:9 [INFO] [stderr] | [INFO] [stderr] 304 | let foo = 42; [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::blacklisted_name)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#blacklisted_name [INFO] [stderr] [INFO] [stderr] warning: use of a blacklisted/placeholder name `bar` [INFO] [stderr] --> src/lib.rs:305:9 [INFO] [stderr] | [INFO] [stderr] 305 | let bar = "bar"; [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#blacklisted_name [INFO] [stderr] [INFO] [stderr] error: aborting due to 11 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `mysql`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "2cb7a5fecdc002b9dd891423f3ebfc44ebf71ae3253a05af5f81db3bdb512d03"` [INFO] running `"docker" "rm" "-f" "2cb7a5fecdc002b9dd891423f3ebfc44ebf71ae3253a05af5f81db3bdb512d03"` [INFO] [stdout] 2cb7a5fecdc002b9dd891423f3ebfc44ebf71ae3253a05af5f81db3bdb512d03