[INFO] updating cached repository mozilla-services/syncstorage-rs [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/mozilla-services/syncstorage-rs [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/mozilla-services/syncstorage-rs" "work/ex/clippy-test-run/sources/stable/gh/mozilla-services/syncstorage-rs"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/mozilla-services/syncstorage-rs'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/mozilla-services/syncstorage-rs" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/mozilla-services/syncstorage-rs"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/mozilla-services/syncstorage-rs'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] ca7b6dc9b3a8ec8d9544915d99bdda2571d3bd46 [INFO] sha for GitHub repo mozilla-services/syncstorage-rs: ca7b6dc9b3a8ec8d9544915d99bdda2571d3bd46 [INFO] validating manifest of mozilla-services/syncstorage-rs 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 mozilla-services/syncstorage-rs 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 mozilla-services/syncstorage-rs [INFO] finished frobbing mozilla-services/syncstorage-rs [INFO] frobbed toml for mozilla-services/syncstorage-rs written to work/ex/clippy-test-run/sources/stable/gh/mozilla-services/syncstorage-rs/Cargo.toml [INFO] started frobbing mozilla-services/syncstorage-rs [INFO] finished frobbing mozilla-services/syncstorage-rs [INFO] frobbed toml for mozilla-services/syncstorage-rs written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/mozilla-services/syncstorage-rs/Cargo.toml [INFO] crate mozilla-services/syncstorage-rs has a lockfile. skipping [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 mozilla-services/syncstorage-rs against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-4/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/mozilla-services/syncstorage-rs:/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] 3d425e5411ab71d5e7d7cbb1821ede6be9d7575ead0728567d272d377bc3f462 [INFO] running `"docker" "start" "-a" "3d425e5411ab71d5e7d7cbb1821ede6be9d7575ead0728567d272d377bc3f462"` [INFO] [stderr] Compiling matches v0.1.7 [INFO] [stderr] Compiling encoding_index_tests v0.1.4 [INFO] [stderr] Compiling if_chain v0.1.3 [INFO] [stderr] Checking httpdate v0.3.2 [INFO] [stderr] Compiling actix_derive v0.2.0 [INFO] [stderr] Compiling actix-web v0.7.7 [INFO] [stderr] Checking uname v0.1.1 [INFO] [stderr] Checking log v0.4.6 [INFO] [stderr] Checking socket2 v0.3.7 [INFO] [stderr] Compiling ring v0.13.2 [INFO] [stderr] Compiling brotli-sys v0.3.2 [INFO] [stderr] Compiling openssl-sys v0.9.39 [INFO] [stderr] Compiling mysqlclient-sys v0.2.3 [INFO] [stderr] Checking yaml-rust v0.4.0 [INFO] [stderr] Checking cadence v0.15.1 [INFO] [stderr] Checking bytes v0.4.8 [INFO] [stderr] Compiling encoding-index-simpchinese v1.20141219.5 [INFO] [stderr] Compiling encoding-index-japanese v1.20141219.5 [INFO] [stderr] Compiling encoding-index-korean v1.20141219.5 [INFO] [stderr] Compiling encoding-index-tradchinese v1.20141219.5 [INFO] [stderr] Compiling encoding-index-singlebyte v1.20141219.5 [INFO] [stderr] Checking tokio-current-thread v0.1.1 [INFO] [stderr] Compiling unicode-bidi v0.3.4 [INFO] [stderr] Compiling rand v0.3.22 [INFO] [stderr] Compiling aho-corasick v0.6.8 [INFO] [stderr] Checking smallvec v0.6.3 [INFO] [stderr] Checking encoding_rs v0.8.10 [INFO] [stderr] Checking mio v0.6.15 [INFO] [stderr] Checking log v0.3.9 [INFO] [stderr] Checking want v0.0.6 [INFO] [stderr] Checking want v0.0.4 [INFO] [stderr] Checking r2d2 v0.8.2 [INFO] [stderr] Checking tokio-io v0.1.7 [INFO] [stderr] Checking http v0.1.13 [INFO] [stderr] Compiling syn v0.14.4 [INFO] [stderr] Compiling syn v0.15.7 [INFO] [stderr] Checking url v1.7.1 [INFO] [stderr] Checking num-complex v0.2.0 [INFO] [stderr] Compiling im v12.2.0 [INFO] [stderr] Compiling sentry v0.12.0 [INFO] [stderr] Checking uuid v0.7.1 [INFO] [stderr] Checking uuid v0.6.5 [INFO] [stderr] Checking toml v0.4.6 [INFO] [stderr] Checking serde_json v1.0.27 [INFO] [stderr] Compiling encoding v0.2.33 [INFO] [stderr] Checking parking_lot_core v0.2.14 [INFO] [stderr] Checking crossbeam-epoch v0.5.1 [INFO] [stderr] Compiling thread_local v0.3.6 [INFO] [stderr] Compiling phf_shared v0.7.22 [INFO] [stderr] Compiling idna v0.1.5 [INFO] [stderr] Checking backtrace v0.3.9 [INFO] [stderr] Checking flate2 v1.0.2 [INFO] [stderr] Checking backtrace v0.2.3 [INFO] [stderr] Compiling openssl v0.9.24 [INFO] [stderr] Compiling openssl v0.10.15 [INFO] [stderr] Compiling native-tls v0.2.2 [INFO] [stderr] Compiling diesel_derives v1.3.0 [INFO] [stderr] Checking mio-uds v0.6.6 [INFO] [stderr] Checking tokio-reactor v0.1.2 [INFO] [stderr] Checking tokio-codec v0.1.0 [INFO] [stderr] Checking chrono v0.4.6 [INFO] [stderr] Checking num-bigint v0.2.0 [INFO] [stderr] Checking num-iter v0.1.37 [INFO] [stderr] Checking serde_urlencoded v0.5.3 [INFO] [stderr] Checking url_serde v0.2.0 [INFO] [stderr] Checking libflate v0.1.18 [INFO] [stderr] Checking h2 v0.1.10 [INFO] [stderr] Compiling synstructure v0.9.0 [INFO] [stderr] Compiling serde_derive v1.0.80 [INFO] [stderr] Compiling phf_generator v0.7.22 [INFO] [stderr] Checking phf v0.7.22 [INFO] [stderr] Checking parking_lot v0.5.5 [INFO] [stderr] Checking parking_lot v0.6.3 [INFO] [stderr] Checking crossbeam-deque v0.6.1 [INFO] [stderr] Compiling regex v1.0.5 [INFO] [stderr] Checking error-chain v0.11.0 [INFO] [stderr] Checking error-chain v0.1.12 [INFO] [stderr] Checking hmac v0.6.3 [INFO] [stderr] Checking tokio-udp v0.1.1 [INFO] [stderr] Checking tokio-tcp v0.1.0 [INFO] [stderr] Checking tokio-signal v0.2.1 [INFO] [stderr] Checking cookie v0.11.0 [INFO] [stderr] Checking brotli2 v0.3.2 [INFO] [stderr] Checking debugid v0.3.1 [INFO] [stderr] Checking env_logger v0.5.13 [INFO] [stderr] Checking num-rational v0.2.1 [INFO] [stderr] Compiling phf_codegen v0.7.22 [INFO] [stderr] Checking tokio-threadpool v0.1.7 [INFO] [stderr] Checking crossbeam-channel v0.2.3 [INFO] [stderr] Checking hkdf v0.6.0 [INFO] [stderr] Checking hawk v1.0.4 [INFO] [stderr] Compiling failure_derive v0.1.2 [INFO] [stderr] Checking diesel v1.3.2 [INFO] [stderr] Checking trust-dns-proto v0.4.0 [INFO] [stderr] Checking native-tls v0.1.5 [INFO] [stderr] Compiling mime_guess v2.0.0-alpha.6 [INFO] [stderr] Checking num v0.2.0 [INFO] [stderr] Checking tokio-fs v0.1.2 [INFO] [stderr] Checking config v0.9.0 [INFO] [stderr] Compiling validator v0.8.0 [INFO] [stderr] Checking docopt v1.0.0 [INFO] [stderr] Checking failure v0.1.2 [INFO] [stderr] Checking tokio v0.1.7 [INFO] [stderr] Checking sentry-types v0.8.1 [INFO] [stderr] Compiling validator_derive v0.8.0 [INFO] [stderr] Checking tokio-core v0.1.17 [INFO] [stderr] Checking hyper v0.12.13 [INFO] [stderr] Checking trust-dns-resolver v0.9.0 [INFO] [stderr] Checking tokio-proto v0.1.1 [INFO] [stderr] Checking tokio-tls v0.1.4 [INFO] [stderr] Checking actix v0.7.1 [INFO] [stderr] Checking hyper-tls v0.3.1 [INFO] [stderr] Checking hyper v0.11.27 [INFO] [stderr] Checking reqwest v0.9.4 [INFO] [stderr] Checking hyper-tls v0.1.3 [INFO] [stderr] Checking reqwest v0.8.6 [INFO] [stderr] Checking mozsvc-common v0.1.0 [INFO] [stderr] Compiling migrations_internals v1.3.0 [INFO] [stderr] Checking diesel_logger v0.1.0 [INFO] [stderr] Compiling migrations_macros v1.3.0 [INFO] [stderr] Checking diesel_migrations v1.3.0 [INFO] [stderr] Checking syncstorage v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/server/mod.rs:96:17 [INFO] [stderr] | [INFO] [stderr] 96 | port: port, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `port` [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/server/mod.rs:96:17 [INFO] [stderr] | [INFO] [stderr] 96 | port: port, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `port` [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: long literal lacking separators [INFO] [stderr] --> src/db/mysql/models.rs:41:34 [INFO] [stderr] | [INFO] [stderr] 41 | pub const DEFAULT_BSO_TTL: u32 = 2100000000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `2_100_000_000` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/web/auth.rs:150:16 [INFO] [stderr] | [INFO] [stderr] 150 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 151 | | if ci.scheme() == "https" { [INFO] [stderr] 152 | | 443 [INFO] [stderr] 153 | | } else { [INFO] [stderr] 154 | | 80 [INFO] [stderr] 155 | | } [INFO] [stderr] 156 | | }; [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] 150 | } else if ci.scheme() == "https" { [INFO] [stderr] 151 | 443 [INFO] [stderr] 152 | } else { [INFO] [stderr] 153 | 80 [INFO] [stderr] 154 | }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/web/extractors.rs:27:26 [INFO] [stderr] | [INFO] [stderr] 27 | const BSO_MAX_TTL: u32 = 31536000; [INFO] [stderr] | ^^^^^^^^ help: consider: `31_536_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/web/extractors.rs:28:38 [INFO] [stderr] | [INFO] [stderr] 28 | const BSO_MAX_SORTINDEX_VALUE: i32 = 999999999; [INFO] [stderr] | ^^^^^^^^^ help: consider: `999_999_999` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/web/extractors.rs:29:39 [INFO] [stderr] | [INFO] [stderr] 29 | const BSO_MIN_SORTINDEX_VALUE: i32 = -999999999; [INFO] [stderr] | ^^^^^^^^^ help: consider: `999_999_999` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/web/extractors.rs:170:20 [INFO] [stderr] | [INFO] [stderr] 170 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 171 | | if let Ok(json_vals) = serde_json::from_str::>(&body) { [INFO] [stderr] 172 | | json_vals [INFO] [stderr] 173 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 176 | | } [INFO] [stderr] 177 | | }; [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] 170 | } else if let Ok(json_vals) = serde_json::from_str::>(&body) { [INFO] [stderr] 171 | json_vals [INFO] [stderr] 172 | } else { [INFO] [stderr] 173 | // Per Python version, BSO's must json deserialize [INFO] [stderr] 174 | return future::err(make_error()); [INFO] [stderr] 175 | }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/main.rs:53:15 [INFO] [stderr] | [INFO] [stderr] 53 | const USAGE: &'static str = " [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/db/mysql/batch.rs:252:51 [INFO] [stderr] | [INFO] [stderr] 252 | postbso("b1", Some("payload 1"), Some(1000000000), None), [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_000_000_000` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/db/mysql/batch.rs:269:51 [INFO] [stderr] | [INFO] [stderr] 269 | postbso("b1", Some("payload 1"), Some(1000000000), None), [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_000_000_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/db/mysql/batch.rs:296:40 [INFO] [stderr] | [INFO] [stderr] 296 | assert_eq!(bso.sortindex, Some(1000000000)); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_000_000_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/db/mysql/models.rs:41:34 [INFO] [stderr] | [INFO] [stderr] 41 | pub const DEFAULT_BSO_TTL: u32 = 2100000000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `2_100_000_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/db/mysql/test.rs:22:32 [INFO] [stderr] | [INFO] [stderr] 22 | pub const MAX_TIMESTAMP: u64 = 4070937600000; [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider: `4_070_937_600_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/db/mysql/test.rs:535:19 [INFO] [stderr] | [INFO] [stderr] 535 | db.with_delta(100000, |db| { [INFO] [stderr] | ^^^^^^ help: consider: `100_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/db/mysql/test.rs:725:51 [INFO] [stderr] | [INFO] [stderr] 725 | postbso("b1", Some("payload 1"), Some(1000000000), None), [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_000_000_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/db/mysql/test.rs:749:61 [INFO] [stderr] | [INFO] [stderr] 749 | postbso("b0", Some("updated 0"), Some(11), Some(100000)), [INFO] [stderr] | ^^^^^^ help: consider: `100_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/server/test.rs:231:23 [INFO] [stderr] | [INFO] [stderr] 231 | ttl: Some(31536000), [INFO] [stderr] | ^^^^^^^^ help: consider: `31_536_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/server/test.rs:275:23 [INFO] [stderr] | [INFO] [stderr] 275 | ttl: Some(31536000), [INFO] [stderr] | ^^^^^^^^ help: consider: `31_536_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/server/test.rs:301:23 [INFO] [stderr] | [INFO] [stderr] 301 | ttl: Some(31536000), [INFO] [stderr] | ^^^^^^^^ help: consider: `31_536_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/server/test.rs:319:23 [INFO] [stderr] | [INFO] [stderr] 319 | ttl: Some(31536000), [INFO] [stderr] | ^^^^^^^^ help: consider: `31_536_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/web/auth.rs:117:54 [INFO] [stderr] | [INFO] [stderr] 117 | expires: Utc::now().timestamp() as f64 + 200000.0, [INFO] [stderr] | ^^^^^^^^ help: consider: `200_000.0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/web/auth.rs:150:16 [INFO] [stderr] | [INFO] [stderr] 150 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 151 | | if ci.scheme() == "https" { [INFO] [stderr] 152 | | 443 [INFO] [stderr] 153 | | } else { [INFO] [stderr] 154 | | 80 [INFO] [stderr] 155 | | } [INFO] [stderr] 156 | | }; [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] 150 | } else if ci.scheme() == "https" { [INFO] [stderr] 151 | 443 [INFO] [stderr] 152 | } else { [INFO] [stderr] 153 | 80 [INFO] [stderr] 154 | }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/web/auth.rs:224:29 [INFO] [stderr] | [INFO] [stderr] 224 | fixture.header.ts = 1536198978; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_536_198_978` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/web/auth.rs:359:29 [INFO] [stderr] | [INFO] [stderr] 359 | fixture.header.ts = 1536198978; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_536_198_978` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/web/auth.rs:464:21 [INFO] [stderr] | [INFO] [stderr] 464 | 1536198980, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_536_198_980` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/web/auth.rs:482:30 [INFO] [stderr] | [INFO] [stderr] 482 | expires: 1536199274.0, [INFO] [stderr] | ^^^^^^^^^^^^ help: consider: `1_536_199_274.0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/web/extractors.rs:27:26 [INFO] [stderr] | [INFO] [stderr] 27 | const BSO_MAX_TTL: u32 = 31536000; [INFO] [stderr] | ^^^^^^^^ help: consider: `31_536_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/web/extractors.rs:28:38 [INFO] [stderr] | [INFO] [stderr] 28 | const BSO_MAX_SORTINDEX_VALUE: i32 = 999999999; [INFO] [stderr] | ^^^^^^^^^ help: consider: `999_999_999` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/web/extractors.rs:29:39 [INFO] [stderr] | [INFO] [stderr] 29 | const BSO_MIN_SORTINDEX_VALUE: i32 = -999999999; [INFO] [stderr] | ^^^^^^^^^ help: consider: `999_999_999` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/web/extractors.rs:170:20 [INFO] [stderr] | [INFO] [stderr] 170 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 171 | | if let Ok(json_vals) = serde_json::from_str::>(&body) { [INFO] [stderr] 172 | | json_vals [INFO] [stderr] 173 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 176 | | } [INFO] [stderr] 177 | | }; [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] 170 | } else if let Ok(json_vals) = serde_json::from_str::>(&body) { [INFO] [stderr] 171 | json_vals [INFO] [stderr] 172 | } else { [INFO] [stderr] 173 | // Per Python version, BSO's must json deserialize [INFO] [stderr] 174 | return future::err(make_error()); [INFO] [stderr] 175 | }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/web/extractors.rs:1090:37 [INFO] [stderr] | [INFO] [stderr] 1090 | const INVALID_COLLECTION_NAME: &'static str = [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/web/extractors.rs:1092:30 [INFO] [stderr] | [INFO] [stderr] 1092 | const INVALID_BSO_NAME: &'static str = [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/web/extractors.rs:1325:45 [INFO] [stderr] | [INFO] [stderr] 1325 | "payload": "xxx", "sortindex": -9999999999 as i64, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `9_999_999_999` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/main.rs:53:15 [INFO] [stderr] | [INFO] [stderr] 53 | const USAGE: &'static str = " [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/error.rs:67:9 [INFO] [stderr] | [INFO] [stderr] 67 | / match self.kind() { [INFO] [stderr] 68 | | ApiErrorKind::Db(dbe) => match dbe.kind() { [INFO] [stderr] 69 | | DbErrorKind::CollectionNotFound => return true, [INFO] [stderr] 70 | | _ => (), [INFO] [stderr] 71 | | }, [INFO] [stderr] 72 | | _ => (), [INFO] [stderr] 73 | | } [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] 67 | if let ApiErrorKind::Db(dbe) = self.kind() { match dbe.kind() { [INFO] [stderr] 68 | DbErrorKind::CollectionNotFound => return true, [INFO] [stderr] 69 | _ => (), [INFO] [stderr] 70 | } } [INFO] [stderr] | [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/error.rs:68:38 [INFO] [stderr] | [INFO] [stderr] 68 | ApiErrorKind::Db(dbe) => match dbe.kind() { [INFO] [stderr] | ______________________________________^ [INFO] [stderr] 69 | | DbErrorKind::CollectionNotFound => return true, [INFO] [stderr] 70 | | _ => (), [INFO] [stderr] 71 | | }, [INFO] [stderr] | |_____________^ help: try this: `if let DbErrorKind::CollectionNotFound = dbe.kind() { return true }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/error.rs:78:9 [INFO] [stderr] | [INFO] [stderr] 78 | / match self.kind() { [INFO] [stderr] 79 | | ApiErrorKind::Db(dbe) => match dbe.kind() { [INFO] [stderr] 80 | | DbErrorKind::BsoNotFound => return true, [INFO] [stderr] 81 | | _ => (), [INFO] [stderr] 82 | | }, [INFO] [stderr] 83 | | _ => (), [INFO] [stderr] 84 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 78 | if let ApiErrorKind::Db(dbe) = self.kind() { match dbe.kind() { [INFO] [stderr] 79 | DbErrorKind::BsoNotFound => return true, [INFO] [stderr] 80 | _ => (), [INFO] [stderr] 81 | } } [INFO] [stderr] | [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/error.rs:79:38 [INFO] [stderr] | [INFO] [stderr] 79 | ApiErrorKind::Db(dbe) => match dbe.kind() { [INFO] [stderr] | ______________________________________^ [INFO] [stderr] 80 | | DbErrorKind::BsoNotFound => return true, [INFO] [stderr] 81 | | _ => (), [INFO] [stderr] 82 | | }, [INFO] [stderr] | |_____________^ help: try this: `if let DbErrorKind::BsoNotFound = dbe.kind() { return true }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/error.rs:89:9 [INFO] [stderr] | [INFO] [stderr] 89 | / match self.kind() { [INFO] [stderr] 90 | | ApiErrorKind::Db(dbe) => match dbe.kind() { [INFO] [stderr] 91 | | DbErrorKind::Conflict => return true, [INFO] [stderr] 92 | | _ => (), [INFO] [stderr] 93 | | }, [INFO] [stderr] 94 | | _ => (), [INFO] [stderr] 95 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 89 | if let ApiErrorKind::Db(dbe) = self.kind() { match dbe.kind() { [INFO] [stderr] 90 | DbErrorKind::Conflict => return true, [INFO] [stderr] 91 | _ => (), [INFO] [stderr] 92 | } } [INFO] [stderr] | [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/error.rs:90:38 [INFO] [stderr] | [INFO] [stderr] 90 | ApiErrorKind::Db(dbe) => match dbe.kind() { [INFO] [stderr] | ______________________________________^ [INFO] [stderr] 91 | | DbErrorKind::Conflict => return true, [INFO] [stderr] 92 | | _ => (), [INFO] [stderr] 93 | | }, [INFO] [stderr] | |_____________^ help: try this: `if let DbErrorKind::Conflict = dbe.kind() { return true }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/error.rs:106:45 [INFO] [stderr] | [INFO] [stderr] 106 | let name = name.clone().unwrap_or("".to_owned()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "".to_owned())` [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: you should consider deriving a `Default` implementation for `db::mock::MockDbPool` [INFO] [stderr] --> src/db/mock.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | / pub fn new() -> Self { [INFO] [stderr] 12 | | MockDbPool [INFO] [stderr] 13 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 8 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `db::mock::MockDb` [INFO] [stderr] --> src/db/mock.rs:26:5 [INFO] [stderr] | [INFO] [stderr] 26 | / pub fn new() -> Self { [INFO] [stderr] 27 | | MockDb [INFO] [stderr] 28 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 23 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/db/mysql/models.rs:146:16 [INFO] [stderr] | [INFO] [stderr] 146 | if let Some(_) = self [INFO] [stderr] | ^^^^^^^ [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] help: try this [INFO] [stderr] | [INFO] [stderr] 146 | if self [INFO] [stderr] 147 | .session [INFO] [stderr] 148 | .borrow() [INFO] [stderr] 149 | .coll_locks [INFO] [stderr] 150 | .get(&(user_id, collection_id)).is_some() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/db/mysql/models.rs:219:12 [INFO] [stderr] | [INFO] [stderr] 219 | Ok(self [INFO] [stderr] | ____________^ [INFO] [stderr] 220 | | .conn [INFO] [stderr] 221 | | .transaction_manager() [INFO] [stderr] 222 | | .begin_transaction(&self.conn)?) [INFO] [stderr] | |___________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unit_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 219 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/db/mysql/models.rs:226:12 [INFO] [stderr] | [INFO] [stderr] 226 | Ok(self [INFO] [stderr] | ____________^ [INFO] [stderr] 227 | | .conn [INFO] [stderr] 228 | | .transaction_manager() [INFO] [stderr] 229 | | .commit_transaction(&self.conn)?) [INFO] [stderr] | |____________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 226 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/db/mysql/models.rs:233:12 [INFO] [stderr] | [INFO] [stderr] 233 | Ok(self [INFO] [stderr] | ____________^ [INFO] [stderr] 234 | | .conn [INFO] [stderr] 235 | | .transaction_manager() [INFO] [stderr] 236 | | .rollback_transaction(&self.conn)?) [INFO] [stderr] | |______________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 233 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/db/mysql/models.rs:364:53 [INFO] [stderr] | [INFO] [stderr] 364 | bso::expiry.eq(timestamp + (ttl as i64 * 1000)), [INFO] [stderr] | ^^^^^^^^^^ help: try: `i64::from(ttl)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/db/mysql/models.rs:416:39 [INFO] [stderr] | [INFO] [stderr] 416 | let limit = limit.map(|limit| limit as i64).unwrap_or(-1); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `i64::from(limit)` [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: use of `ok_or` followed by a function call [INFO] [stderr] --> src/db/mysql/models.rs:562:14 [INFO] [stderr] | [INFO] [stderr] 562 | .ok_or(DbErrorKind::CollectionNotFound.into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| DbErrorKind::CollectionNotFound.into())` [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/db/mysql/models.rs:850:1 [INFO] [stderr] | [INFO] [stderr] 850 | / fn put_bso_as_changeset<'a>(bso: &'a params::PutBso, modified: i64) -> UpdateBSO<'a> { [INFO] [stderr] 851 | | UpdateBSO { [INFO] [stderr] 852 | | sortindex: bso.sortindex, [INFO] [stderr] 853 | | expiry: bso.ttl.map(|ttl| modified + (ttl as i64 * 1000)), [INFO] [stderr] ... | [INFO] [stderr] 860 | | } [INFO] [stderr] 861 | | } [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: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/db/mysql/models.rs:853:47 [INFO] [stderr] | [INFO] [stderr] 853 | expiry: bso.ttl.map(|ttl| modified + (ttl as i64 * 1000)), [INFO] [stderr] | ^^^^^^^^^^ help: try: `i64::from(ttl)` [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: passing a unit value to a function [INFO] [stderr] --> src/db/mysql/pool.rs:29:8 [INFO] [stderr] | [INFO] [stderr] 29 | Ok(embedded_migrations::run(&conn)?) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 29 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/db/util.rs:31:22 [INFO] [stderr] | [INFO] [stderr] 31 | pub fn as_header(&self) -> String { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/db/util.rs:76:19 [INFO] [stderr] | [INFO] [stderr] 76 | pub fn as_i64(&self) -> i64 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/db/util.rs:81:23 [INFO] [stderr] | [INFO] [stderr] 81 | pub fn as_seconds(&self) -> f64 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/db/util.rs:123:23 [INFO] [stderr] | [INFO] [stderr] 123 | fn serialize_ts(x: &u64, s: S) -> Result [INFO] [stderr] | ^^^^ help: consider passing by value instead: `u64` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i64 may become silently lossy if types change [INFO] [stderr] --> src/settings.rs:59:31 [INFO] [stderr] | [INFO] [stderr] 59 | s.set_default("port", DEFAULT_PORT as i64)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(DEFAULT_PORT)` [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/settings.rs:63:48 [INFO] [stderr] | [INFO] [stderr] 63 | s.set_default("limits.max_post_bytes", DEFAULT_MAX_POST_BYTES as i64)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(DEFAULT_MAX_POST_BYTES)` [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/settings.rs:64:50 [INFO] [stderr] | [INFO] [stderr] 64 | s.set_default("limits.max_post_records", DEFAULT_MAX_POST_RECORDS as i64)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(DEFAULT_MAX_POST_RECORDS)` [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/settings.rs:67:13 [INFO] [stderr] | [INFO] [stderr] 67 | DEFAULT_MAX_RECORD_PAYLOAD_BYTES as i64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(DEFAULT_MAX_RECORD_PAYLOAD_BYTES)` [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/settings.rs:69:51 [INFO] [stderr] | [INFO] [stderr] 69 | s.set_default("limits.max_request_bytes", DEFAULT_MAX_REQUEST_BYTES as i64)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(DEFAULT_MAX_REQUEST_BYTES)` [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/settings.rs:70:49 [INFO] [stderr] | [INFO] [stderr] 70 | s.set_default("limits.max_total_bytes", DEFAULT_MAX_TOTAL_BYTES as i64)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(DEFAULT_MAX_TOTAL_BYTES)` [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/settings.rs:71:51 [INFO] [stderr] | [INFO] [stderr] 71 | s.set_default("limits.max_total_records", DEFAULT_MAX_TOTAL_RECORDS as i64)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(DEFAULT_MAX_TOTAL_RECORDS)` [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/web/extractors.rs:480:32 [INFO] [stderr] | [INFO] [stderr] 480 | let max_post_records = req.state().limits.max_post_records as i64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(req.state().limits.max_post_records)` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/web/extractors.rs:850:51 [INFO] [stderr] | [INFO] [stderr] 850 | let bytes = base64::decode(batch).unwrap_or(batch.as_bytes().to_vec()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| batch.as_bytes().to_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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/web/extractors.rs:962:25 [INFO] [stderr] | [INFO] [stderr] 962 | fn validate_qs_ids(ids: &Vec) -> Result<(), ValidationError> { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/web/extractors.rs:969:9 [INFO] [stderr] | [INFO] [stderr] 969 | for ref id in ids { [INFO] [stderr] | ^^^^^^ --- help: try: `let id = &ids;` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/web/extractors.rs:981:31 [INFO] [stderr] | [INFO] [stderr] 981 | fn validate_qs_commit(commit: &String) -> Result<(), ValidationError> { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/web/extractors.rs:1001:29 [INFO] [stderr] | [INFO] [stderr] 1001 | fn validate_body_bso_id(id: &String) -> Result<(), ValidationError> { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/web/extractors.rs:1024:16 [INFO] [stderr] | [INFO] [stderr] 1024 | .split(",") [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/web/extractors.rs:1054:63 [INFO] [stderr] | [INFO] [stderr] 1054 | let result = SyncTimestamp::from_header(&val).map_err(|e| SerdeError::custom(e))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `SerdeError::custom` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/web/handlers.rs:75:51 [INFO] [stderr] | [INFO] [stderr] 75 | .map(|result| HttpResponse::Ok().json(result)), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 75 | .map(|result| HttpResponse::Ok().json(())), [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/web/handlers.rs:165:60 [INFO] [stderr] | [INFO] [stderr] 165 | .map(|v| serde_json::to_string(&v).unwrap_or("".to_string())) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| "".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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/error.rs:67:9 [INFO] [stderr] | [INFO] [stderr] 67 | / match self.kind() { [INFO] [stderr] 68 | | ApiErrorKind::Db(dbe) => match dbe.kind() { [INFO] [stderr] 69 | | DbErrorKind::CollectionNotFound => return true, [INFO] [stderr] 70 | | _ => (), [INFO] [stderr] 71 | | }, [INFO] [stderr] 72 | | _ => (), [INFO] [stderr] 73 | | } [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] 67 | if let ApiErrorKind::Db(dbe) = self.kind() { match dbe.kind() { [INFO] [stderr] 68 | DbErrorKind::CollectionNotFound => return true, [INFO] [stderr] 69 | _ => (), [INFO] [stderr] 70 | } } [INFO] [stderr] | [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/error.rs:68:38 [INFO] [stderr] | [INFO] [stderr] 68 | ApiErrorKind::Db(dbe) => match dbe.kind() { [INFO] [stderr] | ______________________________________^ [INFO] [stderr] 69 | | DbErrorKind::CollectionNotFound => return true, [INFO] [stderr] 70 | | _ => (), [INFO] [stderr] 71 | | }, [INFO] [stderr] | |_____________^ help: try this: `if let DbErrorKind::CollectionNotFound = dbe.kind() { return true }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/error.rs:78:9 [INFO] [stderr] | [INFO] [stderr] 78 | / match self.kind() { [INFO] [stderr] 79 | | ApiErrorKind::Db(dbe) => match dbe.kind() { [INFO] [stderr] 80 | | DbErrorKind::BsoNotFound => return true, [INFO] [stderr] 81 | | _ => (), [INFO] [stderr] 82 | | }, [INFO] [stderr] 83 | | _ => (), [INFO] [stderr] 84 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 78 | if let ApiErrorKind::Db(dbe) = self.kind() { match dbe.kind() { [INFO] [stderr] 79 | DbErrorKind::BsoNotFound => return true, [INFO] [stderr] 80 | _ => (), [INFO] [stderr] 81 | } } [INFO] [stderr] | [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/error.rs:79:38 [INFO] [stderr] | [INFO] [stderr] 79 | ApiErrorKind::Db(dbe) => match dbe.kind() { [INFO] [stderr] | ______________________________________^ [INFO] [stderr] 80 | | DbErrorKind::BsoNotFound => return true, [INFO] [stderr] 81 | | _ => (), [INFO] [stderr] 82 | | }, [INFO] [stderr] | |_____________^ help: try this: `if let DbErrorKind::BsoNotFound = dbe.kind() { return true }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/error.rs:89:9 [INFO] [stderr] | [INFO] [stderr] 89 | / match self.kind() { [INFO] [stderr] 90 | | ApiErrorKind::Db(dbe) => match dbe.kind() { [INFO] [stderr] 91 | | DbErrorKind::Conflict => return true, [INFO] [stderr] 92 | | _ => (), [INFO] [stderr] 93 | | }, [INFO] [stderr] 94 | | _ => (), [INFO] [stderr] 95 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 89 | if let ApiErrorKind::Db(dbe) = self.kind() { match dbe.kind() { [INFO] [stderr] 90 | DbErrorKind::Conflict => return true, [INFO] [stderr] 91 | _ => (), [INFO] [stderr] 92 | } } [INFO] [stderr] | [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/error.rs:90:38 [INFO] [stderr] | [INFO] [stderr] 90 | ApiErrorKind::Db(dbe) => match dbe.kind() { [INFO] [stderr] | ______________________________________^ [INFO] [stderr] 91 | | DbErrorKind::Conflict => return true, [INFO] [stderr] 92 | | _ => (), [INFO] [stderr] 93 | | }, [INFO] [stderr] | |_____________^ help: try this: `if let DbErrorKind::Conflict = dbe.kind() { return true }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/error.rs:106:45 [INFO] [stderr] | [INFO] [stderr] 106 | let name = name.clone().unwrap_or("".to_owned()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "".to_owned())` [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: you should consider deriving a `Default` implementation for `db::mock::MockDbPool` [INFO] [stderr] --> src/db/mock.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | / pub fn new() -> Self { [INFO] [stderr] 12 | | MockDbPool [INFO] [stderr] 13 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 8 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `db::mock::MockDb` [INFO] [stderr] --> src/db/mock.rs:26:5 [INFO] [stderr] | [INFO] [stderr] 26 | / pub fn new() -> Self { [INFO] [stderr] 27 | | MockDb [INFO] [stderr] 28 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 23 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/db/mysql/models.rs:146:16 [INFO] [stderr] | [INFO] [stderr] 146 | if let Some(_) = self [INFO] [stderr] | ^^^^^^^ [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] help: try this [INFO] [stderr] | [INFO] [stderr] 146 | if self [INFO] [stderr] 147 | .session [INFO] [stderr] 148 | .borrow() [INFO] [stderr] 149 | .coll_locks [INFO] [stderr] 150 | .get(&(user_id, collection_id)).is_some() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/db/mysql/models.rs:219:12 [INFO] [stderr] | [INFO] [stderr] 219 | Ok(self [INFO] [stderr] | ____________^ [INFO] [stderr] 220 | | .conn [INFO] [stderr] 221 | | .transaction_manager() [INFO] [stderr] 222 | | .begin_transaction(&self.conn)?) [INFO] [stderr] | |___________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unit_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 219 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/db/mysql/models.rs:226:12 [INFO] [stderr] | [INFO] [stderr] 226 | Ok(self [INFO] [stderr] | ____________^ [INFO] [stderr] 227 | | .conn [INFO] [stderr] 228 | | .transaction_manager() [INFO] [stderr] 229 | | .commit_transaction(&self.conn)?) [INFO] [stderr] | |____________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 226 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/db/mysql/models.rs:233:12 [INFO] [stderr] | [INFO] [stderr] 233 | Ok(self [INFO] [stderr] | ____________^ [INFO] [stderr] 234 | | .conn [INFO] [stderr] 235 | | .transaction_manager() [INFO] [stderr] 236 | | .rollback_transaction(&self.conn)?) [INFO] [stderr] | |______________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 233 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/db/mysql/models.rs:364:53 [INFO] [stderr] | [INFO] [stderr] 364 | bso::expiry.eq(timestamp + (ttl as i64 * 1000)), [INFO] [stderr] | ^^^^^^^^^^ help: try: `i64::from(ttl)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/db/mysql/models.rs:416:39 [INFO] [stderr] | [INFO] [stderr] 416 | let limit = limit.map(|limit| limit as i64).unwrap_or(-1); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `i64::from(limit)` [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: use of `ok_or` followed by a function call [INFO] [stderr] --> src/db/mysql/models.rs:562:14 [INFO] [stderr] | [INFO] [stderr] 562 | .ok_or(DbErrorKind::CollectionNotFound.into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| DbErrorKind::CollectionNotFound.into())` [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/db/mysql/models.rs:850:1 [INFO] [stderr] | [INFO] [stderr] 850 | / fn put_bso_as_changeset<'a>(bso: &'a params::PutBso, modified: i64) -> UpdateBSO<'a> { [INFO] [stderr] 851 | | UpdateBSO { [INFO] [stderr] 852 | | sortindex: bso.sortindex, [INFO] [stderr] 853 | | expiry: bso.ttl.map(|ttl| modified + (ttl as i64 * 1000)), [INFO] [stderr] ... | [INFO] [stderr] 860 | | } [INFO] [stderr] 861 | | } [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: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/db/mysql/models.rs:853:47 [INFO] [stderr] | [INFO] [stderr] 853 | expiry: bso.ttl.map(|ttl| modified + (ttl as i64 * 1000)), [INFO] [stderr] | ^^^^^^^^^^ help: try: `i64::from(ttl)` [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: passing a unit value to a function [INFO] [stderr] --> src/db/mysql/pool.rs:29:8 [INFO] [stderr] | [INFO] [stderr] 29 | Ok(embedded_migrations::run(&conn)?) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 29 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/db/mysql/test.rs:60:45 [INFO] [stderr] | [INFO] [stderr] 60 | user_id: HawkIdentifier::new_legacy(user_id as u64), [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u64::from(user_id)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (8/7) [INFO] [stderr] --> src/db/mysql/test.rs:91:1 [INFO] [stderr] | [INFO] [stderr] 91 | / fn gbsos( [INFO] [stderr] 92 | | user_id: u32, [INFO] [stderr] 93 | | coll: &str, [INFO] [stderr] 94 | | bids: &[&str], [INFO] [stderr] ... | [INFO] [stderr] 113 | | } [INFO] [stderr] 114 | | } [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: this .into_iter() call is equivalent to .iter() and will not move the slice [INFO] [stderr] --> src/db/mysql/test.rs:105:23 [INFO] [stderr] | [INFO] [stderr] 105 | ids: bids.into_iter().map(|id| id.to_owned().into()).collect(), [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the slice [INFO] [stderr] --> src/db/mysql/test.rs:128:19 [INFO] [stderr] | [INFO] [stderr] 128 | ids: bids.into_iter().map(|id| id.to_owned().into()).collect(), [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/db/mysql/test.rs:133:32 [INFO] [stderr] | [INFO] [stderr] 133 | HawkIdentifier::new_legacy(user_id as u64) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u64::from(user_id)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/db/mysql/test.rs:164:20 [INFO] [stderr] | [INFO] [stderr] 164 | assert_eq!(results.get(id).unwrap(), name); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&results[id]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/db/mysql/test.rs:206:54 [INFO] [stderr] | [INFO] [stderr] 206 | assert_eq!(bso.expiry, db.timestamp().as_i64() + (ttl * 1000) as i64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(ttl * 1000)` [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/db/mysql/test.rs:217:54 [INFO] [stderr] | [INFO] [stderr] 217 | assert_eq!(bso.expiry, db.timestamp().as_i64() + (ttl * 1000) as i64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(ttl * 1000)` [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/db/mysql/test.rs:281:23 [INFO] [stderr] | [INFO] [stderr] 281 | db.with_delta(i as i64 * 10, |db| db.put_bso_sync(bso))?; [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(i)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/db/mysql/test.rs:817:9 [INFO] [stderr] | [INFO] [stderr] 817 | &vec![], [INFO] [stderr] | ^^^^^^^ help: you can use a slice directly: `&[]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_vec)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/db/mysql/test.rs:829:9 [INFO] [stderr] | [INFO] [stderr] 829 | &vec!["b0", "b2", "b4"], [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&["b0", "b2", "b4"]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/db/util.rs:31:22 [INFO] [stderr] | [INFO] [stderr] 31 | pub fn as_header(&self) -> String { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/db/util.rs:76:19 [INFO] [stderr] | [INFO] [stderr] 76 | pub fn as_i64(&self) -> i64 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/db/util.rs:81:23 [INFO] [stderr] | [INFO] [stderr] 81 | pub fn as_seconds(&self) -> f64 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/db/util.rs:123:23 [INFO] [stderr] | [INFO] [stderr] 123 | fn serialize_ts(x: &u64, s: S) -> Result [INFO] [stderr] | ^^^^ help: consider passing by value instead: `u64` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i64 may become silently lossy if types change [INFO] [stderr] --> src/settings.rs:59:31 [INFO] [stderr] | [INFO] [stderr] 59 | s.set_default("port", DEFAULT_PORT as i64)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(DEFAULT_PORT)` [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/settings.rs:63:48 [INFO] [stderr] | [INFO] [stderr] 63 | s.set_default("limits.max_post_bytes", DEFAULT_MAX_POST_BYTES as i64)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(DEFAULT_MAX_POST_BYTES)` [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/settings.rs:64:50 [INFO] [stderr] | [INFO] [stderr] 64 | s.set_default("limits.max_post_records", DEFAULT_MAX_POST_RECORDS as i64)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(DEFAULT_MAX_POST_RECORDS)` [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/settings.rs:67:13 [INFO] [stderr] | [INFO] [stderr] 67 | DEFAULT_MAX_RECORD_PAYLOAD_BYTES as i64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(DEFAULT_MAX_RECORD_PAYLOAD_BYTES)` [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/settings.rs:69:51 [INFO] [stderr] | [INFO] [stderr] 69 | s.set_default("limits.max_request_bytes", DEFAULT_MAX_REQUEST_BYTES as i64)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(DEFAULT_MAX_REQUEST_BYTES)` [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/settings.rs:70:49 [INFO] [stderr] | [INFO] [stderr] 70 | s.set_default("limits.max_total_bytes", DEFAULT_MAX_TOTAL_BYTES as i64)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(DEFAULT_MAX_TOTAL_BYTES)` [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/settings.rs:71:51 [INFO] [stderr] | [INFO] [stderr] 71 | s.set_default("limits.max_total_records", DEFAULT_MAX_TOTAL_RECORDS as i64)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(DEFAULT_MAX_TOTAL_RECORDS)` [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/web/extractors.rs:480:32 [INFO] [stderr] | [INFO] [stderr] 480 | let max_post_records = req.state().limits.max_post_records as i64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(req.state().limits.max_post_records)` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/web/extractors.rs:850:51 [INFO] [stderr] | [INFO] [stderr] 850 | let bytes = base64::decode(batch).unwrap_or(batch.as_bytes().to_vec()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| batch.as_bytes().to_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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/web/extractors.rs:962:25 [INFO] [stderr] | [INFO] [stderr] 962 | fn validate_qs_ids(ids: &Vec) -> Result<(), ValidationError> { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/web/extractors.rs:969:9 [INFO] [stderr] | [INFO] [stderr] 969 | for ref id in ids { [INFO] [stderr] | ^^^^^^ --- help: try: `let id = &ids;` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/web/extractors.rs:981:31 [INFO] [stderr] | [INFO] [stderr] 981 | fn validate_qs_commit(commit: &String) -> Result<(), ValidationError> { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/web/extractors.rs:1001:29 [INFO] [stderr] | [INFO] [stderr] 1001 | fn validate_body_bso_id(id: &String) -> Result<(), ValidationError> { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/web/extractors.rs:1024:16 [INFO] [stderr] | [INFO] [stderr] 1024 | .split(",") [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/web/extractors.rs:1054:63 [INFO] [stderr] | [INFO] [stderr] 1054 | let result = SyncTimestamp::from_header(&val).map_err(|e| SerdeError::custom(e))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `SerdeError::custom` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/web/handlers.rs:75:51 [INFO] [stderr] | [INFO] [stderr] 75 | .map(|result| HttpResponse::Ok().json(result)), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 75 | .map(|result| HttpResponse::Ok().json(())), [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/web/handlers.rs:165:60 [INFO] [stderr] | [INFO] [stderr] 165 | .map(|v| serde_json::to_string(&v).unwrap_or("".to_string())) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| "".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] Finished dev [unoptimized + debuginfo] target(s) in 3m 14s [INFO] running `"docker" "inspect" "3d425e5411ab71d5e7d7cbb1821ede6be9d7575ead0728567d272d377bc3f462"` [INFO] running `"docker" "rm" "-f" "3d425e5411ab71d5e7d7cbb1821ede6be9d7575ead0728567d272d377bc3f462"` [INFO] [stdout] 3d425e5411ab71d5e7d7cbb1821ede6be9d7575ead0728567d272d377bc3f462