[INFO] cloning repository https://github.com/Danielmelody/indexer-cli [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Danielmelody/indexer-cli" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FDanielmelody%2Findexer-cli", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FDanielmelody%2Findexer-cli'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] a259e3a3224814df4b5feba61836f8fae2e913ed [INFO] linting Danielmelody/indexer-cli against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FDanielmelody%2Findexer-cli" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/Danielmelody/indexer-cli [INFO] finished tweaking git repo https://github.com/Danielmelody/indexer-cli [INFO] tweaked toml for git repo https://github.com/Danielmelody/indexer-cli written to /workspace/builds/worker-6-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/Danielmelody/indexer-cli 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/Danielmelody/indexer-cli 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] Downloading crates ... [INFO] [stderr] Downloaded mockall v0.13.1 [INFO] [stderr] Downloaded compression-codecs v0.4.31 [INFO] [stderr] Downloaded sdd v3.0.10 [INFO] [stderr] Downloaded servo_arc v0.4.1 [INFO] [stderr] Downloaded tracing-appender v0.2.3 [INFO] [stderr] Downloaded rust-ini v0.21.3 [INFO] [stderr] Downloaded yup-oauth2 v12.1.0 [INFO] [stderr] Downloaded clap_complete v4.5.60 [INFO] [stderr] Downloaded pest_generator v2.8.3 [INFO] [stderr] Downloaded pest_meta v2.8.3 [INFO] [stderr] Downloaded indicatif v0.18.2 [INFO] [stderr] Downloaded async-compression v0.4.32 [INFO] [stderr] Downloaded selectors v0.32.0 [INFO] [stderr] Downloaded quick-xml v0.38.3 [INFO] [stderr] Downloaded yaml-rust2 v0.10.4 [INFO] [stderr] Downloaded config v0.15.18 [INFO] [stderr] Downloaded mockall_derive v0.13.1 [INFO] [stderr] Downloaded pest_derive v2.8.3 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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] d4bcbec221911975851faf242faeda5fdc9f1d393e970fa3a2af21a07d6dbb4f [INFO] running `Command { std: "docker" "start" "-a" "d4bcbec221911975851faf242faeda5fdc9f1d393e970fa3a2af21a07d6dbb4f", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "d4bcbec221911975851faf242faeda5fdc9f1d393e970fa3a2af21a07d6dbb4f", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "d4bcbec221911975851faf242faeda5fdc9f1d393e970fa3a2af21a07d6dbb4f", kill_on_drop: false }` [INFO] [stdout] d4bcbec221911975851faf242faeda5fdc9f1d393e970fa3a2af21a07d6dbb4f [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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] 51d49e70160c4775f11a7abbf5622f553c8cf9941d400199edb854eef73e36e4 [INFO] running `Command { std: "docker" "start" "-a" "51d49e70160c4775f11a7abbf5622f553c8cf9941d400199edb854eef73e36e4", kill_on_drop: false }` [INFO] [stderr] Checking stable_deref_trait v1.2.1 [INFO] [stderr] Checking parking_lot_core v0.9.12 [INFO] [stderr] Checking socket2 v0.6.1 [INFO] [stderr] Checking mio v1.1.0 [INFO] [stderr] Checking serde v1.0.228 [INFO] [stderr] Checking bitflags v2.10.0 [INFO] [stderr] Checking futures-util v0.3.31 [INFO] [stderr] Checking tracing v0.1.41 [INFO] [stderr] Checking phf_shared v0.11.3 [INFO] [stderr] Compiling zerocopy v0.8.27 [INFO] [stderr] Compiling libc v0.2.177 [INFO] [stderr] Checking serde_json v1.0.145 [INFO] [stderr] Compiling phf_macros v0.11.3 [INFO] [stderr] Compiling zerocopy-derive v0.8.27 [INFO] [stderr] Compiling tiny-keccak v2.0.2 [INFO] [stderr] Checking getrandom v0.2.16 [INFO] [stderr] Checking yoke v0.8.1 [INFO] [stderr] Checking precomputed-hash v0.1.1 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling string_cache_codegen v0.5.4 [INFO] [stderr] Checking zerovec v0.11.5 [INFO] [stderr] Checking zerotrie v0.2.3 [INFO] [stderr] Checking ring v0.17.14 [INFO] [stderr] Compiling pest v2.8.3 [INFO] [stderr] Checking getrandom v0.3.4 [INFO] [stderr] Checking parking_lot v0.12.5 [INFO] [stderr] Checking openssl-sys v0.9.111 [INFO] [stderr] Checking dtoa v1.0.10 [INFO] [stderr] Compiling typeid v1.0.3 [INFO] [stderr] Checking mac v0.1.1 [INFO] [stderr] Checking hashbrown v0.15.5 [INFO] [stderr] Checking futf v0.1.5 [INFO] [stderr] Checking dtoa-short v0.3.5 [INFO] [stderr] Compiling derive_more-impl v2.0.1 [INFO] [stderr] Compiling cssparser-macros v0.6.1 [INFO] [stderr] Checking tokio v1.48.0 [INFO] [stderr] Checking phf v0.11.3 [INFO] [stderr] Compiling web_atoms v0.1.3 [INFO] [stderr] Checking string_cache v0.8.9 [INFO] [stderr] Checking tinystr v0.8.2 [INFO] [stderr] Checking potential_utf v0.1.4 [INFO] [stderr] Compiling erased-serde v0.4.9 [INFO] [stderr] Checking clap_builder v4.5.51 [INFO] [stderr] Checking icu_collections v2.1.1 [INFO] [stderr] Checking icu_locale_core v2.1.1 [INFO] [stderr] Checking deranged v0.5.5 [INFO] [stderr] Checking cssparser v0.35.0 [INFO] [stderr] Checking tendril v0.4.3 [INFO] [stderr] Checking derive_more v2.0.1 [INFO] [stderr] Compiling clap_derive v4.5.49 [INFO] [stderr] Compiling const-random-macro v0.1.16 [INFO] [stderr] Checking rustls-native-certs v0.8.2 [INFO] [stderr] Checking servo_arc v0.4.1 [INFO] [stderr] Checking hashlink v0.10.0 [INFO] [stderr] Compiling selectors v0.31.0 [INFO] [stderr] Compiling libsqlite3-sys v0.35.0 [INFO] [stderr] Checking const-random v0.1.18 [INFO] [stderr] Compiling pest_meta v2.8.3 [INFO] [stderr] Checking dlv-list v0.5.2 [INFO] [stderr] Checking compression-core v0.4.29 [INFO] [stderr] Checking openssl v0.10.75 [INFO] [stderr] Checking icu_provider v2.1.1 [INFO] [stderr] Checking rustix v1.1.2 [INFO] [stderr] Checking ordered-multimap v0.7.3 [INFO] [stderr] Checking compression-codecs v0.4.31 [INFO] [stderr] Checking toml_parser v1.0.4 [INFO] [stderr] Checking rustls-webpki v0.103.8 [INFO] [stderr] Checking icu_normalizer v2.1.1 [INFO] [stderr] Checking icu_properties v2.1.1 [INFO] [stderr] Checking markup5ever v0.35.0 [INFO] [stderr] Compiling portable-atomic v1.11.1 [INFO] [stderr] Checking crypto-common v0.1.6 [INFO] [stderr] Checking rand_core v0.9.3 [INFO] [stderr] Compiling pest_generator v2.8.3 [INFO] [stderr] Checking rustls v0.23.35 [INFO] [stderr] Checking console v0.16.1 [INFO] [stderr] Compiling selectors v0.32.0 [INFO] [stderr] Checking toml_datetime v0.7.3 [INFO] [stderr] Checking serde_spanned v1.0.3 [INFO] [stderr] Checking futures-executor v0.3.31 [INFO] [stderr] Compiling match_token v0.35.0 [INFO] [stderr] Compiling proc-macro-error-attr2 v2.0.0 [INFO] [stderr] Checking futures v0.3.31 [INFO] [stderr] Checking arraydeque v0.5.1 [INFO] [stderr] Checking tracing-subscriber v0.3.20 [INFO] [stderr] Checking time v0.3.44 [INFO] [stderr] Checking idna_adapter v1.2.1 [INFO] [stderr] Checking convert_case v0.6.0 [INFO] [stderr] Checking yaml-rust2 v0.10.4 [INFO] [stderr] Checking idna v1.1.0 [INFO] [stderr] Compiling proc-macro-error2 v2.0.1 [INFO] [stderr] Checking html5ever v0.35.0 [INFO] [stderr] Checking ron v0.8.1 [INFO] [stderr] Checking dirs-sys v0.5.0 [INFO] [stderr] Checking chrono v0.4.42 [INFO] [stderr] Checking clap v4.5.51 [INFO] [stderr] Checking toml v0.9.8 [INFO] [stderr] Checking serde-untagged v0.1.9 [INFO] [stderr] Checking url v2.5.7 [INFO] [stderr] Checking digest v0.10.7 [INFO] [stderr] Checking native-tls v0.2.14 [INFO] [stderr] Checking nix v0.30.1 [INFO] [stderr] Checking tempfile v3.23.0 [INFO] [stderr] Checking rust-ini v0.21.3 [INFO] [stderr] Compiling pest_derive v2.8.3 [INFO] [stderr] Checking ppv-lite86 v0.2.21 [INFO] [stderr] Checking half v2.7.1 [INFO] [stderr] Checking serde_urlencoded v0.7.1 [INFO] [stderr] Checking getopts v0.2.24 [INFO] [stderr] Checking rand_chacha v0.9.0 [INFO] [stderr] Checking rustls-pemfile v2.2.0 [INFO] [stderr] Checking csv-core v0.1.13 [INFO] [stderr] Checking json5 v0.4.1 [INFO] [stderr] Checking ego-tree v0.10.0 [INFO] [stderr] Checking seahash v4.1.0 [INFO] [stderr] Checking shell-words v1.1.0 [INFO] [stderr] Checking plotters-backend v0.3.7 [INFO] [stderr] Checking ciborium-io v0.2.2 [INFO] [stderr] Checking predicates-core v1.0.9 [INFO] [stderr] Compiling mockall_derive v0.13.1 [INFO] [stderr] Checking unit-prefix v0.5.1 [INFO] [stderr] Checking serde_yaml v0.9.34+deprecated [INFO] [stderr] Checking csv v1.4.0 [INFO] [stderr] Checking plotters-svg v0.3.7 [INFO] [stderr] Checking ciborium-ll v0.2.2 [INFO] [stderr] Checking dialoguer v0.12.0 [INFO] [stderr] Checking ctrlc v3.5.1 [INFO] [stderr] Checking indicatif v0.18.2 [INFO] [stderr] Checking sha2 v0.10.9 [INFO] [stderr] Checking rand v0.9.2 [INFO] [stderr] Checking validator v0.20.0 [INFO] [stderr] Compiling validator_derive v0.20.0 [INFO] [stderr] Checking config v0.15.18 [INFO] [stderr] Checking clap_complete v4.5.60 [INFO] [stderr] Checking dirs v6.0.0 [INFO] [stderr] Checking tracing-appender v0.2.3 [INFO] [stderr] Checking num_cpus v1.17.0 [INFO] [stderr] Checking quick-xml v0.38.3 [INFO] [stderr] Checking roxmltree v0.21.1 [INFO] [stderr] Compiling async-recursion v1.1.1 [INFO] [stderr] Checking scraper v0.24.0 [INFO] [stderr] Checking sdd v3.0.10 [INFO] [stderr] Checking termtree v0.5.1 [INFO] [stderr] Checking deadpool-runtime v0.1.4 [INFO] [stderr] Checking cast v0.3.0 [INFO] [stderr] Checking rayon v1.11.0 [INFO] [stderr] Checking predicates-tree v1.0.12 [INFO] [stderr] Checking criterion-plot v0.6.0 [INFO] [stderr] Checking ciborium v0.2.2 [INFO] [stderr] Checking plotters v0.3.7 [INFO] [stderr] Checking predicates v3.1.3 [INFO] [stderr] Checking tinytemplate v1.2.1 [INFO] [stderr] Checking scc v2.4.0 [INFO] [stderr] Checking assert-json-diff v2.0.2 [INFO] [stderr] Compiling serial_test_derive v3.2.0 [INFO] [stderr] Checking oorandom v11.1.5 [INFO] [stderr] Checking fragile v2.0.1 [INFO] [stderr] Checking anes v0.1.6 [INFO] [stderr] Checking downcast v0.11.0 [INFO] [stderr] Checking tokio-util v0.7.17 [INFO] [stderr] Checking tokio-rustls v0.26.4 [INFO] [stderr] Checking tower v0.5.2 [INFO] [stderr] Checking tokio-native-tls v0.3.1 [INFO] [stderr] Checking async-compression v0.4.32 [INFO] [stderr] Checking deadpool v0.12.3 [INFO] [stderr] Checking tower-http v0.6.6 [INFO] [stderr] Checking h2 v0.4.12 [INFO] [stderr] Checking serial_test v3.2.0 [INFO] [stderr] Checking mockall v0.13.1 [INFO] [stderr] Checking criterion v0.7.0 [INFO] [stderr] Checking hyper v1.7.0 [INFO] [stderr] Checking hyper-util v0.1.17 [INFO] [stderr] Checking hyper-rustls v0.27.7 [INFO] [stderr] Checking hyper-tls v0.6.0 [INFO] [stderr] Checking wiremock v0.6.5 [INFO] [stderr] Checking reqwest v0.12.24 [INFO] [stderr] Checking yup-oauth2 v12.1.0 [INFO] [stderr] Checking rusqlite v0.37.0 [INFO] [stderr] Checking indexer-cli v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/commands/google.rs:26:1 [INFO] [stdout] | [INFO] [stdout] 26 | / /// Google service account setup flow (interactive wizard + validation) [INFO] [stdout] 27 | | [INFO] [stdout] | |_^ [INFO] [stdout] 28 | /// Interactive setup for Google service account (simplified wizard, IndexGuru-style) [INFO] [stdout] 29 | pub async fn setup(args: GoogleSetupArgs, _cli: &Cli) -> Result<()> { [INFO] [stdout] | ------------------ the comment documents this function [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] help: if the documentation should include the empty line include it in the comment [INFO] [stdout] | [INFO] [stdout] 27 | /// [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::path::Path` [INFO] [stdout] --> src/commands/watch.rs:45:5 [INFO] [stdout] | [INFO] [stdout] 45 | use std::path::Path; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::*` [INFO] [stdout] --> src/cli/handler.rs:118:9 [INFO] [stdout] | [INFO] [stdout] 118 | use super::*; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/commands/google.rs:26:1 [INFO] [stdout] | [INFO] [stdout] 26 | / /// Google service account setup flow (interactive wizard + validation) [INFO] [stdout] 27 | | [INFO] [stdout] | |_^ [INFO] [stdout] 28 | /// Interactive setup for Google service account (simplified wizard, IndexGuru-style) [INFO] [stdout] 29 | pub async fn setup(args: GoogleSetupArgs, _cli: &Cli) -> Result<()> { [INFO] [stdout] | ------------------ the comment documents this function [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] help: if the documentation should include the empty line include it in the comment [INFO] [stdout] | [INFO] [stdout] 27 | /// [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::*` [INFO] [stdout] --> src/commands/validate.rs:357:9 [INFO] [stdout] | [INFO] [stdout] 357 | use super::*; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::path::Path` [INFO] [stdout] --> src/commands/watch.rs:45:5 [INFO] [stdout] | [INFO] [stdout] 45 | use std::path::Path; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::path::PathBuf` [INFO] [stdout] --> src/config/validation.rs:415:9 [INFO] [stdout] | [INFO] [stdout] 415 | use std::path::PathBuf; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/commands/config.rs:208:31 [INFO] [stdout] | [INFO] [stdout] 208 | load_config().map_err(|e| IndexerError::Other(e)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `IndexerError::Other` [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: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/google.rs:787:58 [INFO] [stdout] | [INFO] [stdout] 787 | if let Ok(content) = std::fs::read_to_string(&service_account_file) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: change this to: `service_account_file` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/google.rs:1146:22 [INFO] [stdout] | [INFO] [stdout] 1146 | wtr.write_record(&["url", "status", "last_updated", "notification_type"]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["url", "status", "last_updated", "notification_type"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/google.rs:1168:34 [INFO] [stdout] | [INFO] [stdout] 1168 | wtr.write_record(&[url, "indexed", &last_update, ¬ification_type]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `[url, "indexed", &last_update, ¬ification_type]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/google.rs:1174:34 [INFO] [stdout] | [INFO] [stdout] 1174 | wtr.write_record(&[url, "not_found", "", ""]).map_err(|e| { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `[url, "not_found", "", ""]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/history.rs:410:22 [INFO] [stdout] | [INFO] [stdout] 410 | wtr.write_record(&[ [INFO] [stdout] | ______________________^ [INFO] [stdout] 411 | | "id", [INFO] [stdout] 412 | | "url", [INFO] [stdout] 413 | | "api", [INFO] [stdout] ... | [INFO] [stdout] 418 | | "submitted_at", [INFO] [stdout] 419 | | ]) [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 410 ~ wtr.write_record([ [INFO] [stdout] 411 + "id", [INFO] [stdout] 412 + "url", [INFO] [stdout] 413 + "api", [INFO] [stdout] 414 + "action", [INFO] [stdout] 415 + "status", [INFO] [stdout] 416 + "response_code", [INFO] [stdout] 417 + "response_message", [INFO] [stdout] 418 + "submitted_at", [INFO] [stdout] 419 ~ ]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/history.rs:619:22 [INFO] [stdout] | [INFO] [stdout] 619 | wtr.write_record(&[ [INFO] [stdout] | ______________________^ [INFO] [stdout] 620 | | "id", [INFO] [stdout] 621 | | "url", [INFO] [stdout] 622 | | "api", [INFO] [stdout] ... | [INFO] [stdout] 627 | | "submitted_at", [INFO] [stdout] 628 | | ]) [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 619 ~ wtr.write_record([ [INFO] [stdout] 620 + "id", [INFO] [stdout] 621 + "url", [INFO] [stdout] 622 + "api", [INFO] [stdout] 623 + "action", [INFO] [stdout] 624 + "status", [INFO] [stdout] 625 + "response_code", [INFO] [stdout] 626 + "response_message", [INFO] [stdout] 627 + "submitted_at", [INFO] [stdout] 628 ~ ]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `true` [INFO] [stdout] --> src/cli/handler.rs:123:9 [INFO] [stdout] | [INFO] [stdout] 123 | assert!(true); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: remove the assertion [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] = note: `#[warn(clippy::assertions_on_constants)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/commands/config.rs:208:31 [INFO] [stdout] | [INFO] [stdout] 208 | load_config().map_err(|e| IndexerError::Other(e)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `IndexerError::Other` [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: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/commands/config.rs:560:9 [INFO] [stdout] | [INFO] [stdout] 560 | assert_eq!(parse_bool("true").unwrap(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_assert_comparison)]` on by default [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 560 - assert_eq!(parse_bool("true").unwrap(), true); [INFO] [stdout] 560 + assert!(parse_bool("true").unwrap()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/commands/config.rs:561:9 [INFO] [stdout] | [INFO] [stdout] 561 | assert_eq!(parse_bool("yes").unwrap(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 561 - assert_eq!(parse_bool("yes").unwrap(), true); [INFO] [stdout] 561 + assert!(parse_bool("yes").unwrap()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/commands/config.rs:562:9 [INFO] [stdout] | [INFO] [stdout] 562 | assert_eq!(parse_bool("1").unwrap(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 562 - assert_eq!(parse_bool("1").unwrap(), true); [INFO] [stdout] 562 + assert!(parse_bool("1").unwrap()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/commands/config.rs:563:9 [INFO] [stdout] | [INFO] [stdout] 563 | assert_eq!(parse_bool("on").unwrap(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 563 - assert_eq!(parse_bool("on").unwrap(), true); [INFO] [stdout] 563 + assert!(parse_bool("on").unwrap()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/commands/config.rs:564:9 [INFO] [stdout] | [INFO] [stdout] 564 | assert_eq!(parse_bool("enabled").unwrap(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 564 - assert_eq!(parse_bool("enabled").unwrap(), true); [INFO] [stdout] 564 + assert!(parse_bool("enabled").unwrap()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/commands/config.rs:566:9 [INFO] [stdout] | [INFO] [stdout] 566 | assert_eq!(parse_bool("false").unwrap(), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 566 - assert_eq!(parse_bool("false").unwrap(), false); [INFO] [stdout] 566 + assert!(!parse_bool("false").unwrap()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/commands/config.rs:567:9 [INFO] [stdout] | [INFO] [stdout] 567 | assert_eq!(parse_bool("no").unwrap(), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 567 - assert_eq!(parse_bool("no").unwrap(), false); [INFO] [stdout] 567 + assert!(!parse_bool("no").unwrap()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/commands/config.rs:568:9 [INFO] [stdout] | [INFO] [stdout] 568 | assert_eq!(parse_bool("0").unwrap(), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 568 - assert_eq!(parse_bool("0").unwrap(), false); [INFO] [stdout] 568 + assert!(!parse_bool("0").unwrap()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/commands/config.rs:569:9 [INFO] [stdout] | [INFO] [stdout] 569 | assert_eq!(parse_bool("off").unwrap(), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 569 - assert_eq!(parse_bool("off").unwrap(), false); [INFO] [stdout] 569 + assert!(!parse_bool("off").unwrap()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/commands/config.rs:570:9 [INFO] [stdout] | [INFO] [stdout] 570 | assert_eq!(parse_bool("disabled").unwrap(), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 570 - assert_eq!(parse_bool("disabled").unwrap(), false); [INFO] [stdout] 570 + assert!(!parse_bool("disabled").unwrap()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/google.rs:787:58 [INFO] [stdout] | [INFO] [stdout] 787 | if let Ok(content) = std::fs::read_to_string(&service_account_file) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: change this to: `service_account_file` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/google.rs:1146:22 [INFO] [stdout] | [INFO] [stdout] 1146 | wtr.write_record(&["url", "status", "last_updated", "notification_type"]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["url", "status", "last_updated", "notification_type"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/google.rs:1168:34 [INFO] [stdout] | [INFO] [stdout] 1168 | wtr.write_record(&[url, "indexed", &last_update, ¬ification_type]) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `[url, "indexed", &last_update, ¬ification_type]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/google.rs:1174:34 [INFO] [stdout] | [INFO] [stdout] 1174 | wtr.write_record(&[url, "not_found", "", ""]).map_err(|e| { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `[url, "not_found", "", ""]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/commands/submit.rs:572:29 [INFO] [stdout] | [INFO] [stdout] 572 | println!(" {} {}", "Failed:", result.total_failed()); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stdout] = note: `#[warn(clippy::print_literal)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 572 - println!(" {} {}", "Failed:", result.total_failed()); [INFO] [stdout] 572 + println!(" Failed: {}", result.total_failed()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/history.rs:410:22 [INFO] [stdout] | [INFO] [stdout] 410 | wtr.write_record(&[ [INFO] [stdout] | ______________________^ [INFO] [stdout] 411 | | "id", [INFO] [stdout] 412 | | "url", [INFO] [stdout] 413 | | "api", [INFO] [stdout] ... | [INFO] [stdout] 418 | | "submitted_at", [INFO] [stdout] 419 | | ]) [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 410 ~ wtr.write_record([ [INFO] [stdout] 411 + "id", [INFO] [stdout] 412 + "url", [INFO] [stdout] 413 + "api", [INFO] [stdout] 414 + "action", [INFO] [stdout] 415 + "status", [INFO] [stdout] 416 + "response_code", [INFO] [stdout] 417 + "response_message", [INFO] [stdout] 418 + "submitted_at", [INFO] [stdout] 419 ~ ]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/history.rs:619:22 [INFO] [stdout] | [INFO] [stdout] 619 | wtr.write_record(&[ [INFO] [stdout] | ______________________^ [INFO] [stdout] 620 | | "id", [INFO] [stdout] 621 | | "url", [INFO] [stdout] 622 | | "api", [INFO] [stdout] ... | [INFO] [stdout] 627 | | "submitted_at", [INFO] [stdout] 628 | | ]) [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 619 ~ wtr.write_record([ [INFO] [stdout] 620 + "id", [INFO] [stdout] 621 + "url", [INFO] [stdout] 622 + "api", [INFO] [stdout] 623 + "action", [INFO] [stdout] 624 + "status", [INFO] [stdout] 625 + "response_code", [INFO] [stdout] 626 + "response_message", [INFO] [stdout] 627 + "submitted_at", [INFO] [stdout] 628 ~ ]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/commands/watch.rs:133:5 [INFO] [stdout] | [INFO] [stdout] 133 | / if args.daemon { [INFO] [stdout] 134 | | if !cli.quiet { [INFO] [stdout] 135 | | println!( [INFO] [stdout] 136 | | "{}", [INFO] [stdout] ... | [INFO] [stdout] 141 | | } [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] 133 ~ if args.daemon [INFO] [stdout] 134 ~ && !cli.quiet { [INFO] [stdout] 135 | println!( [INFO] [stdout] ... [INFO] [stdout] 139 | println!(); [INFO] [stdout] 140 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: stripping a prefix manually [INFO] [stdout] --> src/config/loader.rs:224:34 [INFO] [stdout] | [INFO] [stdout] 224 | return home.join(&path_str[2..]); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the prefix was tested here [INFO] [stdout] --> src/config/loader.rs:222:9 [INFO] [stdout] | [INFO] [stdout] 222 | if path_str.starts_with("~/") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_strip [INFO] [stdout] = note: `#[warn(clippy::manual_strip)]` on by default [INFO] [stdout] help: try using the `strip_prefix` method [INFO] [stdout] | [INFO] [stdout] 222 ~ if let Some() = path_str.strip_prefix("~/") { [INFO] [stdout] 223 | if let Some(home) = home_dir() { [INFO] [stdout] 224 ~ return home.join(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> src/config/settings.rs:38:1 [INFO] [stdout] | [INFO] [stdout] 38 | / impl Default for Settings { [INFO] [stdout] 39 | | fn default() -> Self { [INFO] [stdout] 40 | | Self { [INFO] [stdout] 41 | | google: None, [INFO] [stdout] ... | [INFO] [stdout] 50 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] = note: `#[warn(clippy::derivable_impls)]` on by default [INFO] [stdout] help: replace the manual implementation with a derive attribute [INFO] [stdout] | [INFO] [stdout] 8 + #[derive(Default)] [INFO] [stdout] 9 | pub struct Settings { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> src/config/settings.rs:106:1 [INFO] [stdout] | [INFO] [stdout] 106 | / impl Default for GoogleAuthConfig { [INFO] [stdout] 107 | | fn default() -> Self { [INFO] [stdout] 108 | | Self { [INFO] [stdout] 109 | | service_account_file: None, [INFO] [stdout] ... | [INFO] [stdout] 112 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] help: replace the manual implementation with a derive attribute [INFO] [stdout] | [INFO] [stdout] 100 + #[derive(Default)] [INFO] [stdout] 101 | pub struct GoogleAuthConfig { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/config/validation.rs:224:12 [INFO] [stdout] | [INFO] [stdout] 224 | if !json.get(field).is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `json.get(field).is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `from_str` can be confused for the standard trait method `std::str::FromStr::from_str` [INFO] [stdout] --> src/database/models.rs:31:5 [INFO] [stdout] | [INFO] [stdout] 31 | / pub fn from_str(s: &str) -> Result { [INFO] [stdout] 32 | | match s.to_lowercase().as_str() { [INFO] [stdout] 33 | | "google" => Ok(ApiType::Google), [INFO] [stdout] 34 | | "indexnow" => Ok(ApiType::IndexNow), [INFO] [stdout] ... | [INFO] [stdout] 37 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: consider implementing the trait `std::str::FromStr` or choosing a less ambiguous method name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stdout] = note: `#[warn(clippy::should_implement_trait)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `from_str` can be confused for the standard trait method `std::str::FromStr::from_str` [INFO] [stdout] --> src/database/models.rs:66:5 [INFO] [stdout] | [INFO] [stdout] 66 | / pub fn from_str(s: &str) -> Result { [INFO] [stdout] 67 | | match s { [INFO] [stdout] 68 | | "URL_UPDATED" => Ok(ActionType::UrlUpdated), [INFO] [stdout] 69 | | "URL_DELETED" => Ok(ActionType::UrlDeleted), [INFO] [stdout] ... | [INFO] [stdout] 72 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: consider implementing the trait `std::str::FromStr` or choosing a less ambiguous method name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `from_str` can be confused for the standard trait method `std::str::FromStr::from_str` [INFO] [stdout] --> src/database/models.rs:101:5 [INFO] [stdout] | [INFO] [stdout] 101 | / pub fn from_str(s: &str) -> Result { [INFO] [stdout] 102 | | match s.to_lowercase().as_str() { [INFO] [stdout] 103 | | "success" => Ok(SubmissionStatus::Success), [INFO] [stdout] 104 | | "failed" => Ok(SubmissionStatus::Failed), [INFO] [stdout] ... | [INFO] [stdout] 107 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: consider implementing the trait `std::str::FromStr` or choosing a less ambiguous method name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/database/queries.rs:198:13 [INFO] [stdout] | [INFO] [stdout] 198 | |row| SubmissionRecord::from_row(row), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `SubmissionRecord::from_row` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/database/queries.rs:253:43 [INFO] [stdout] | [INFO] [stdout] 253 | .query_map(param_refs.as_slice(), |row| SubmissionRecord::from_row(row)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `SubmissionRecord::from_row` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/commands/submit.rs:572:29 [INFO] [stdout] | [INFO] [stdout] 572 | println!(" {} {}", "Failed:", result.total_failed()); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stdout] = note: `#[warn(clippy::print_literal)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 572 - println!(" {} {}", "Failed:", result.total_failed()); [INFO] [stdout] 572 + println!(" Failed: {}", result.total_failed()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: items after a test module [INFO] [stdout] --> src/commands/validate.rs:356:1 [INFO] [stdout] | [INFO] [stdout] 356 | mod tests { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 365 | async fn verify_indexnow_key_file(config: &IndexNowConfig) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#items_after_test_module [INFO] [stdout] = note: `#[warn(clippy::items_after_test_module)]` on by default [INFO] [stdout] = help: move the items to before the test module was defined [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `true` [INFO] [stdout] --> src/commands/validate.rs:361:9 [INFO] [stdout] | [INFO] [stdout] 361 | assert!(true); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: remove the assertion [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/commands/watch.rs:133:5 [INFO] [stdout] | [INFO] [stdout] 133 | / if args.daemon { [INFO] [stdout] 134 | | if !cli.quiet { [INFO] [stdout] 135 | | println!( [INFO] [stdout] 136 | | "{}", [INFO] [stdout] ... | [INFO] [stdout] 141 | | } [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] 133 ~ if args.daemon [INFO] [stdout] 134 ~ && !cli.quiet { [INFO] [stdout] 135 | println!( [INFO] [stdout] ... [INFO] [stdout] 139 | println!(); [INFO] [stdout] 140 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this call to `as_ref.map(...)` does nothing [INFO] [stdout] --> src/services/batch_submitter.rs:390:26 [INFO] [stdout] | [INFO] [stdout] 390 | let pb = progress.as_ref().map(|p| p.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `progress.clone()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stdout] = note: `#[warn(clippy::useless_asref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: stripping a prefix manually [INFO] [stdout] --> src/config/loader.rs:224:34 [INFO] [stdout] | [INFO] [stdout] 224 | return home.join(&path_str[2..]); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the prefix was tested here [INFO] [stdout] --> src/config/loader.rs:222:9 [INFO] [stdout] | [INFO] [stdout] 222 | if path_str.starts_with("~/") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_strip [INFO] [stdout] = note: `#[warn(clippy::manual_strip)]` on by default [INFO] [stdout] help: try using the `strip_prefix` method [INFO] [stdout] | [INFO] [stdout] 222 ~ if let Some() = path_str.strip_prefix("~/") { [INFO] [stdout] 223 | if let Some(home) = home_dir() { [INFO] [stdout] 224 ~ return home.join(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> src/config/settings.rs:38:1 [INFO] [stdout] | [INFO] [stdout] 38 | / impl Default for Settings { [INFO] [stdout] 39 | | fn default() -> Self { [INFO] [stdout] 40 | | Self { [INFO] [stdout] 41 | | google: None, [INFO] [stdout] ... | [INFO] [stdout] 50 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] = note: `#[warn(clippy::derivable_impls)]` on by default [INFO] [stdout] help: replace the manual implementation with a derive attribute [INFO] [stdout] | [INFO] [stdout] 8 + #[derive(Default)] [INFO] [stdout] 9 | pub struct Settings { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> src/config/settings.rs:106:1 [INFO] [stdout] | [INFO] [stdout] 106 | / impl Default for GoogleAuthConfig { [INFO] [stdout] 107 | | fn default() -> Self { [INFO] [stdout] 108 | | Self { [INFO] [stdout] 109 | | service_account_file: None, [INFO] [stdout] ... | [INFO] [stdout] 112 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] help: replace the manual implementation with a derive attribute [INFO] [stdout] | [INFO] [stdout] 100 + #[derive(Default)] [INFO] [stdout] 101 | pub struct GoogleAuthConfig { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `unwrap_or_else` to construct default value [INFO] [stdout] --> src/services/history_manager.rs:421:14 [INFO] [stdout] | [INFO] [stdout] 421 | .unwrap_or_else(SubmissionFilters::new); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] = note: `#[warn(clippy::unwrap_or_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `unwrap_or_else` to construct default value [INFO] [stdout] --> src/services/history_manager.rs:471:18 [INFO] [stdout] | [INFO] [stdout] 471 | .unwrap_or_else(SubmissionFilters::new); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `unwrap_or_else` to construct default value [INFO] [stdout] --> src/services/history_manager.rs:479:18 [INFO] [stdout] | [INFO] [stdout] 479 | .unwrap_or_else(SubmissionFilters::new); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `unwrap_or_else` to construct default value [INFO] [stdout] --> src/services/history_manager.rs:587:14 [INFO] [stdout] | [INFO] [stdout] 587 | .unwrap_or_else(SubmissionFilters::new); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/services/history_manager.rs:610:27 [INFO] [stdout] | [INFO] [stdout] 610 | .write_record(&[ [INFO] [stdout] | ___________________________^ [INFO] [stdout] 611 | | "id", [INFO] [stdout] 612 | | "url", [INFO] [stdout] 613 | | "api", [INFO] [stdout] ... | [INFO] [stdout] 619 | | "metadata", [INFO] [stdout] 620 | | ]) [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 610 ~ .write_record([ [INFO] [stdout] 611 + "id", [INFO] [stdout] 612 + "url", [INFO] [stdout] 613 + "api", [INFO] [stdout] 614 + "action", [INFO] [stdout] 615 + "status", [INFO] [stdout] 616 + "response_code", [INFO] [stdout] 617 + "response_message", [INFO] [stdout] 618 + "submitted_at", [INFO] [stdout] 619 + "metadata", [INFO] [stdout] 620 ~ ]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `unwrap_or_else` to construct default value [INFO] [stdout] --> src/services/history_manager.rs:702:14 [INFO] [stdout] | [INFO] [stdout] 702 | .unwrap_or_else(SubmissionFilters::new); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/config/validation.rs:224:12 [INFO] [stdout] | [INFO] [stdout] 224 | if !json.get(field).is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `json.get(field).is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enclosing `Some` and `?` operator are unneeded [INFO] [stdout] --> src/services/sitemap_parser.rs:443:20 [INFO] [stdout] | [INFO] [stdout] 443 | return Some( [INFO] [stdout] | ____________________^ [INFO] [stdout] 444 | | naive_date [INFO] [stdout] 445 | | .and_hms_opt(0, 0, 0)? [INFO] [stdout] 446 | | .and_local_timezone(Utc) [INFO] [stdout] 447 | | .single()?, [INFO] [stdout] 448 | | ); [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] = note: `#[warn(clippy::needless_question_mark)]` on by default [INFO] [stdout] help: remove the enclosing `Some` and `?` operator [INFO] [stdout] | [INFO] [stdout] 443 ~ return naive_date [INFO] [stdout] 444 | .and_hms_opt(0, 0, 0)? [INFO] [stdout] 445 | .and_local_timezone(Utc) [INFO] [stdout] 446 ~ .single(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> src/services/url_processor.rs:257:37 [INFO] [stdout] | [INFO] [stdout] 257 | if let Some(last_segment) = path.split('/').last() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] = note: `#[warn(clippy::double_ended_iterator_last)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 257 - if let Some(last_segment) = path.split('/').last() { [INFO] [stdout] 257 + if let Some(last_segment) = path.split('/').next_back() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field assignment outside of initializer for an instance created with Default::default() [INFO] [stdout] --> src/config/validation.rs:446:9 [INFO] [stdout] | [INFO] [stdout] 446 | config.api_key = "a1b2c3d4e5f6g7h8".to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `config::settings::IndexNowConfig { api_key: "a1b2c3d4e5f6g7h8".to_string(), key_location: "https://example.com/key.txt".to_string(), endpoints: vec!["https://api.indexnow.org/indexnow".to_string()], ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> src/config/validation.rs:445:9 [INFO] [stdout] | [INFO] [stdout] 445 | let mut config = IndexNowConfig::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#field_reassign_with_default [INFO] [stdout] = note: `#[warn(clippy::field_reassign_with_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field assignment outside of initializer for an instance created with Default::default() [INFO] [stdout] --> src/config/validation.rs:453:9 [INFO] [stdout] | [INFO] [stdout] 453 | config.api_key = "short".to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `config::settings::IndexNowConfig { api_key: "short".to_string(), key_location: "https://example.com/key.txt".to_string(), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> src/config/validation.rs:452:9 [INFO] [stdout] | [INFO] [stdout] 452 | let mut config = IndexNowConfig::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#field_reassign_with_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field assignment outside of initializer for an instance created with Default::default() [INFO] [stdout] --> src/config/validation.rs:459:9 [INFO] [stdout] | [INFO] [stdout] 459 | config.api_key = "invalid-key-with-dashes".to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `config::settings::IndexNowConfig { api_key: "invalid-key-with-dashes".to_string(), key_location: "https://example.com/key.txt".to_string(), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> src/config/validation.rs:458:9 [INFO] [stdout] | [INFO] [stdout] 458 | let mut config = IndexNowConfig::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#field_reassign_with_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field assignment outside of initializer for an instance created with Default::default() [INFO] [stdout] --> src/config/validation.rs:467:9 [INFO] [stdout] | [INFO] [stdout] 467 | settings.google = Some(GoogleConfig::default()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `config::settings::Settings { google: Some(GoogleConfig::default()), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> src/config/validation.rs:466:9 [INFO] [stdout] | [INFO] [stdout] 466 | let mut settings = Settings::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#field_reassign_with_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field assignment outside of initializer for an instance created with Default::default() [INFO] [stdout] --> src/config/validation.rs:485:9 [INFO] [stdout] | [INFO] [stdout] 485 | indexnow.api_key = "abcd1234".to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `config::settings::IndexNowConfig { api_key: "abcd1234".to_string(), key_location: "https://example.com/abcd1234.txt".to_string(), endpoints: vec!["https://api.indexnow.org/indexnow".to_string()], ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> src/config/validation.rs:484:9 [INFO] [stdout] | [INFO] [stdout] 484 | let mut indexnow = IndexNowConfig::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#field_reassign_with_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion has a constant value [INFO] [stdout] --> src/constants.rs:392:9 [INFO] [stdout] | [INFO] [stdout] 392 | assert!(GOOGLE_QUOTA_PUBLISH_PER_DAY > 0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider moving this into a const block: `const { assert!(..) }` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion has a constant value [INFO] [stdout] --> src/constants.rs:393:9 [INFO] [stdout] | [INFO] [stdout] 393 | assert!(GOOGLE_QUOTA_GET_METADATA_PER_MINUTE > 0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider moving this into a const block: `const { assert!(..) }` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion has a constant value [INFO] [stdout] --> src/constants.rs:394:9 [INFO] [stdout] | [INFO] [stdout] 394 | assert!(GOOGLE_QUOTA_TOTAL_PER_MINUTE > GOOGLE_QUOTA_GET_METADATA_PER_MINUTE); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider moving this into a const block: `const { assert!(..) }` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion has a constant value [INFO] [stdout] --> src/constants.rs:399:9 [INFO] [stdout] | [INFO] [stdout] 399 | assert!(INDEXNOW_MAX_URLS_PER_REQUEST == 10_000); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider moving this into a const block: `const { assert!(..) }` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion has a constant value [INFO] [stdout] --> src/constants.rs:400:9 [INFO] [stdout] | [INFO] [stdout] 400 | assert!(INDEXNOW_DEFAULT_BATCH_SIZE <= INDEXNOW_MAX_URLS_PER_REQUEST); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider moving this into a const block: `const { assert!(..) }` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion has a constant value [INFO] [stdout] --> src/constants.rs:405:9 [INFO] [stdout] | [INFO] [stdout] 405 | assert!(SITEMAP_MAX_URLS == 50_000); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider moving this into a const block: `const { assert!(..) }` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion has a constant value [INFO] [stdout] --> src/constants.rs:406:9 [INFO] [stdout] | [INFO] [stdout] 406 | assert!(SITEMAP_MAX_SIZE_BYTES == 52_428_800); // 50MB [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider moving this into a const block: `const { assert!(..) }` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion has a constant value [INFO] [stdout] --> src/constants.rs:411:9 [INFO] [stdout] | [INFO] [stdout] 411 | assert!(INDEXNOW_KEY_MIN_LENGTH == 8); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider moving this into a const block: `const { assert!(..) }` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion has a constant value [INFO] [stdout] --> src/constants.rs:412:9 [INFO] [stdout] | [INFO] [stdout] 412 | assert!(INDEXNOW_KEY_MAX_LENGTH == 128); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider moving this into a const block: `const { assert!(..) }` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion has a constant value [INFO] [stdout] --> src/constants.rs:413:9 [INFO] [stdout] | [INFO] [stdout] 413 | assert!(INDEXNOW_KEY_RECOMMENDED_LENGTH >= INDEXNOW_KEY_MIN_LENGTH); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider moving this into a const block: `const { assert!(..) }` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion has a constant value [INFO] [stdout] --> src/constants.rs:414:9 [INFO] [stdout] | [INFO] [stdout] 414 | assert!(INDEXNOW_KEY_RECOMMENDED_LENGTH <= INDEXNOW_KEY_MAX_LENGTH); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider moving this into a const block: `const { assert!(..) }` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion has a constant value [INFO] [stdout] --> src/constants.rs:426:9 [INFO] [stdout] | [INFO] [stdout] 426 | assert!(DEFAULT_MAX_RETRIES >= 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider moving this into a const block: `const { assert!(..) }` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion has a constant value [INFO] [stdout] --> src/constants.rs:427:9 [INFO] [stdout] | [INFO] [stdout] 427 | assert!(DEFAULT_BACKOFF_FACTOR > 1.0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider moving this into a const block: `const { assert!(..) }` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion has a constant value [INFO] [stdout] --> src/constants.rs:454:9 [INFO] [stdout] | [INFO] [stdout] 454 | assert!(MAX_URL_LENGTH == 2048); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider moving this into a const block: `const { assert!(..) }` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `from_str` can be confused for the standard trait method `std::str::FromStr::from_str` [INFO] [stdout] --> src/database/models.rs:31:5 [INFO] [stdout] | [INFO] [stdout] 31 | / pub fn from_str(s: &str) -> Result { [INFO] [stdout] 32 | | match s.to_lowercase().as_str() { [INFO] [stdout] 33 | | "google" => Ok(ApiType::Google), [INFO] [stdout] 34 | | "indexnow" => Ok(ApiType::IndexNow), [INFO] [stdout] ... | [INFO] [stdout] 37 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: consider implementing the trait `std::str::FromStr` or choosing a less ambiguous method name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stdout] = note: `#[warn(clippy::should_implement_trait)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `from_str` can be confused for the standard trait method `std::str::FromStr::from_str` [INFO] [stdout] --> src/database/models.rs:66:5 [INFO] [stdout] | [INFO] [stdout] 66 | / pub fn from_str(s: &str) -> Result { [INFO] [stdout] 67 | | match s { [INFO] [stdout] 68 | | "URL_UPDATED" => Ok(ActionType::UrlUpdated), [INFO] [stdout] 69 | | "URL_DELETED" => Ok(ActionType::UrlDeleted), [INFO] [stdout] ... | [INFO] [stdout] 72 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: consider implementing the trait `std::str::FromStr` or choosing a less ambiguous method name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `from_str` can be confused for the standard trait method `std::str::FromStr::from_str` [INFO] [stdout] --> src/database/models.rs:101:5 [INFO] [stdout] | [INFO] [stdout] 101 | / pub fn from_str(s: &str) -> Result { [INFO] [stdout] 102 | | match s.to_lowercase().as_str() { [INFO] [stdout] 103 | | "success" => Ok(SubmissionStatus::Success), [INFO] [stdout] 104 | | "failed" => Ok(SubmissionStatus::Failed), [INFO] [stdout] ... | [INFO] [stdout] 107 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: consider implementing the trait `std::str::FromStr` or choosing a less ambiguous method name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: stripping a prefix manually [INFO] [stdout] --> src/utils/file.rs:346:20 [INFO] [stdout] | [INFO] [stdout] 346 | let rest = &path_str[2..]; // Skip "~/" [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the prefix was tested here [INFO] [stdout] --> src/utils/file.rs:342:5 [INFO] [stdout] | [INFO] [stdout] 342 | if path_str.starts_with("~/") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_strip [INFO] [stdout] help: try using the `strip_prefix` method [INFO] [stdout] | [INFO] [stdout] 342 ~ if let Some(rest) = path_str.strip_prefix("~/") { [INFO] [stdout] 343 | // Expand home directory [INFO] [stdout] 344 | let home = dirs::home_dir().context("Failed to determine home directory")?; [INFO] [stdout] 345 | [INFO] [stdout] 346 ~ // Skip "~/" [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/database/queries.rs:198:13 [INFO] [stdout] | [INFO] [stdout] 198 | |row| SubmissionRecord::from_row(row), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `SubmissionRecord::from_row` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/database/queries.rs:253:43 [INFO] [stdout] | [INFO] [stdout] 253 | .query_map(param_refs.as_slice(), |row| SubmissionRecord::from_row(row)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `SubmissionRecord::from_row` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this call to `as_ref.map(...)` does nothing [INFO] [stdout] --> src/services/batch_submitter.rs:390:26 [INFO] [stdout] | [INFO] [stdout] 390 | let pb = progress.as_ref().map(|p| p.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `progress.clone()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stdout] = note: `#[warn(clippy::useless_asref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `unwrap_or_else` to construct default value [INFO] [stdout] --> src/services/history_manager.rs:421:14 [INFO] [stdout] | [INFO] [stdout] 421 | .unwrap_or_else(SubmissionFilters::new); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] = note: `#[warn(clippy::unwrap_or_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `unwrap_or_else` to construct default value [INFO] [stdout] --> src/services/history_manager.rs:471:18 [INFO] [stdout] | [INFO] [stdout] 471 | .unwrap_or_else(SubmissionFilters::new); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `unwrap_or_else` to construct default value [INFO] [stdout] --> src/services/history_manager.rs:479:18 [INFO] [stdout] | [INFO] [stdout] 479 | .unwrap_or_else(SubmissionFilters::new); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `unwrap_or_else` to construct default value [INFO] [stdout] --> src/services/history_manager.rs:587:14 [INFO] [stdout] | [INFO] [stdout] 587 | .unwrap_or_else(SubmissionFilters::new); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/services/history_manager.rs:610:27 [INFO] [stdout] | [INFO] [stdout] 610 | .write_record(&[ [INFO] [stdout] | ___________________________^ [INFO] [stdout] 611 | | "id", [INFO] [stdout] 612 | | "url", [INFO] [stdout] 613 | | "api", [INFO] [stdout] ... | [INFO] [stdout] 619 | | "metadata", [INFO] [stdout] 620 | | ]) [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 610 ~ .write_record([ [INFO] [stdout] 611 + "id", [INFO] [stdout] 612 + "url", [INFO] [stdout] 613 + "api", [INFO] [stdout] 614 + "action", [INFO] [stdout] 615 + "status", [INFO] [stdout] 616 + "response_code", [INFO] [stdout] 617 + "response_message", [INFO] [stdout] 618 + "submitted_at", [INFO] [stdout] 619 + "metadata", [INFO] [stdout] 620 ~ ]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `unwrap_or_else` to construct default value [INFO] [stdout] --> src/services/history_manager.rs:702:14 [INFO] [stdout] | [INFO] [stdout] 702 | .unwrap_or_else(SubmissionFilters::new); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enclosing `Some` and `?` operator are unneeded [INFO] [stdout] --> src/services/sitemap_parser.rs:443:20 [INFO] [stdout] | [INFO] [stdout] 443 | return Some( [INFO] [stdout] | ____________________^ [INFO] [stdout] 444 | | naive_date [INFO] [stdout] 445 | | .and_hms_opt(0, 0, 0)? [INFO] [stdout] 446 | | .and_local_timezone(Utc) [INFO] [stdout] 447 | | .single()?, [INFO] [stdout] 448 | | ); [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] = note: `#[warn(clippy::needless_question_mark)]` on by default [INFO] [stdout] help: remove the enclosing `Some` and `?` operator [INFO] [stdout] | [INFO] [stdout] 443 ~ return naive_date [INFO] [stdout] 444 | .and_hms_opt(0, 0, 0)? [INFO] [stdout] 445 | .and_local_timezone(Utc) [INFO] [stdout] 446 ~ .single(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> src/services/url_processor.rs:257:37 [INFO] [stdout] | [INFO] [stdout] 257 | if let Some(last_segment) = path.split('/').last() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] = note: `#[warn(clippy::double_ended_iterator_last)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 257 - if let Some(last_segment) = path.split('/').last() { [INFO] [stdout] 257 + if let Some(last_segment) = path.split('/').next_back() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `unwrap()` on `Ok` value [INFO] [stdout] --> src/types/result.rs:115:20 [INFO] [stdout] | [INFO] [stdout] 115 | assert_eq!(result.unwrap(), 42); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: remove the `Ok` and `unwrap()` [INFO] [stdout] --> src/types/result.rs:113:35 [INFO] [stdout] | [INFO] [stdout] 113 | let result: Result = Ok(42); [INFO] [stdout] | ^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_literal_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_literal_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `unwrap()` on `Ok` value [INFO] [stdout] --> src/types/result.rs:134:20 [INFO] [stdout] | [INFO] [stdout] 134 | assert_eq!(result.unwrap(), "test"); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: remove the `Ok` and `unwrap()` [INFO] [stdout] --> src/types/result.rs:132:36 [INFO] [stdout] | [INFO] [stdout] 132 | let result: StringResult = Ok("test".to_string()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_literal_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `unwrap()` on `Ok` value [INFO] [stdout] --> src/types/result.rs:141:17 [INFO] [stdout] | [INFO] [stdout] 141 | assert!(result.unwrap()); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: remove the `Ok` and `unwrap()` [INFO] [stdout] --> src/types/result.rs:139:34 [INFO] [stdout] | [INFO] [stdout] 139 | let result: BoolResult = Ok(true); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_literal_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `unwrap()` on `Ok` value [INFO] [stdout] --> src/types/result.rs:148:20 [INFO] [stdout] | [INFO] [stdout] 148 | assert_eq!(result.unwrap(), Some(42)); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: remove the `Ok` and `unwrap()` [INFO] [stdout] --> src/types/result.rs:146:41 [INFO] [stdout] | [INFO] [stdout] 146 | let result: OptionResult = Ok(Some(42)); [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_literal_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `unwrap()` on `Ok` value [INFO] [stdout] --> src/types/result.rs:152:20 [INFO] [stdout] | [INFO] [stdout] 152 | assert_eq!(result.unwrap(), None); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: remove the `Ok` and `unwrap()` [INFO] [stdout] --> src/types/result.rs:150:41 [INFO] [stdout] | [INFO] [stdout] 150 | let result: OptionResult = Ok(None); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_literal_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `unwrap()` on `Ok` value [INFO] [stdout] --> src/types/result.rs:159:20 [INFO] [stdout] | [INFO] [stdout] 159 | assert_eq!(result.unwrap().len(), 2); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: remove the `Ok` and `unwrap()` [INFO] [stdout] --> src/types/result.rs:157:41 [INFO] [stdout] | [INFO] [stdout] 157 | let result: VecResult = Ok(vec!["a".to_string(), "b".to_string()]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_literal_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: stripping a prefix manually [INFO] [stdout] --> src/utils/file.rs:346:20 [INFO] [stdout] | [INFO] [stdout] 346 | let rest = &path_str[2..]; // Skip "~/" [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the prefix was tested here [INFO] [stdout] --> src/utils/file.rs:342:5 [INFO] [stdout] | [INFO] [stdout] 342 | if path_str.starts_with("~/") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_strip [INFO] [stdout] help: try using the `strip_prefix` method [INFO] [stdout] | [INFO] [stdout] 342 ~ if let Some(rest) = path_str.strip_prefix("~/") { [INFO] [stdout] 343 | // Expand home directory [INFO] [stdout] 344 | let home = dirs::home_dir().context("Failed to determine home directory")?; [INFO] [stdout] 345 | [INFO] [stdout] 346 ~ // Skip "~/" [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 50.82s [INFO] running `Command { std: "docker" "inspect" "51d49e70160c4775f11a7abbf5622f553c8cf9941d400199edb854eef73e36e4", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "51d49e70160c4775f11a7abbf5622f553c8cf9941d400199edb854eef73e36e4", kill_on_drop: false }` [INFO] [stdout] 51d49e70160c4775f11a7abbf5622f553c8cf9941d400199edb854eef73e36e4