[INFO] cloning repository https://github.com/AlexanderHeffernan/RustAPIStarter [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/AlexanderHeffernan/RustAPIStarter" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAlexanderHeffernan%2FRustAPIStarter", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAlexanderHeffernan%2FRustAPIStarter'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 7144674610d4fa817380d10f6eae1cc9369c46f0 [INFO] linting AlexanderHeffernan/RustAPIStarter against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAlexanderHeffernan%2FRustAPIStarter" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/AlexanderHeffernan/RustAPIStarter [INFO] finished tweaking git repo https://github.com/AlexanderHeffernan/RustAPIStarter [INFO] tweaked toml for git repo https://github.com/AlexanderHeffernan/RustAPIStarter written to /workspace/builds/worker-4-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/AlexanderHeffernan/RustAPIStarter on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/AlexanderHeffernan/RustAPIStarter already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded quanta v0.9.3 [INFO] [stderr] Downloaded actix-governor v0.3.2 [INFO] [stderr] Downloaded governor v0.4.2 [INFO] [stderr] Downloaded rustls-webpki v0.103.2 [INFO] [stderr] Downloaded aws-lc-rs v1.13.1 [INFO] [stderr] Downloaded actix-http v3.10.0 [INFO] [stderr] Downloaded actix-web v4.10.2 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] b605b6f20ed3ddcc8f562c4973d84e1945fc2a33515b651ae890fe201c087a61 [INFO] running `Command { std: "docker" "start" "-a" "b605b6f20ed3ddcc8f562c4973d84e1945fc2a33515b651ae890fe201c087a61", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "b605b6f20ed3ddcc8f562c4973d84e1945fc2a33515b651ae890fe201c087a61", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "b605b6f20ed3ddcc8f562c4973d84e1945fc2a33515b651ae890fe201c087a61", kill_on_drop: false }` [INFO] [stdout] b605b6f20ed3ddcc8f562c4973d84e1945fc2a33515b651ae890fe201c087a61 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 3aef3b2a0091ca21b5ff14234aadc07b56dbffec79851eeb224d12aadf23d808 [INFO] running `Command { std: "docker" "start" "-a" "3aef3b2a0091ca21b5ff14234aadc07b56dbffec79851eeb224d12aadf23d808", kill_on_drop: false }` [INFO] [stderr] Checking smallvec v1.15.0 [INFO] [stderr] Compiling icu_properties_data v2.0.0 [INFO] [stderr] Checking getrandom v0.2.16 [INFO] [stderr] Compiling fs_extra v1.3.0 [INFO] [stderr] Compiling dunce v1.0.5 [INFO] [stderr] Compiling cc v1.2.21 [INFO] [stderr] Checking socket2 v0.5.9 [INFO] [stderr] Checking signal-hook-registry v1.4.5 [INFO] [stderr] Checking mio v1.0.3 [INFO] [stderr] Compiling aws-lc-rs v1.13.1 [INFO] [stderr] Compiling syn v2.0.101 [INFO] [stderr] Compiling serde_json v1.0.140 [INFO] [stderr] Checking tracing-core v0.1.33 [INFO] [stderr] Compiling litemap v0.8.0 [INFO] [stderr] Compiling zerocopy v0.8.25 [INFO] [stderr] Compiling writeable v0.6.1 [INFO] [stderr] Checking parking_lot_core v0.9.10 [INFO] [stderr] Compiling rustls v0.23.27 [INFO] [stderr] Checking hashbrown v0.15.3 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling rustls-pki-types v1.12.0 [INFO] [stderr] Compiling generic-array v0.14.7 [INFO] [stderr] Compiling icu_normalizer_data v2.0.0 [INFO] [stderr] Compiling getrandom v0.3.2 [INFO] [stderr] Compiling untrusted v0.9.0 [INFO] [stderr] Checking parking_lot v0.12.3 [INFO] [stderr] Compiling futures-util v0.3.31 [INFO] [stderr] Compiling webpki-roots v1.0.0 [INFO] [stderr] Checking rand_core v0.9.3 [INFO] [stderr] Checking tokio v1.45.0 [INFO] [stderr] Compiling concurrent-queue v2.5.0 [INFO] [stderr] Checking indexmap v2.9.0 [INFO] [stderr] Compiling rustix v1.0.7 [INFO] [stderr] Compiling iana-time-zone v0.1.63 [INFO] [stderr] Checking miniz_oxide v0.8.8 [INFO] [stderr] Compiling futures-intrusive v0.5.0 [INFO] [stderr] Compiling event-listener v5.4.0 [INFO] [stderr] Compiling crc v3.3.0 [INFO] [stderr] Checking brotli-decompressor v4.0.3 [INFO] [stderr] Compiling webpki-roots v0.26.11 [INFO] [stderr] Compiling crossbeam-queue v0.3.12 [INFO] [stderr] Compiling bitflags v2.9.0 [INFO] [stderr] Compiling linux-raw-sys v0.9.4 [INFO] [stderr] Compiling hashlink v0.10.0 [INFO] [stderr] Compiling crypto-common v0.1.6 [INFO] [stderr] Compiling block-buffer v0.10.4 [INFO] [stderr] Checking flate2 v1.1.1 [INFO] [stderr] Compiling cmake v0.1.54 [INFO] [stderr] Compiling digest v0.10.7 [INFO] [stderr] Checking sha1 v0.10.6 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Compiling chrono v0.4.41 [INFO] [stderr] Compiling atoi v2.0.0 [INFO] [stderr] Compiling sha2 v0.10.9 [INFO] [stderr] Checking brotli v7.0.0 [INFO] [stderr] Checking raw-cpuid v10.7.0 [INFO] [stderr] Checking num-integer v0.1.46 [INFO] [stderr] Checking inout v0.1.4 [INFO] [stderr] Checking ppv-lite86 v0.2.21 [INFO] [stderr] Checking dashmap v5.5.3 [INFO] [stderr] Checking num-bigint v0.4.6 [INFO] [stderr] Checking nonzero_ext v0.3.0 [INFO] [stderr] Checking no-std-compat v0.4.1 [INFO] [stderr] Checking cipher v0.4.4 [INFO] [stderr] Compiling aws-lc-sys v0.29.0 [INFO] [stderr] Compiling ring v0.17.14 [INFO] [stderr] Compiling zstd-sys v2.0.15+zstd.1.5.7 [INFO] [stderr] Compiling libsqlite3-sys v0.30.1 [INFO] [stderr] Checking rand_chacha v0.9.0 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Checking quanta v0.9.3 [INFO] [stderr] Checking rand v0.9.1 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Checking byteorder v1.5.0 [INFO] [stderr] Checking blowfish v0.9.1 [INFO] [stderr] Checking bcrypt v0.15.1 [INFO] [stderr] Compiling futures-executor v0.3.31 [INFO] [stderr] Compiling tempfile v3.19.1 [INFO] [stderr] Checking tokio-util v0.7.15 [INFO] [stderr] Checking actix-rt v2.10.0 [INFO] [stderr] Checking tokio-stream v0.1.17 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling yoke-derive v0.8.0 [INFO] [stderr] Compiling zerovec-derive v0.11.1 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling serde_derive v1.0.219 [INFO] [stderr] Compiling tracing-attributes v0.1.28 [INFO] [stderr] Compiling futures-macro v0.3.31 [INFO] [stderr] Compiling thiserror-impl v2.0.12 [INFO] [stderr] Compiling rustls-webpki v0.103.2 [INFO] [stderr] Compiling derive_more-impl v2.0.1 [INFO] [stderr] Compiling actix-macros v0.2.4 [INFO] [stderr] Compiling derive_more v0.99.20 [INFO] [stderr] Checking zerofrom v0.1.6 [INFO] [stderr] Checking tracing v0.1.41 [INFO] [stderr] Checking yoke v0.8.0 [INFO] [stderr] Checking thiserror v2.0.12 [INFO] [stderr] Checking simple_asn1 v0.6.3 [INFO] [stderr] Checking actix-codec v0.5.2 [INFO] [stderr] Checking zerovec v0.11.2 [INFO] [stderr] Checking zerotrie v0.2.2 [INFO] [stderr] Compiling zstd-safe v7.2.4 [INFO] [stderr] Checking zstd v0.13.3 [INFO] [stderr] Checking tinystr v0.8.1 [INFO] [stderr] Checking potential_utf v0.1.2 [INFO] [stderr] Checking derive_more v2.0.1 [INFO] [stderr] Checking icu_collections v2.0.0 [INFO] [stderr] Checking icu_locale_core v2.0.0 [INFO] [stderr] Compiling serde v1.0.219 [INFO] [stderr] Checking icu_provider v2.0.0 [INFO] [stderr] Checking icu_properties v2.0.0 [INFO] [stderr] Checking icu_normalizer v2.0.0 [INFO] [stderr] Checking h2 v0.3.26 [INFO] [stderr] Checking actix-server v2.5.1 [INFO] [stderr] Checking futures v0.3.31 [INFO] [stderr] Checking governor v0.4.2 [INFO] [stderr] Checking idna_adapter v1.2.1 [INFO] [stderr] Checking idna v1.0.3 [INFO] [stderr] Checking url v2.5.4 [INFO] [stderr] Checking serde_urlencoded v0.7.1 [INFO] [stderr] Checking either v1.15.0 [INFO] [stderr] Checking actix-router v0.5.3 [INFO] [stderr] Checking jsonwebtoken v9.3.1 [INFO] [stderr] Compiling actix-web-codegen v4.3.0 [INFO] [stderr] Compiling sqlx-core v0.8.5 [INFO] [stderr] Compiling sqlx-sqlite v0.8.5 [INFO] [stderr] Compiling sqlx-macros-core v0.8.5 [INFO] [stderr] Checking tokio-rustls v0.26.2 [INFO] [stderr] Compiling sqlx-macros v0.8.5 [INFO] [stderr] Checking actix-tls v3.4.0 [INFO] [stderr] Checking actix-http v3.10.0 [INFO] [stderr] Checking actix-web v4.10.2 [INFO] [stderr] Checking sqlx v0.8.5 [INFO] [stderr] Checking actix-cors v0.6.5 [INFO] [stderr] Checking actix-governor v0.3.2 [INFO] [stderr] Checking rusty-api v0.2.1 (/opt/rustwide/workdir) [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/api.rs:83:20 [INFO] [stdout] | [INFO] [stdout] 83 | custom_routes: Option>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Api` [INFO] [stdout] --> src/api.rs:117:5 [INFO] [stdout] | [INFO] [stdout] 117 | / pub fn new() -> Self { [INFO] [stdout] 118 | | initialize_crypto_provider(); // Ensure the crypto provider is initialized [INFO] [stdout] 119 | | Self { [INFO] [stdout] 120 | | cert_path: "certs/cert.pem".into(), [INFO] [stdout] ... | [INFO] [stdout] 131 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 98 + impl Default for Api { [INFO] [stdout] 99 + fn default() -> Self { [INFO] [stdout] 100 + Self::new() [INFO] [stdout] 101 + } [INFO] [stdout] 102 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/api.rs:126:35 [INFO] [stdout] | [INFO] [stdout] 126 | custom_cors: Arc::new(|| Cors::default()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `Cors::default` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/api.rs:485:40 [INFO] [stdout] | [INFO] [stdout] 485 | pub fn get_custom_routes(&self) -> Option<&Arc> { self.custom_routes.as_ref() } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/routes.rs:44:13 [INFO] [stdout] | [INFO] [stdout] 44 | routes: Vec>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Routes` [INFO] [stdout] --> src/routes.rs:64:5 [INFO] [stdout] | [INFO] [stdout] 64 | / pub fn new() -> Self { [INFO] [stdout] 65 | | Self { routes: Vec::new() } [INFO] [stdout] 66 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 47 + impl Default for Routes { [INFO] [stdout] 48 + fn default() -> Self { [INFO] [stdout] 49 + Self::new() [INFO] [stdout] 50 + } [INFO] [stdout] 51 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/routes.rs:222:17 [INFO] [stdout] | [INFO] [stdout] 222 | / if let Some(expected_password) = password { [INFO] [stdout] 223 | | if !check_password(&req, expected_password) { [INFO] [stdout] 224 | | return HttpResponse::Unauthorized().body("Invalid password").into(); [INFO] [stdout] 225 | | } [INFO] [stdout] 226 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 222 ~ if let Some(expected_password) = password [INFO] [stdout] 223 ~ && !check_password(&req, expected_password) { [INFO] [stdout] 224 | return HttpResponse::Unauthorized().body("Invalid password").into(); [INFO] [stdout] 225 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `actix_web::HttpResponse` [INFO] [stdout] --> src/routes.rs:224:32 [INFO] [stdout] | [INFO] [stdout] 224 | return HttpResponse::Unauthorized().body("Invalid password").into(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `HttpResponse::Unauthorized().body("Invalid password")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/routes.rs:275:9 [INFO] [stdout] | [INFO] [stdout] 275 | / if let (Some(key), Some(value)) = (key_value.next(), key_value.next()) { [INFO] [stdout] 276 | | if key == "password" && value == expected_password { [INFO] [stdout] 277 | | return true; [INFO] [stdout] 278 | | } [INFO] [stdout] 279 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 275 ~ if let (Some(key), Some(value)) = (key_value.next(), key_value.next()) [INFO] [stdout] 276 ~ && key == "password" && value == expected_password { [INFO] [stdout] 277 | return true; [INFO] [stdout] 278 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/api.rs:83:20 [INFO] [stdout] | [INFO] [stdout] 83 | custom_routes: Option>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Api` [INFO] [stdout] --> src/api.rs:117:5 [INFO] [stdout] | [INFO] [stdout] 117 | / pub fn new() -> Self { [INFO] [stdout] 118 | | initialize_crypto_provider(); // Ensure the crypto provider is initialized [INFO] [stdout] 119 | | Self { [INFO] [stdout] 120 | | cert_path: "certs/cert.pem".into(), [INFO] [stdout] ... | [INFO] [stdout] 131 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 98 + impl Default for Api { [INFO] [stdout] 99 + fn default() -> Self { [INFO] [stdout] 100 + Self::new() [INFO] [stdout] 101 + } [INFO] [stdout] 102 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/api.rs:126:35 [INFO] [stdout] | [INFO] [stdout] 126 | custom_cors: Arc::new(|| Cors::default()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `Cors::default` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/api.rs:485:40 [INFO] [stdout] | [INFO] [stdout] 485 | pub fn get_custom_routes(&self) -> Option<&Arc> { self.custom_routes.as_ref() } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/routes.rs:44:13 [INFO] [stdout] | [INFO] [stdout] 44 | routes: Vec>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Routes` [INFO] [stdout] --> src/routes.rs:64:5 [INFO] [stdout] | [INFO] [stdout] 64 | / pub fn new() -> Self { [INFO] [stdout] 65 | | Self { routes: Vec::new() } [INFO] [stdout] 66 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 47 + impl Default for Routes { [INFO] [stdout] 48 + fn default() -> Self { [INFO] [stdout] 49 + Self::new() [INFO] [stdout] 50 + } [INFO] [stdout] 51 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/routes.rs:222:17 [INFO] [stdout] | [INFO] [stdout] 222 | / if let Some(expected_password) = password { [INFO] [stdout] 223 | | if !check_password(&req, expected_password) { [INFO] [stdout] 224 | | return HttpResponse::Unauthorized().body("Invalid password").into(); [INFO] [stdout] 225 | | } [INFO] [stdout] 226 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 222 ~ if let Some(expected_password) = password [INFO] [stdout] 223 ~ && !check_password(&req, expected_password) { [INFO] [stdout] 224 | return HttpResponse::Unauthorized().body("Invalid password").into(); [INFO] [stdout] 225 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `actix_web::HttpResponse` [INFO] [stdout] --> src/routes.rs:224:32 [INFO] [stdout] | [INFO] [stdout] 224 | return HttpResponse::Unauthorized().body("Invalid password").into(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `HttpResponse::Unauthorized().body("Invalid password")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/routes.rs:275:9 [INFO] [stdout] | [INFO] [stdout] 275 | / if let (Some(key), Some(value)) = (key_value.next(), key_value.next()) { [INFO] [stdout] 276 | | if key == "password" && value == expected_password { [INFO] [stdout] 277 | | return true; [INFO] [stdout] 278 | | } [INFO] [stdout] 279 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 275 ~ if let (Some(key), Some(value)) = (key_value.next(), key_value.next()) [INFO] [stdout] 276 ~ && key == "password" && value == expected_password { [INFO] [stdout] 277 | return true; [INFO] [stdout] 278 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/main.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | use rusty_api; [INFO] [stdout] | ^^^^^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] = note: `#[warn(clippy::single_component_path_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:24:48 [INFO] [stdout] | [INFO] [stdout] 24 | rusty_api::set_user_field(user_id, "role", &new_role).await [INFO] [stdout] | ^^^^^^^^^ help: change this to: `new_role` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/main.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | use rusty_api; [INFO] [stdout] | ^^^^^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] = note: `#[warn(clippy::single_component_path_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:24:48 [INFO] [stdout] | [INFO] [stdout] 24 | rusty_api::set_user_field(user_id, "role", &new_role).await [INFO] [stdout] | ^^^^^^^^^ help: change this to: `new_role` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 40s [INFO] running `Command { std: "docker" "inspect" "3aef3b2a0091ca21b5ff14234aadc07b56dbffec79851eeb224d12aadf23d808", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "3aef3b2a0091ca21b5ff14234aadc07b56dbffec79851eeb224d12aadf23d808", kill_on_drop: false }` [INFO] [stdout] 3aef3b2a0091ca21b5ff14234aadc07b56dbffec79851eeb224d12aadf23d808