[INFO] cloning repository https://github.com/Dicklesworthstone/beads_viewer_rust [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Dicklesworthstone/beads_viewer_rust" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FDicklesworthstone%2Fbeads_viewer_rust", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FDicklesworthstone%2Fbeads_viewer_rust'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 0010cd8b65215f6f1e5219f513c89c9c2f35954a [INFO] linting Dicklesworthstone/beads_viewer_rust against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FDicklesworthstone%2Fbeads_viewer_rust" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'... [INFO] [stderr] done. [INFO] removed /workspace/builds/worker-5-tc1/source/rust-toolchain.toml [INFO] started tweaking git repo https://github.com/Dicklesworthstone/beads_viewer_rust [INFO] finished tweaking git repo https://github.com/Dicklesworthstone/beads_viewer_rust [INFO] tweaked toml for git repo https://github.com/Dicklesworthstone/beads_viewer_rust written to /workspace/builds/worker-5-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/Dicklesworthstone/beads_viewer_rust 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/Dicklesworthstone/beads_viewer_rust 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 quote v1.0.44 [INFO] [stderr] Downloaded derive_builder_macro v0.20.2 [INFO] [stderr] Downloaded derive_builder v0.20.2 [INFO] [stderr] Downloaded gix-trace v0.1.18 [INFO] [stderr] Downloaded gix-glob v0.23.0 [INFO] [stderr] Downloaded gix-url v0.34.0 [INFO] [stderr] Downloaded gix-utils v0.3.1 [INFO] [stderr] Downloaded gix-pathspec v0.14.0 [INFO] [stderr] Downloaded unicode-bom v2.0.3 [INFO] [stderr] Downloaded gix-lock v20.0.1 [INFO] [stderr] Downloaded filetime v0.2.27 [INFO] [stderr] Downloaded gix-config-value v0.16.0 [INFO] [stderr] Downloaded pin-project-internal v1.1.10 [INFO] [stderr] Downloaded franken-kernel v0.2.6 [INFO] [stderr] Downloaded polling v3.11.0 [INFO] [stderr] Downloaded bincode_derive-next v2.1.0 [INFO] [stderr] Downloaded franken-decision v0.2.6 [INFO] [stderr] Downloaded predicates-tree v1.0.13 [INFO] [stderr] Downloaded fallible-streaming-iterator v0.1.9 [INFO] [stderr] Downloaded termtree v0.5.1 [INFO] [stderr] Downloaded franken-evidence v0.2.6 [INFO] [stderr] Downloaded socket2 v0.6.2 [INFO] [stderr] Downloaded similar v2.7.0 [INFO] [stderr] Downloaded zerocopy-derive v0.8.39 [INFO] [stderr] Downloaded gix-pack v0.64.1 [INFO] [stderr] Downloaded derive_more-impl v2.1.1 [INFO] [stderr] Downloaded criterion v0.8.2 [INFO] [stderr] Downloaded rusqlite v0.38.0 [INFO] [stderr] Downloaded clap_builder v4.5.59 [INFO] [stderr] Downloaded imara-diff v0.1.8 [INFO] [stderr] Downloaded ftui-layout v0.2.1 [INFO] [stderr] Downloaded ftui-text v0.2.1 [INFO] [stderr] Downloaded ftui-core v0.2.1 [INFO] [stderr] Downloaded chrono v0.4.43 [INFO] [stderr] Downloaded tracing-subscriber v0.3.22 [INFO] [stderr] Downloaded zerocopy v0.8.39 [INFO] [stderr] Downloaded nix v0.31.1 [INFO] [stderr] Downloaded ftui-render v0.2.1 [INFO] [stderr] Downloaded regex-syntax v0.8.9 [INFO] [stderr] Downloaded crossterm v0.29.0 [INFO] [stderr] Downloaded insta v1.46.3 [INFO] [stderr] Downloaded bstr v1.12.1 [INFO] [stderr] Downloaded ropey v1.6.1 [INFO] [stderr] Downloaded tracing v0.1.44 [INFO] [stderr] Downloaded ftui-widgets v0.2.1 [INFO] [stderr] Downloaded jiff v0.2.20 [INFO] [stderr] Downloaded libc v0.2.180 [INFO] [stderr] Downloaded ftui-runtime v0.2.1 [INFO] [stderr] Downloaded sha1-checked v0.10.0 [INFO] [stderr] Downloaded syn v2.0.116 [INFO] [stderr] Downloaded derive_more v2.1.1 [INFO] [stderr] Downloaded ftui-style v0.2.1 [INFO] [stderr] Downloaded cc v1.2.56 [INFO] [stderr] Downloaded web-sys v0.3.85 [INFO] [stderr] Downloaded clap v4.5.59 [INFO] [stderr] Downloaded tracing-core v0.1.36 [INFO] [stderr] Downloaded tru v0.2.0 [INFO] [stderr] Downloaded gix-protocol v0.55.0 [INFO] [stderr] Downloaded gix-diff v0.57.1 [INFO] [stderr] Downloaded gix-dir v0.19.0 [INFO] [stderr] Downloaded yansi v1.0.1 [INFO] [stderr] Downloaded petgraph v0.8.3 [INFO] [stderr] Downloaded pretty_assertions v1.4.1 [INFO] [stderr] Downloaded url v2.5.8 [INFO] [stderr] Downloaded uuid v1.22.0 [INFO] [stderr] Downloaded arc-swap v1.8.2 [INFO] [stderr] Downloaded gix-odb v0.74.0 [INFO] [stderr] Downloaded gix-transport v0.52.1 [INFO] [stderr] Downloaded gix-status v0.24.0 [INFO] [stderr] Downloaded gix-ref v0.57.0 [INFO] [stderr] Downloaded wasmparser v0.244.0 [INFO] [stderr] Downloaded gix v0.77.0 [INFO] [stderr] Downloaded ftui-extras v0.2.1 [INFO] [stderr] Downloaded objc2-io-kit v0.3.2 [INFO] [stderr] Downloaded diff v0.1.13 [INFO] [stderr] Downloaded clap_complete v4.5.66 [INFO] [stderr] Downloaded tracing-attributes v0.1.31 [INFO] [stderr] Downloaded clru v0.6.2 [INFO] [stderr] Downloaded gix-discover v0.45.0 [INFO] [stderr] Downloaded wit-component v0.244.0 [INFO] [stderr] Downloaded slab v0.4.12 [INFO] [stderr] Downloaded ftui-i18n v0.2.1 [INFO] [stderr] Downloaded ftui v0.2.1 [INFO] [stderr] Downloaded predicates v3.1.4 [INFO] [stderr] Downloaded bincode-next v2.1.0 [INFO] [stderr] Downloaded rsqlite-vfs v0.1.0 [INFO] [stderr] Downloaded unsafe-libyaml v0.2.11 [INFO] [stderr] Downloaded serde_yaml v0.9.34+deprecated [INFO] [stderr] Downloaded clap_derive v4.5.55 [INFO] [stderr] Downloaded dunce v1.0.5 [INFO] [stderr] Downloaded gix-filter v0.24.1 [INFO] [stderr] Downloaded zlib-rs v0.5.5 [INFO] [stderr] Downloaded sysinfo v0.37.2 [INFO] [stderr] Downloaded time v0.3.45 [INFO] [stderr] Downloaded rmp-serde v1.3.1 [INFO] [stderr] Downloaded criterion-plot v0.8.2 [INFO] [stderr] Downloaded ftui-backend v0.2.1 [INFO] [stderr] Downloaded convert_case v0.10.0 [INFO] [stderr] Downloaded litrs v1.0.0 [INFO] [stderr] Downloaded lru v0.16.3 [INFO] [stderr] Downloaded str_indices v0.4.4 [INFO] [stderr] Downloaded fixedbitset v0.5.7 [INFO] [stderr] Downloaded difflib v0.4.0 [INFO] [stderr] Downloaded ryu v1.0.23 [INFO] [stderr] Downloaded iana-time-zone v0.1.65 [INFO] [stderr] Downloaded tracing-serde v0.2.0 [INFO] [stderr] Downloaded gix-shallow v0.7.0 [INFO] [stderr] Downloaded shell-words v1.1.1 [INFO] [stderr] Downloaded winnow v0.7.14 [INFO] [stderr] Downloaded objc2-core-foundation v0.3.2 [INFO] [stderr] Downloaded assert_cmd v2.1.2 [INFO] [stderr] Downloaded virtue-next v0.1.2 [INFO] [stderr] Downloaded unty-next v0.1.0 [INFO] [stderr] Downloaded gix-packetline v0.20.0 [INFO] [stderr] Downloaded gix-config v0.50.0 [INFO] [stderr] Downloaded portable-atomic v1.13.1 [INFO] [stderr] Downloaded page_size v0.6.0 [INFO] [stderr] Downloaded unicode-display-width v0.3.0 [INFO] [stderr] Downloaded float-cmp v0.10.0 [INFO] [stderr] Downloaded fallible-iterator v0.3.0 [INFO] [stderr] Downloaded hashlink v0.11.0 [INFO] [stderr] Downloaded gix-sec v0.12.2 [INFO] [stderr] Downloaded wit-parser v0.244.0 [INFO] [stderr] Downloaded ntapi v0.4.3 [INFO] [stderr] Downloaded crossbeam-queue v0.3.12 [INFO] [stderr] Downloaded alloca v0.4.0 [INFO] [stderr] Downloaded document-features v0.2.12 [INFO] [stderr] Downloaded rustc-hash v2.1.1 [INFO] [stderr] Downloaded predicates-core v1.0.10 [INFO] [stderr] Downloaded clap_lex v1.0.0 [INFO] [stderr] Downloaded gix-command v0.6.5 [INFO] [stderr] Downloaded wasip3 v0.4.0+wasi-0.3.0-rc-2026-01-06 [INFO] [stderr] Downloaded unicode-normalization v0.1.25 [INFO] [stderr] Downloaded normalize-line-endings v0.3.0 [INFO] [stderr] Downloaded jiff-static v0.2.20 [INFO] [stderr] Downloaded prodash v30.0.1 [INFO] [stderr] Downloaded pin-project v1.1.10 [INFO] [stderr] Downloaded prettyplease v0.2.37 [INFO] [stderr] Downloaded wasm-encoder v0.244.0 [INFO] [stderr] Downloaded wit-bindgen-rust v0.51.0 [INFO] [stderr] Downloaded jiff-tzdb v0.1.5 [INFO] [stderr] Downloaded portable-atomic-util v0.2.5 [INFO] [stderr] Downloaded heapless v0.8.0 [INFO] [stderr] Downloaded wasm-bindgen v0.2.108 [INFO] [stderr] Downloaded js-sys v0.3.85 [INFO] [stderr] Downloaded concurrent-queue v2.5.0 [INFO] [stderr] Downloaded rmp v0.8.15 [INFO] [stderr] Downloaded maybe-async v0.2.10 [INFO] [stderr] Downloaded gix-revision v0.39.0 [INFO] [stderr] Downloaded gix-refspec v0.35.0 [INFO] [stderr] Downloaded gix-submodule v0.24.0 [INFO] [stderr] Downloaded getrandom v0.4.1 [INFO] [stderr] Downloaded gix-index v0.45.1 [INFO] [stderr] Downloaded tinyvec v1.10.0 [INFO] [stderr] Downloaded gix-object v0.54.1 [INFO] [stderr] Downloaded gix-path v0.10.22 [INFO] [stderr] Downloaded camino v1.2.2 [INFO] [stderr] Downloaded windows-collections v0.2.0 [INFO] [stderr] Downloaded windows-core v0.61.2 [INFO] [stderr] Downloaded deranged v0.5.6 [INFO] [stderr] Downloaded asupersync v0.2.6 [INFO] [stderr] Downloaded wasm-bindgen-macro-support v0.2.108 [INFO] [stderr] Downloaded time-macros v0.2.25 [INFO] [stderr] Downloaded vergen v9.1.0 [INFO] [stderr] Downloaded vergen-gix v9.1.0 [INFO] [stderr] Downloaded kstring v2.0.2 [INFO] [stderr] Downloaded gix-attributes v0.29.0 [INFO] [stderr] Downloaded gix-ignore v0.18.0 [INFO] [stderr] Downloaded redox_syscall v0.7.1 [INFO] [stderr] Downloaded gix-fs v0.18.2 [INFO] [stderr] Downloaded signal-hook v0.4.3 [INFO] [stderr] Downloaded wit-bindgen-core v0.51.0 [INFO] [stderr] Downloaded tempfile v3.25.0 [INFO] [stderr] Downloaded gix-tempfile v20.0.1 [INFO] [stderr] Downloaded gix-commitgraph v0.31.0 [INFO] [stderr] Downloaded gix-revwalk v0.25.0 [INFO] [stderr] Downloaded gix-traverse v0.51.1 [INFO] [stderr] Downloaded memmap2 v0.9.10 [INFO] [stderr] Downloaded gix-features v0.45.2 [INFO] [stderr] Downloaded semver v1.0.27 [INFO] [stderr] Downloaded windows-future v0.2.1 [INFO] [stderr] Downloaded leb128fmt v0.1.0 [INFO] [stderr] Downloaded wasm-metadata v0.244.0 [INFO] [stderr] Downloaded gix-date v0.12.1 [INFO] [stderr] Downloaded gix-worktree v0.46.0 [INFO] [stderr] Downloaded signal-hook-registry v1.4.8 [INFO] [stderr] Downloaded foldhash v0.2.0 [INFO] [stderr] Downloaded zmij v1.0.21 [INFO] [stderr] Downloaded gix-chunk v0.4.12 [INFO] [stderr] Downloaded gix-actor v0.37.1 [INFO] [stderr] Downloaded jiff-tzdb-platform v0.1.3 [INFO] [stderr] Downloaded crypto-common v0.1.7 [INFO] [stderr] Downloaded gix-hash v0.21.2 [INFO] [stderr] Downloaded cargo_metadata v0.23.1 [INFO] [stderr] Downloaded vergen-lib v9.1.0 [INFO] [stderr] Downloaded gix-bitmap v0.2.16 [INFO] [stderr] Downloaded dashmap v6.1.0 [INFO] [stderr] Downloaded id-arena v2.3.0 [INFO] [stderr] Downloaded wit-bindgen-rust-macro v0.51.0 [INFO] [stderr] Downloaded hash32 v0.3.1 [INFO] [stderr] Downloaded faster-hex v0.10.0 [INFO] [stderr] Downloaded gix-hashtable v0.11.0 [INFO] [stderr] Downloaded windows-strings v0.4.2 [INFO] [stderr] Downloaded windows-link v0.1.3 [INFO] [stderr] Downloaded gix-quote v0.6.2 [INFO] [stderr] Downloaded wasm-bindgen-shared v0.2.108 [INFO] [stderr] Downloaded cargo-platform v0.3.0 [INFO] [stderr] Downloaded rustc_version v0.4.1 [INFO] [stderr] Downloaded windows-threading v0.1.0 [INFO] [stderr] Downloaded windows-result v0.3.4 [INFO] [stderr] Downloaded wasm-bindgen-macro v0.2.108 [INFO] [stderr] Downloaded time-core v0.1.7 [INFO] [stderr] Downloaded derive_builder_core v0.20.2 [INFO] [stderr] Downloaded windows-numerics v0.2.0 [INFO] [stderr] Downloaded gix-validate v0.10.1 [INFO] [stderr] Downloaded anyhow v1.0.101 [INFO] [stderr] Downloaded libsqlite3-sys v0.36.0 [INFO] [stderr] Downloaded sqlite-wasm-rs v0.5.2 [INFO] [stderr] Downloaded windows v0.61.3 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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] 43745528195eb437003c06828710227816941f00768f15e2a59272f11fd6ca8f [INFO] running `Command { std: "docker" "start" "-a" "43745528195eb437003c06828710227816941f00768f15e2a59272f11fd6ca8f", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "43745528195eb437003c06828710227816941f00768f15e2a59272f11fd6ca8f", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "43745528195eb437003c06828710227816941f00768f15e2a59272f11fd6ca8f", kill_on_drop: false }` [INFO] [stdout] 43745528195eb437003c06828710227816941f00768f15e2a59272f11fd6ca8f [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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] 466a9644b408afb6f21d0ce7070e6909c814cacce99be2e5ee8c83279d091b05 [INFO] running `Command { std: "docker" "start" "-a" "466a9644b408afb6f21d0ce7070e6909c814cacce99be2e5ee8c83279d091b05", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.106 [INFO] [stderr] Compiling quote v1.0.44 [INFO] [stderr] Compiling unicode-ident v1.0.24 [INFO] [stderr] Compiling libc v0.2.180 [INFO] [stderr] Compiling memchr v2.8.0 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling version_check v0.9.5 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Compiling regex-syntax v0.8.9 [INFO] [stderr] Compiling cfg-if v1.0.4 [INFO] [stderr] Compiling tinyvec_macros v0.1.1 [INFO] [stderr] Compiling smallvec v1.15.1 [INFO] [stderr] Compiling crc32fast v1.5.0 [INFO] [stderr] Compiling fastrand v2.3.0 [INFO] [stderr] Compiling typenum v1.19.0 [INFO] [stderr] Compiling scopeguard v1.2.0 [INFO] [stderr] Compiling tinyvec v1.10.0 [INFO] [stderr] Compiling gix-trace v0.1.18 [INFO] [stderr] Compiling once_cell v1.21.3 [INFO] [stderr] Compiling lock_api v0.4.14 [INFO] [stderr] Compiling same-file v1.0.6 [INFO] [stderr] Compiling zlib-rs v0.5.5 [INFO] [stderr] Compiling generic-array v0.14.7 [INFO] [stderr] Compiling bitflags v2.11.0 [INFO] [stderr] Compiling heapless v0.8.0 [INFO] [stderr] Compiling byteorder v1.5.0 [INFO] [stderr] Compiling stable_deref_trait v1.2.1 [INFO] [stderr] Compiling itoa v1.0.17 [INFO] [stderr] Compiling walkdir v2.5.0 [INFO] [stderr] Compiling hash32 v0.3.1 [INFO] [stderr] Compiling cpufeatures v0.2.17 [INFO] [stderr] Compiling crossbeam-utils v0.8.21 [INFO] [stderr] Compiling rustversion v1.0.22 [INFO] [stderr] Compiling aho-corasick v1.1.4 [INFO] [stderr] Compiling unicode-normalization v0.1.25 [INFO] [stderr] Compiling equivalent v1.0.2 [INFO] [stderr] Compiling getrandom v0.4.1 [INFO] [stderr] Compiling allocator-api2 v0.2.21 [INFO] [stderr] Compiling jiff v0.2.20 [INFO] [stderr] Compiling foldhash v0.2.0 [INFO] [stderr] Compiling winnow v0.7.14 [INFO] [stderr] Compiling rustix v1.1.3 [INFO] [stderr] Compiling linux-raw-sys v0.11.0 [INFO] [stderr] Compiling faster-hex v0.10.0 [INFO] [stderr] Compiling hashbrown v0.16.1 [INFO] [stderr] Compiling signal-hook v0.4.3 [INFO] [stderr] Compiling syn v2.0.116 [INFO] [stderr] Compiling hashbrown v0.14.5 [INFO] [stderr] Compiling memmap2 v0.9.10 [INFO] [stderr] Compiling errno v0.3.14 [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling block-buffer v0.10.4 [INFO] [stderr] Compiling crypto-common v0.1.7 [INFO] [stderr] Compiling zmij v1.0.21 [INFO] [stderr] Compiling unicode-bom v2.0.3 [INFO] [stderr] Compiling prodash v30.0.1 [INFO] [stderr] Compiling digest v0.10.7 [INFO] [stderr] Compiling dashmap v6.1.0 [INFO] [stderr] Compiling zerocopy v0.8.39 [INFO] [stderr] Compiling sha1 v0.10.6 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling static_assertions v1.1.0 [INFO] [stderr] Compiling kstring v2.0.2 [INFO] [stderr] Compiling sha1-checked v0.10.0 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Checking log v0.4.29 [INFO] [stderr] Compiling gix-sec v0.12.2 [INFO] [stderr] Compiling tempfile v3.25.0 [INFO] [stderr] Compiling strsim v0.11.1 [INFO] [stderr] Compiling unicode-segmentation v1.12.0 [INFO] [stderr] Compiling signal-hook v0.3.18 [INFO] [stderr] Compiling shell-words v1.1.1 [INFO] [stderr] Compiling filetime v0.2.27 [INFO] [stderr] Compiling getrandom v0.3.4 [INFO] [stderr] Checking mio v1.1.1 [INFO] [stderr] Compiling convert_case v0.10.0 [INFO] [stderr] Compiling ahash v0.8.12 [INFO] [stderr] Compiling litrs v1.0.0 [INFO] [stderr] Compiling autocfg v1.5.0 [INFO] [stderr] Compiling num-conv v0.1.0 [INFO] [stderr] Compiling anyhow v1.0.101 [INFO] [stderr] Compiling time-core v0.1.7 [INFO] [stderr] Compiling foldhash v0.1.5 [INFO] [stderr] Compiling percent-encoding v2.3.2 [INFO] [stderr] Compiling hashbrown v0.15.5 [INFO] [stderr] Checking signal-hook-mio v0.2.5 [INFO] [stderr] Checking tracing-core v0.1.36 [INFO] [stderr] Compiling encoding_rs v0.8.35 [INFO] [stderr] Compiling camino v1.2.2 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling document-features v0.2.12 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Checking web-time v1.1.0 [INFO] [stderr] Checking arc-swap v1.8.2 [INFO] [stderr] Compiling vergen-lib v9.1.0 [INFO] [stderr] Compiling clru v0.6.2 [INFO] [stderr] Compiling powerfmt v0.2.0 [INFO] [stderr] Compiling shlex v1.3.0 [INFO] [stderr] Compiling imara-diff v0.1.8 [INFO] [stderr] Compiling find-msvc-tools v0.1.9 [INFO] [stderr] Checking unicode-width v0.2.2 [INFO] [stderr] Compiling deranged v0.5.6 [INFO] [stderr] Checking indexmap v2.13.0 [INFO] [stderr] Checking unicode-display-width v0.3.0 [INFO] [stderr] Compiling cc v1.2.56 [INFO] [stderr] Compiling vergen v9.1.0 [INFO] [stderr] Compiling num_threads v0.1.7 [INFO] [stderr] Checking litemap v0.8.1 [INFO] [stderr] Compiling semver v1.0.27 [INFO] [stderr] Checking anstyle v1.0.13 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling darling_core v0.20.11 [INFO] [stderr] Checking pin-project-lite v0.2.16 [INFO] [stderr] Checking writeable v0.6.2 [INFO] [stderr] Compiling rustc_version v0.4.1 [INFO] [stderr] Compiling vergen-gix v9.1.0 [INFO] [stderr] Compiling sysinfo v0.37.2 [INFO] [stderr] Checking utf8parse v0.2.2 [INFO] [stderr] Checking bumpalo v3.19.1 [INFO] [stderr] Compiling icu_properties_data v2.1.2 [INFO] [stderr] Compiling icu_normalizer_data v2.1.1 [INFO] [stderr] Checking anstyle-parse v0.2.7 [INFO] [stderr] Checking colorchoice v1.0.4 [INFO] [stderr] Checking is_terminal_polyfill v1.70.2 [INFO] [stderr] Checking anstyle-query v1.1.5 [INFO] [stderr] Checking anstream v0.6.21 [INFO] [stderr] Checking rustc-hash v2.1.1 [INFO] [stderr] Checking str_indices v0.4.4 [INFO] [stderr] Checking clap_lex v1.0.0 [INFO] [stderr] Compiling heck v0.5.0 [INFO] [stderr] Checking either v1.15.0 [INFO] [stderr] Checking ropey v1.6.1 [INFO] [stderr] Checking lru v0.16.3 [INFO] [stderr] Checking simd-adler32 v0.3.8 [INFO] [stderr] Compiling vcpkg v0.2.15 [INFO] [stderr] Checking clap_builder v4.5.59 [INFO] [stderr] Compiling pkg-config v0.3.32 [INFO] [stderr] Checking lazy_static v1.5.0 [INFO] [stderr] Checking iana-time-zone v0.1.65 [INFO] [stderr] Checking ryu v1.0.23 [INFO] [stderr] Checking utf8_iter v1.0.4 [INFO] [stderr] Checking adler2 v2.0.1 [INFO] [stderr] Checking miniz_oxide v0.8.9 [INFO] [stderr] Checking form_urlencoded v1.2.2 [INFO] [stderr] Checking sharded-slab v0.1.7 [INFO] [stderr] Compiling time v0.3.45 [INFO] [stderr] Compiling bstr v1.12.1 [INFO] [stderr] Compiling regex v1.12.3 [INFO] [stderr] Checking crossbeam-epoch v0.9.18 [INFO] [stderr] Checking tracing-log v0.2.0 [INFO] [stderr] Compiling time-macros v0.2.25 [INFO] [stderr] Checking csv-core v0.1.13 [INFO] [stderr] Checking thread_local v1.1.9 [INFO] [stderr] Compiling rayon-core v1.13.0 [INFO] [stderr] Checking ftui-i18n v0.2.1 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling zerocopy-derive v0.8.39 [INFO] [stderr] Compiling yoke-derive v0.8.1 [INFO] [stderr] Compiling zerovec-derive v0.11.2 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling derive_more-impl v2.1.1 [INFO] [stderr] Compiling gix-utils v0.3.1 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling maybe-async v0.2.10 [INFO] [stderr] Compiling darling_macro v0.20.11 [INFO] [stderr] Compiling clap_derive v4.5.55 [INFO] [stderr] Compiling libsqlite3-sys v0.36.0 [INFO] [stderr] Checking nu-ansi-term v0.50.3 [INFO] [stderr] Compiling darling v0.20.11 [INFO] [stderr] Compiling derive_builder_core v0.20.2 [INFO] [stderr] Checking zerofrom v0.1.6 [INFO] [stderr] Checking derive_more v2.1.1 [INFO] [stderr] Checking crossterm v0.29.0 [INFO] [stderr] Checking flate2 v1.1.9 [INFO] [stderr] Checking csv v1.4.0 [INFO] [stderr] Checking yoke v0.8.1 [INFO] [stderr] Checking crossbeam-deque v0.8.6 [INFO] [stderr] Checking matchers v0.2.0 [INFO] [stderr] Compiling gix-validate v0.10.1 [INFO] [stderr] Compiling gix-date v0.12.1 [INFO] [stderr] Compiling gix-chunk v0.4.12 [INFO] [stderr] Compiling gix-quote v0.6.2 [INFO] [stderr] Compiling gix-packetline v0.20.0 [INFO] [stderr] Compiling gix-bitmap v0.2.16 [INFO] [stderr] Checking zerovec v0.11.5 [INFO] [stderr] Checking zerotrie v0.2.3 [INFO] [stderr] Compiling gix-path v0.10.22 [INFO] [stderr] Checking tracing v0.1.44 [INFO] [stderr] Compiling alloca v0.4.0 [INFO] [stderr] Checking fdeflate v0.3.7 [INFO] [stderr] Checking ftui-extras v0.2.1 [INFO] [stderr] Checking hashlink v0.11.0 [INFO] [stderr] Checking fallible-streaming-iterator v0.1.9 [INFO] [stderr] Checking fallible-iterator v0.3.0 [INFO] [stderr] Checking uuid v1.22.0 [INFO] [stderr] Compiling gix-actor v0.37.1 [INFO] [stderr] Checking plotters-backend v0.3.7 [INFO] [stderr] Checking ciborium-io v0.2.2 [INFO] [stderr] Compiling gix-features v0.45.2 [INFO] [stderr] Compiling gix-config-value v0.16.0 [INFO] [stderr] Compiling gix-command v0.6.5 [INFO] [stderr] Checking predicates-core v1.0.10 [INFO] [stderr] Checking tinystr v0.8.2 [INFO] [stderr] Checking potential_utf v0.1.4 [INFO] [stderr] Checking unsafe-libyaml v0.2.11 [INFO] [stderr] Checking fixedbitset v0.5.7 [INFO] [stderr] Checking plotters-svg v0.3.7 [INFO] [stderr] Compiling gix-hash v0.21.2 [INFO] [stderr] Compiling gix-fs v0.18.2 [INFO] [stderr] Compiling gix-glob v0.23.0 [INFO] [stderr] Compiling gix-url v0.34.0 [INFO] [stderr] Compiling derive_builder_macro v0.20.2 [INFO] [stderr] Checking icu_locale_core v2.1.1 [INFO] [stderr] Checking icu_collections v2.1.1 [INFO] [stderr] Checking png v0.17.16 [INFO] [stderr] Compiling gix-tempfile v20.0.1 [INFO] [stderr] Checking clap v4.5.59 [INFO] [stderr] Compiling gix-hashtable v0.11.0 [INFO] [stderr] Compiling gix-commitgraph v0.31.0 [INFO] [stderr] Compiling gix-object v0.54.1 [INFO] [stderr] Compiling derive_builder v0.20.2 [INFO] [stderr] Checking clap_complete v4.5.66 [INFO] [stderr] Compiling gix-attributes v0.29.0 [INFO] [stderr] Compiling gix-lock v20.0.1 [INFO] [stderr] Compiling gix-ignore v0.18.0 [INFO] [stderr] Compiling gix-transport v0.52.1 [INFO] [stderr] Checking petgraph v0.8.3 [INFO] [stderr] Checking sha2 v0.10.9 [INFO] [stderr] Checking itertools v0.14.0 [INFO] [stderr] Checking itertools v0.13.0 [INFO] [stderr] Checking icu_provider v2.1.1 [INFO] [stderr] Checking float-cmp v0.10.0 [INFO] [stderr] Compiling gix-pathspec v0.14.0 [INFO] [stderr] Compiling gix-shallow v0.7.0 [INFO] [stderr] Checking icu_properties v2.1.2 [INFO] [stderr] Checking icu_normalizer v2.1.1 [INFO] [stderr] Checking cast v0.3.0 [INFO] [stderr] Checking difflib v0.4.0 [INFO] [stderr] Compiling assert_cmd v2.1.2 [INFO] [stderr] Checking termtree v0.5.1 [INFO] [stderr] Checking normalize-line-endings v0.3.0 [INFO] [stderr] Checking rayon v1.11.0 [INFO] [stderr] Checking predicates-tree v1.0.13 [INFO] [stderr] Checking predicates v3.1.4 [INFO] [stderr] Checking plotters v0.3.7 [INFO] [stderr] Checking console v0.15.11 [INFO] [stderr] Checking wait-timeout v0.2.1 [INFO] [stderr] Checking page_size v0.6.0 [INFO] [stderr] Checking oorandom v11.1.5 [INFO] [stderr] Checking yansi v1.0.1 [INFO] [stderr] Compiling gix-revwalk v0.25.0 [INFO] [stderr] Compiling gix-ref v0.57.0 [INFO] [stderr] Compiling gix-traverse v0.51.1 [INFO] [stderr] Compiling gix-revision v0.39.0 [INFO] [stderr] Compiling gix-filter v0.24.1 [INFO] [stderr] Compiling gix-pack v0.64.1 [INFO] [stderr] Checking idna_adapter v1.2.1 [INFO] [stderr] Checking chrono v0.4.43 [INFO] [stderr] Checking idna v1.1.0 [INFO] [stderr] Checking tracing-serde v0.2.0 [INFO] [stderr] Compiling gix-index v0.45.1 [INFO] [stderr] Compiling cargo-platform v0.3.0 [INFO] [stderr] Checking tracing-subscriber v0.3.22 [INFO] [stderr] Checking serde_yaml v0.9.34+deprecated [INFO] [stderr] Checking url v2.5.8 [INFO] [stderr] Checking tinytemplate v1.2.1 [INFO] [stderr] Compiling gix-discover v0.45.0 [INFO] [stderr] Compiling gix-refspec v0.35.0 [INFO] [stderr] Compiling gix-config v0.50.0 [INFO] [stderr] Compiling gix-protocol v0.55.0 [INFO] [stderr] Compiling cargo_metadata v0.23.1 [INFO] [stderr] Checking ftui-core v0.2.1 [INFO] [stderr] Compiling gix-odb v0.74.0 [INFO] [stderr] Checking half v2.7.1 [INFO] [stderr] Checking criterion-plot v0.8.2 [INFO] [stderr] Checking diff v0.1.13 [INFO] [stderr] Checking similar v2.7.0 [INFO] [stderr] Checking anes v0.1.6 [INFO] [stderr] Checking pretty_assertions v1.4.1 [INFO] [stderr] Compiling gix-worktree v0.46.0 [INFO] [stderr] Checking ciborium-ll v0.2.2 [INFO] [stderr] Checking ciborium v0.2.2 [INFO] [stderr] Compiling gix-dir v0.19.0 [INFO] [stderr] Compiling gix-diff v0.57.1 [INFO] [stderr] Checking insta v1.46.3 [INFO] [stderr] Checking ftui-render v0.2.1 [INFO] [stderr] Checking ftui-layout v0.2.1 [INFO] [stderr] Compiling gix-submodule v0.24.0 [INFO] [stderr] Checking criterion v0.8.2 [INFO] [stderr] Checking ftui-style v0.2.1 [INFO] [stderr] Checking ftui-backend v0.2.1 [INFO] [stderr] Compiling gix-status v0.24.0 [INFO] [stderr] Compiling gix v0.77.0 [INFO] [stderr] Checking ftui-text v0.2.1 [INFO] [stderr] Checking rusqlite v0.38.0 [INFO] [stderr] Checking ftui-widgets v0.2.1 [INFO] [stderr] Checking ftui-runtime v0.2.1 [INFO] [stderr] Checking ftui v0.2.1 [INFO] [stderr] Compiling tru v0.2.0 [INFO] [stderr] Compiling bvr v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: binding's name is too similar to existing binding [INFO] [stdout] --> src/analysis/triage.rs:136:9 [INFO] [stdout] | [INFO] [stdout] 136 | let br_raw = blocks as f64; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: existing binding defined here [INFO] [stdout] --> src/analysis/triage.rs:123:9 [INFO] [stdout] | [INFO] [stdout] 123 | let bt_raw = metrics [INFO] [stdout] | ^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#similar_names [INFO] [stdout] = note: `-W clippy::similar-names` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::similar_names)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binding's name is too similar to existing binding [INFO] [stdout] --> src/analysis/triage.rs:137:9 [INFO] [stdout] | [INFO] [stdout] 137 | let br_norm = if ctx.total_open > 1 { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: existing binding defined here [INFO] [stdout] --> src/analysis/triage.rs:128:9 [INFO] [stdout] | [INFO] [stdout] 128 | let bt_norm = bt_raw / ctx.max_betweenness; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#similar_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binding's name is too similar to existing binding [INFO] [stdout] --> src/analysis/triage.rs:228:9 [INFO] [stdout] | [INFO] [stdout] 228 | let w_br = W_BLOCKER_RATIO * adj("BlockerRatio"); [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] note: existing binding defined here [INFO] [stdout] --> src/analysis/triage.rs:226:9 [INFO] [stdout] | [INFO] [stdout] 226 | let w_pr = W_PAGERANK * adj("PageRank"); [INFO] [stdout] | ^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#similar_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binding's name is too similar to existing binding [INFO] [stdout] --> src/analysis/triage.rs:229:9 [INFO] [stdout] | [INFO] [stdout] 229 | let w_st = W_STALENESS * adj("Staleness"); [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] note: existing binding defined here [INFO] [stdout] --> src/analysis/triage.rs:227:9 [INFO] [stdout] | [INFO] [stdout] 227 | let w_bt = W_BETWEENNESS * adj("Betweenness"); [INFO] [stdout] | ^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#similar_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binding's name is too similar to existing binding [INFO] [stdout] --> src/analysis/triage.rs:230:9 [INFO] [stdout] | [INFO] [stdout] 230 | let w_pb = W_PRIORITY_BOOST * adj("PriorityBoost"); [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] note: existing binding defined here [INFO] [stdout] --> src/analysis/triage.rs:226:9 [INFO] [stdout] | [INFO] [stdout] 226 | let w_pr = W_PAGERANK * adj("PageRank"); [INFO] [stdout] | ^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#similar_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binding's name is too similar to existing binding [INFO] [stdout] --> src/analysis/triage.rs:136:9 [INFO] [stdout] | [INFO] [stdout] 136 | let br_raw = blocks as f64; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: existing binding defined here [INFO] [stdout] --> src/analysis/triage.rs:123:9 [INFO] [stdout] | [INFO] [stdout] 123 | let bt_raw = metrics [INFO] [stdout] | ^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#similar_names [INFO] [stdout] = note: `-W clippy::similar-names` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::similar_names)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binding's name is too similar to existing binding [INFO] [stdout] --> src/analysis/triage.rs:137:9 [INFO] [stdout] | [INFO] [stdout] 137 | let br_norm = if ctx.total_open > 1 { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: existing binding defined here [INFO] [stdout] --> src/analysis/triage.rs:128:9 [INFO] [stdout] | [INFO] [stdout] 128 | let bt_norm = bt_raw / ctx.max_betweenness; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#similar_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binding's name is too similar to existing binding [INFO] [stdout] --> src/analysis/triage.rs:228:9 [INFO] [stdout] | [INFO] [stdout] 228 | let w_br = W_BLOCKER_RATIO * adj("BlockerRatio"); [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] note: existing binding defined here [INFO] [stdout] --> src/analysis/triage.rs:226:9 [INFO] [stdout] | [INFO] [stdout] 226 | let w_pr = W_PAGERANK * adj("PageRank"); [INFO] [stdout] | ^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#similar_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binding's name is too similar to existing binding [INFO] [stdout] --> src/analysis/triage.rs:229:9 [INFO] [stdout] | [INFO] [stdout] 229 | let w_st = W_STALENESS * adj("Staleness"); [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] note: existing binding defined here [INFO] [stdout] --> src/analysis/triage.rs:227:9 [INFO] [stdout] | [INFO] [stdout] 227 | let w_bt = W_BETWEENNESS * adj("Betweenness"); [INFO] [stdout] | ^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#similar_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binding's name is too similar to existing binding [INFO] [stdout] --> src/analysis/triage.rs:230:9 [INFO] [stdout] | [INFO] [stdout] 230 | let w_pb = W_PRIORITY_BOOST * adj("PriorityBoost"); [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] note: existing binding defined here [INFO] [stdout] --> src/analysis/triage.rs:226:9 [INFO] [stdout] | [INFO] [stdout] 226 | let w_pr = W_PAGERANK * adj("PageRank"); [INFO] [stdout] | ^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#similar_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary hashes around raw string literal [INFO] [stdout] --> src/export_md.rs:1028:13 [INFO] [stdout] | [INFO] [stdout] 1028 | / r#" [INFO] [stdout] 1029 | | hooks: [INFO] [stdout] 1030 | | pre-export: [INFO] [stdout] 1031 | | - name: lint [INFO] [stdout] ... | [INFO] [stdout] 1035 | | - command: echo done [INFO] [stdout] 1036 | | "#, [INFO] [stdout] | |__^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_raw_string_hashes [INFO] [stdout] = note: `-W clippy::needless-raw-string-hashes` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::needless_raw_string_hashes)]` [INFO] [stdout] help: remove all the hashes around the string literal [INFO] [stdout] | [INFO] [stdout] 1028 ~ r" [INFO] [stdout] 1029 | hooks: [INFO] [stdout] ... [INFO] [stdout] 1035 | - command: echo done [INFO] [stdout] 1036 ~ ", [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: item in documentation is missing backticks [INFO] [stdout] --> src/analysis/cache.rs:30:53 [INFO] [stdout] | [INFO] [stdout] 30 | /// The cache avoids recomputing expensive metrics (PageRank, betweenness, HITS, etc.) [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown [INFO] [stdout] = note: `-W clippy::doc-markdown` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::doc_markdown)]` [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 30 - /// The cache avoids recomputing expensive metrics (PageRank, betweenness, HITS, etc.) [INFO] [stdout] 30 + /// The cache avoids recomputing expensive metrics (`PageRank`, betweenness, HITS, etc.) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/analysis/cache.rs:80:62 [INFO] [stdout] | [INFO] [stdout] 80 | let entries = self.entries.lock().unwrap_or_else(|e| e.into_inner()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace the closure with the method itself: `std::sync::PoisonError::into_inner` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] = note: `-W clippy::redundant-closure-for-method-calls` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::redundant_closure_for_method_calls)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/analysis/cache.rs:83:54 [INFO] [stdout] | [INFO] [stdout] 83 | *self.hits.lock().unwrap_or_else(|e| e.into_inner()) += 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace the closure with the method itself: `std::sync::PoisonError::into_inner` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/analysis/cache.rs:90:44 [INFO] [stdout] | [INFO] [stdout] 90 | *self.misses.lock().unwrap_or_else(|e| e.into_inner()) += 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace the closure with the method itself: `std::sync::PoisonError::into_inner` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/analysis/cache.rs:96:66 [INFO] [stdout] | [INFO] [stdout] 96 | let mut entries = self.entries.lock().unwrap_or_else(|e| e.into_inner()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace the closure with the method itself: `std::sync::PoisonError::into_inner` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/analysis/cache.rs:116:29 [INFO] [stdout] | [INFO] [stdout] 116 | .unwrap_or_else(|e| e.into_inner()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace the closure with the method itself: `std::sync::PoisonError::into_inner` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/analysis/cache.rs:123:58 [INFO] [stdout] | [INFO] [stdout] 123 | let entries = self.entries.lock().unwrap_or_else(|e| e.into_inner()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace the closure with the method itself: `std::sync::PoisonError::into_inner` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/analysis/cache.rs:124:53 [INFO] [stdout] | [INFO] [stdout] 124 | let hits = *self.hits.lock().unwrap_or_else(|e| e.into_inner()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace the closure with the method itself: `std::sync::PoisonError::into_inner` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/analysis/cache.rs:125:57 [INFO] [stdout] | [INFO] [stdout] 125 | let misses = *self.misses.lock().unwrap_or_else(|e| e.into_inner()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace the closure with the method itself: `std::sync::PoisonError::into_inner` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: item in documentation is missing backticks [INFO] [stdout] --> src/analysis/cache.rs:146:7 [INFO] [stdout] | [INFO] [stdout] 146 | /// - AnalysisConfig toggles (since they affect which metrics are computed) [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 146 - /// - AnalysisConfig toggles (since they affect which metrics are computed) [INFO] [stdout] 146 + /// - `AnalysisConfig` toggles (since they affect which metrics are computed) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `sort` on primitive type `tuple` [INFO] [stdout] --> src/analysis/cache.rs:155:5 [INFO] [stdout] | [INFO] [stdout] 155 | sorted_ids.sort(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try: `sorted_ids.sort_unstable()` [INFO] [stdout] | [INFO] [stdout] = note: an unstable sort typically performs faster without any observable difference for this data type [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#stable_sort_primitive [INFO] [stdout] = note: `-W clippy::stable-sort-primitive` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::stable_sort_primitive)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `sort` on primitive type `tuple` [INFO] [stdout] --> src/analysis/cache.rs:173:5 [INFO] [stdout] | [INFO] [stdout] 173 | edges.sort(); [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `edges.sort_unstable()` [INFO] [stdout] | [INFO] [stdout] = note: an unstable sort typically performs faster without any observable difference for this data type [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#stable_sort_primitive [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/analysis/causal.rs:876:17 [INFO] [stdout] | [INFO] [stdout] 876 | / if blocked_start.is_none() { [INFO] [stdout] 877 | | blocked_start = Some(( [INFO] [stdout] 878 | | event.timestamp.clone(), [INFO] [stdout] 879 | | event.blocker_id.clone().unwrap_or_default(), [INFO] [stdout] 880 | | )); [INFO] [stdout] 881 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 875 ~ "blocked" [INFO] [stdout] 876 ~ if blocked_start.is_none() => { [INFO] [stdout] 877 | blocked_start = Some(( [INFO] [stdout] ... [INFO] [stdout] 880 | )); [INFO] [stdout] 881 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: item in documentation is missing backticks [INFO] [stdout] --> src/analysis/graph.rs:77:49 [INFO] [stdout] | [INFO] [stdout] 77 | /// Minimal config for triage scoring (only PageRank + betweenness + basic). [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 77 - /// Minimal config for triage scoring (only PageRank + betweenness + basic). [INFO] [stdout] 77 + /// Minimal config for triage scoring (only `PageRank` + betweenness + basic). [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary structure name repetition [INFO] [stdout] --> src/analysis/graph.rs:202:40 [INFO] [stdout] | [INFO] [stdout] 202 | pub fn merge_slow(&mut self, slow: GraphMetrics) { [INFO] [stdout] | ^^^^^^^^^^^^ help: use the applicable keyword: `Self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#use_self [INFO] [stdout] = note: `-W clippy::use-self` implied by `-W clippy::nursery` [INFO] [stdout] = help: to override `-W clippy::nursery` add `#[allow(clippy::use_self)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/analysis/graph.rs:493:28 [INFO] [stdout] | [INFO] [stdout] 493 | .chain(self.dependents(&id).into_iter()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/3645249d79dfb136b5d8de3ce153d19d6698d92d/library/core/src/iter/traits/iterator.rs:510:11 [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] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 493 - .chain(self.dependents(&id).into_iter()); [INFO] [stdout] 493 + .chain(self.dependents(&id)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary boolean `not` operation [INFO] [stdout] --> src/analysis/graph.rs:538:26 [INFO] [stdout] | [INFO] [stdout] 538 | let reason = if !config.enable_betweenness { [INFO] [stdout] | __________________________^ [INFO] [stdout] 539 | | "disabled by config".to_string() [INFO] [stdout] 540 | | } else { [INFO] [stdout] 541 | | format!( [INFO] [stdout] ... | [INFO] [stdout] 545 | | }; [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_not_else [INFO] [stdout] = note: `-W clippy::if-not-else` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::if_not_else)]` [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 538 ~ let reason = if config.enable_betweenness { [INFO] [stdout] 539 + format!( [INFO] [stdout] 540 + "graph too large ({n} nodes > {} max)", [INFO] [stdout] 541 + config.betweenness_max_nodes [INFO] [stdout] 542 + ) [INFO] [stdout] 543 + } else { [INFO] [stdout] 544 + "disabled by config".to_string() [INFO] [stdout] 545 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary boolean `not` operation [INFO] [stdout] --> src/analysis/graph.rs:556:26 [INFO] [stdout] | [INFO] [stdout] 556 | let reason = if !config.enable_eigenvector { [INFO] [stdout] | __________________________^ [INFO] [stdout] 557 | | "disabled by config".to_string() [INFO] [stdout] 558 | | } else { [INFO] [stdout] 559 | | format!( [INFO] [stdout] ... | [INFO] [stdout] 563 | | }; [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_not_else [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 556 ~ let reason = if config.enable_eigenvector { [INFO] [stdout] 557 + format!( [INFO] [stdout] 558 + "graph too large ({n} nodes > {} max)", [INFO] [stdout] 559 + config.eigenvector_max_nodes [INFO] [stdout] 560 + ) [INFO] [stdout] 561 + } else { [INFO] [stdout] 562 + "disabled by config".to_string() [INFO] [stdout] 563 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option>` which implements the `Copy` trait [INFO] [stdout] --> src/analysis/history.rs:36:24 [INFO] [stdout] | [INFO] [stdout] 36 | timestamp: issue.created_at.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `issue.created_at` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option>` which implements the `Copy` trait [INFO] [stdout] --> src/analysis/history.rs:43:28 [INFO] [stdout] | [INFO] [stdout] 43 | timestamp: issue.updated_at.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `issue.updated_at` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option>` which implements the `Copy` trait [INFO] [stdout] --> src/analysis/history.rs:51:28 [INFO] [stdout] | [INFO] [stdout] 51 | timestamp: issue.closed_at.clone().or_else(|| issue.updated_at.clone()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `issue.closed_at` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option>` which implements the `Copy` trait [INFO] [stdout] --> src/analysis/history.rs:51:63 [INFO] [stdout] | [INFO] [stdout] 51 | timestamp: issue.closed_at.clone().or_else(|| issue.updated_at.clone()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `issue.updated_at` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: item in documentation is missing backticks [INFO] [stdout] --> src/analysis/recipe.rs:558:62 [INFO] [stdout] | [INFO] [stdout] 558 | /// Returns the weight adjustments as a map suitable for TriageScoringOptions. [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 558 - /// Returns the weight adjustments as a map suitable for TriageScoringOptions. [INFO] [stdout] 558 + /// Returns the weight adjustments as a map suitable for `TriageScoringOptions`. [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: item in documentation is missing backticks [INFO] [stdout] --> src/analysis/recipe.rs:559:36 [INFO] [stdout] | [INFO] [stdout] 559 | /// Maps component name (e.g. "PageRank") to a multiplier (0.5–2.0). [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 559 - /// Maps component name (e.g. "PageRank") to a multiplier (0.5–2.0). [INFO] [stdout] 559 + /// Maps component name (e.g. "`PageRank`") to a multiplier (0.5–2.0). [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/analysis/suggest.rs:613:28 [INFO] [stdout] | [INFO] [stdout] 613 | open_pageranks.sort_by(|a, b| a.total_cmp(b)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the method itself: `f64::total_cmp` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `f64` to `usize` may truncate the value [INFO] [stdout] --> src/analysis/suggest.rs:617:19 [INFO] [stdout] | [INFO] [stdout] 617 | let idx = ((open_pageranks.len() as f64 * STALE_PAGERANK_PERCENTILE).ceil() as usize) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ... [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_truncation [INFO] [stdout] = note: `-W clippy::cast-possible-truncation` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::cast_possible_truncation)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `f64` to `usize` may lose the sign of the value [INFO] [stdout] --> src/analysis/suggest.rs:617:19 [INFO] [stdout] | [INFO] [stdout] 617 | let idx = ((open_pageranks.len() as f64 * STALE_PAGERANK_PERCENTILE).ceil() as usize) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_sign_loss [INFO] [stdout] = note: `-W clippy::cast-sign-loss` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::cast_sign_loss)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variables can be used directly in the `format!` string [INFO] [stdout] --> src/analysis/suggest.rs:658:13 [INFO] [stdout] | [INFO] [stdout] 658 | / format!( [INFO] [stdout] 659 | | "Last updated {} days ago, PageRank {:.4} (below threshold {:.4})", [INFO] [stdout] 660 | | days_stale, pagerank, pagerank_threshold [INFO] [stdout] 661 | | ), [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args [INFO] [stdout] = note: `-W clippy::uninlined-format-args` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::uninlined_format_args)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: item in documentation is missing backticks [INFO] [stdout] --> src/analysis/triage.rs:13:26 [INFO] [stdout] | [INFO] [stdout] 13 | /// Weight constants for ImpactScore components (must sum to 1.0). [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 13 - /// Weight constants for ImpactScore components (must sum to 1.0). [INFO] [stdout] 13 + /// Weight constants for `ImpactScore` components (must sum to 1.0). [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: item in documentation is missing backticks [INFO] [stdout] --> src/analysis/triage.rs:43:31 [INFO] [stdout] | [INFO] [stdout] 43 | /// Context needed to compute ImpactScores across a set of issues. [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 43 - /// Context needed to compute ImpactScores across a set of issues. [INFO] [stdout] 43 + /// Context needed to compute `ImpactScores` across a set of issues. [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: item in documentation is missing backticks [INFO] [stdout] --> src/analysis/triage.rs:110:34 [INFO] [stdout] | [INFO] [stdout] 110 | /// Compute the full 8-component ImpactScore for a single issue. [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 110 - /// Compute the full 8-component ImpactScore for a single issue. [INFO] [stdout] 110 + /// Compute the full 8-component `ImpactScore` for a single issue. [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map().unwrap_or()` on an `Option` value [INFO] [stdout] --> src/analysis/triage.rs:144:22 [INFO] [stdout] | [INFO] [stdout] 144 | let updated_ts = issue [INFO] [stdout] | ______________________^ [INFO] [stdout] 145 | | .updated_at [INFO] [stdout] 146 | | .map(|dt| dt.timestamp()) [INFO] [stdout] 147 | | .unwrap_or(ctx.now_ts); [INFO] [stdout] | |______________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_unwrap_or [INFO] [stdout] = note: `-W clippy::map-unwrap-or` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::map_unwrap_or)]` [INFO] [stdout] help: use `map_or(, )` instead [INFO] [stdout] | [INFO] [stdout] 146 - .map(|dt| dt.timestamp()) [INFO] [stdout] 147 - .unwrap_or(ctx.now_ts); [INFO] [stdout] 146 + .map_or(ctx.now_ts, |dt| dt.timestamp()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: item in documentation is missing backticks [INFO] [stdout] --> src/analysis/triage.rs:443:74 [INFO] [stdout] | [INFO] [stdout] 443 | /// Configurable scoring weights and thresholds for triage (matches Go's TriageScoringOptions). [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 443 - /// Configurable scoring weights and thresholds for triage (matches Go's TriageScoringOptions). [INFO] [stdout] 443 + /// Configurable scoring weights and thresholds for triage (matches Go's `TriageScoringOptions`). [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: item in documentation is missing backticks [INFO] [stdout] --> src/analysis/triage.rs:446:29 [INFO] [stdout] | [INFO] [stdout] 446 | /// Weight for the base ImpactScore (0.0–1.0). [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 446 - /// Weight for the base ImpactScore (0.0–1.0). [INFO] [stdout] 446 + /// Weight for the base `ImpactScore` (0.0–1.0). [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: item in documentation is missing backticks [INFO] [stdout] --> src/analysis/triage.rs:454:21 [INFO] [stdout] | [INFO] [stdout] 454 | /// Issues with critical_depth <= this are considered quick wins. [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 454 - /// Issues with critical_depth <= this are considered quick wins. [INFO] [stdout] 454 + /// Issues with `critical_depth` <= this are considered quick wins. [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: item in documentation is missing backticks [INFO] [stdout] --> src/analysis/triage.rs:465:63 [INFO] [stdout] | [INFO] [stdout] 465 | /// Per-component weight multipliers from feedback (e.g. "PageRank" -> 1.1). [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 465 - /// Per-component weight multipliers from feedback (e.g. "PageRank" -> 1.1). [INFO] [stdout] 465 + /// Per-component weight multipliers from feedback (e.g. "`PageRank`" -> 1.1). [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `usize` to `i64` may wrap around the value on targets with 64-bit wide pointers [INFO] [stdout] --> src/analysis/triage.rs:811:44 [INFO] [stdout] | [INFO] [stdout] 811 | start_of_week - Duration::days((index * 7) as i64), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_wrap [INFO] [stdout] = note: `-W clippy::cast-possible-wrap` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::cast_possible_wrap)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/export_pages.rs:705:42 [INFO] [stdout] | [INFO] [stdout] 705 | if !visited_dirs.insert(resolved_path.clone()) { [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/export_pages.rs:705:29 [INFO] [stdout] | [INFO] [stdout] 705 | if !visited_dirs.insert(resolved_path.clone()) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] = note: `-W clippy::redundant-clone` implied by `-W clippy::nursery` [INFO] [stdout] = help: to override `-W clippy::nursery` add `#[allow(clippy::redundant_clone)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: docs for function which may panic missing `# Panics` section [INFO] [stdout] --> src/model.rs:119:1 [INFO] [stdout] | [INFO] [stdout] 119 | pub fn ts(s: &str) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: first possible panic found here [INFO] [stdout] --> src/model.rs:122:33 [INFO] [stdout] | [INFO] [stdout] 122 | .unwrap_or_else(|e| panic!("invalid timestamp {s:?}: {e}")) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_panics_doc [INFO] [stdout] = note: `-W clippy::missing-panics-doc` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::missing_panics_doc)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: these match arms have identical bodies [INFO] [stdout] --> src/pages_wizard.rs:106:13 [INFO] [stdout] | [INFO] [stdout] 106 | Self::LoadSaved => None, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 112 | Self::Export | Self::Preview | Self::Deploy | Self::Done => None, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: if this is unintentional make the arms return different values [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_same_arms [INFO] [stdout] = note: `-W clippy::match-same-arms` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::match_same_arms)]` [INFO] [stdout] help: otherwise merge the patterns into a single arm [INFO] [stdout] | [INFO] [stdout] 106 ~ Self::ExportOptions => Some(Self::LoadSaved), [INFO] [stdout] 107 | Self::DeployTarget => Some(Self::ExportOptions), [INFO] [stdout] ... [INFO] [stdout] 110 | // Cannot back out of execution steps [INFO] [stdout] 111 ~ Self::LoadSaved | Self::Export | Self::Preview | Self::Deploy | Self::Done => None, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/pages_wizard.rs:245:59 [INFO] [stdout] | [INFO] [stdout] 245 | if self.github_repo.as_ref().map_or(true, |r| r.is_empty()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace the closure with the method itself: `std::string::String::is_empty` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/pages_wizard.rs:245:20 [INFO] [stdout] | [INFO] [stdout] 245 | if self.github_repo.as_ref().map_or(true, |r| r.is_empty()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_none_or` instead [INFO] [stdout] | [INFO] [stdout] 245 - if self.github_repo.as_ref().map_or(true, |r| r.is_empty()) { [INFO] [stdout] 245 + if self.github_repo.as_ref().is_none_or(|r| r.is_empty()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/pages_wizard.rs:255:35 [INFO] [stdout] | [INFO] [stdout] 255 | .map_or(true, |p| p.is_empty()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace the closure with the method itself: `std::string::String::is_empty` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/pages_wizard.rs:252:20 [INFO] [stdout] | [INFO] [stdout] 252 | if self [INFO] [stdout] | ____________________^ [INFO] [stdout] 253 | | .cloudflare_project [INFO] [stdout] 254 | | .as_ref() [INFO] [stdout] 255 | | .map_or(true, |p| p.is_empty()) [INFO] [stdout] | |___________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_none_or` instead [INFO] [stdout] | [INFO] [stdout] 255 - .map_or(true, |p| p.is_empty()) [INFO] [stdout] 255 + .is_none_or(|p| p.is_empty()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this could be rewritten as `let...else` [INFO] [stdout] --> src/pages_wizard.rs:310:5 [INFO] [stdout] | [INFO] [stdout] 310 | / let path = match wizard_config_path() { [INFO] [stdout] 311 | | Some(p) => p, [INFO] [stdout] 312 | | None => return Ok(None), [INFO] [stdout] 313 | | }; [INFO] [stdout] | |______^ help: consider writing: `let Some(path) = wizard_config_path() else { return Ok(None) };` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_let_else [INFO] [stdout] = note: `-W clippy::manual-let-else` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::manual_let_else)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this could be rewritten as `let...else` [INFO] [stdout] --> src/pages_wizard.rs:326:5 [INFO] [stdout] | [INFO] [stdout] 326 | / let path = match wizard_config_path() { [INFO] [stdout] 327 | | Some(p) => p, [INFO] [stdout] 328 | | None => { [INFO] [stdout] 329 | | return Err(BvrError::InvalidArgument( [INFO] [stdout] ... | [INFO] [stdout] 333 | | }; [INFO] [stdout] | |______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_let_else [INFO] [stdout] help: consider writing [INFO] [stdout] | [INFO] [stdout] 326 ~ let Some(path) = wizard_config_path() else { [INFO] [stdout] 327 + return Err(BvrError::InvalidArgument( [INFO] [stdout] 328 + "cannot determine config directory".into(), [INFO] [stdout] 329 + )); [INFO] [stdout] 330 + }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map().unwrap_or(false)` on a `Result` value [INFO] [stdout] --> src/pages_wizard.rs:408:9 [INFO] [stdout] | [INFO] [stdout] 408 | / std::process::Command::new("which") [INFO] [stdout] 409 | | .arg(name) [INFO] [stdout] 410 | | .stdout(std::process::Stdio::null()) [INFO] [stdout] 411 | | .stderr(std::process::Stdio::null()) [INFO] [stdout] 412 | | .status() [INFO] [stdout] 413 | | .map(|s| s.success()) [INFO] [stdout] 414 | | .unwrap_or(false) [INFO] [stdout] | |_____________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_unwrap_or [INFO] [stdout] help: use `is_ok_and()` instead [INFO] [stdout] | [INFO] [stdout] 413 - .map(|s| s.success()) [INFO] [stdout] 414 - .unwrap_or(false) [INFO] [stdout] 413 + .is_ok_and(|s| s.success()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map().unwrap_or()` on an `Option` value [INFO] [stdout] --> src/pages_wizard.rs:444:23 [INFO] [stdout] | [INFO] [stdout] 444 | let elapsed = self [INFO] [stdout] | _______________________^ [INFO] [stdout] 445 | | .start [INFO] [stdout] 446 | | .map(|s| s.elapsed().as_millis() as u64) [INFO] [stdout] 447 | | .unwrap_or(0); [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_unwrap_or [INFO] [stdout] help: use `map_or(, )` instead [INFO] [stdout] | [INFO] [stdout] 446 - .map(|s| s.elapsed().as_millis() as u64) [INFO] [stdout] 447 - .unwrap_or(0); [INFO] [stdout] 446 + .map_or(0, |s| s.elapsed().as_millis() as u64); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `u128` to `u64` may truncate the value [INFO] [stdout] --> src/pages_wizard.rs:446:22 [INFO] [stdout] | [INFO] [stdout] 446 | .map(|s| s.elapsed().as_millis() as u64) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ... [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_truncation [INFO] [stdout] help: ... or use `try_from` and handle the error accordingly [INFO] [stdout] | [INFO] [stdout] 446 - .map(|s| s.elapsed().as_millis() as u64) [INFO] [stdout] 446 + .map(|s| u64::try_from(s.elapsed().as_millis())) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/pages_wizard.rs:459:13 [INFO] [stdout] | [INFO] [stdout] 459 | / out.push_str(&format!( [INFO] [stdout] 460 | | " [{:>6}ms] {:?}: {}\n", [INFO] [stdout] 461 | | entry.elapsed_ms, entry.step, entry.action [INFO] [stdout] 462 | | )); [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] = note: `-W clippy::format-push-string` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::format_push_string)]` [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 459 ~ let _ = write!(out, " [{:>6}ms] {:?}: {}\n", [INFO] [stdout] 460 ~ entry.elapsed_ms, entry.step, entry.action); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use Option::map_or instead of an if let/else [INFO] [stdout] --> src/pages_wizard.rs:556:17 [INFO] [stdout] | [INFO] [stdout] 556 | / if let Some(next) = self.advance() { [INFO] [stdout] 557 | | WizardTransition::GoTo(next) [INFO] [stdout] 558 | | } else { [INFO] [stdout] 559 | | WizardTransition::Finished [INFO] [stdout] 560 | | } [INFO] [stdout] | |_________________^ help: try: `self.advance().map_or(WizardTransition::Finished, |next| WizardTransition::GoTo(next))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_if_let_else [INFO] [stdout] = note: `-W clippy::option-if-let-else` implied by `-W clippy::nursery` [INFO] [stdout] = help: to override `-W clippy::nursery` add `#[allow(clippy::option_if_let_else)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use Option::map_or instead of an if let/else [INFO] [stdout] --> src/pages_wizard.rs:563:17 [INFO] [stdout] | [INFO] [stdout] 563 | / if let Some(prev) = self.go_back() { [INFO] [stdout] 564 | | WizardTransition::GoTo(prev) [INFO] [stdout] 565 | | } else { [INFO] [stdout] 566 | | WizardTransition::StayOnCurrent [INFO] [stdout] 567 | | } [INFO] [stdout] | |_________________^ help: try: `self.go_back().map_or(WizardTransition::StayOnCurrent, |prev| WizardTransition::GoTo(prev))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_if_let_else [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: docs for function which may panic missing `# Panics` section [INFO] [stdout] --> src/pages_wizard.rs:664:1 [INFO] [stdout] | [INFO] [stdout] 664 | / pub fn run_wizard_interactive( [INFO] [stdout] 665 | | reader: &mut R, [INFO] [stdout] 666 | | writer: &mut W, [INFO] [stdout] 667 | | beads_path: Option, [INFO] [stdout] ... | [INFO] [stdout] 675 | | E: FnOnce(&WizardConfig) -> Result<()>, [INFO] [stdout] 676 | | P: Fn(&Path) -> Result<()>, [INFO] [stdout] | |_______________________________^ [INFO] [stdout] | [INFO] [stdout] note: first possible panic found here [INFO] [stdout] --> src/pages_wizard.rs:899:33 [INFO] [stdout] | [INFO] [stdout] 899 | let do_export = export_fn.take().expect("export called only once"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_panics_doc [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `continue` expression is redundant [INFO] [stdout] --> src/pages_wizard.rs:884:25 [INFO] [stdout] | [INFO] [stdout] 884 | continue; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider dropping the `continue` expression [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_continue [INFO] [stdout] = note: `-W clippy::needless-continue` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::needless_continue)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/pages_wizard.rs:763:20 [INFO] [stdout] | [INFO] [stdout] 763 | if choice >= 1 && choice <= 3 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(1..=3).contains(&choice)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] = note: `#[warn(clippy::manual_range_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `unwrap_or` [INFO] [stdout] --> src/pages_wizard.rs:909:34 [INFO] [stdout] | [INFO] [stdout] 909 | ... .unwrap_or(Path::new("?")) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|| Path::new("?"))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stdout] = note: `-W clippy::or-fun-call` implied by `-W clippy::nursery` [INFO] [stdout] = help: to override `-W clippy::nursery` add `#[allow(clippy::or_fun_call)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `map_or` [INFO] [stdout] --> src/pages_wizard.rs:965:22 [INFO] [stdout] | [INFO] [stdout] 965 | .map_or("local".to_string(), |t| t.label().to_string()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `map_or_else(|| "local".to_string(), |t| t.label().to_string())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `unwrap_or` [INFO] [stdout] --> src/pages_wizard.rs:970:22 [INFO] [stdout] | [INFO] [stdout] 970 | .unwrap_or(Path::new("./bv-pages")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|| Path::new("./bv-pages"))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for an equality check. Consider using `if` [INFO] [stdout] --> src/tui.rs:1087:27 [INFO] [stdout] | [INFO] [stdout] 1087 | let header_text = match bp { [INFO] [stdout] | ___________________________^ [INFO] [stdout] 1088 | | Breakpoint::Narrow => format!( [INFO] [stdout] 1089 | | "bvr {} | {}/{} | {}", [INFO] [stdout] 1090 | | self.mode.label(), [INFO] [stdout] ... | [INFO] [stdout] 1128 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match_else [INFO] [stdout] = note: `-W clippy::single-match-else` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::single_match_else)]` [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 1087 ~ let header_text = if bp == Breakpoint::Narrow { format!( [INFO] [stdout] 1088 + "bvr {} | {}/{} | {}", [INFO] [stdout] 1089 + self.mode.label(), [INFO] [stdout] 1090 + visible_count, [INFO] [stdout] 1091 + self.analyzer.issues.len(), [INFO] [stdout] 1092 + self.list_filter.label(), [INFO] [stdout] 1093 + ) } else { [INFO] [stdout] 1094 + let mut filter_label = self.list_filter.label().to_string(); [INFO] [stdout] 1095 + if let Some(ref label) = self.modal_label_filter { [INFO] [stdout] 1096 + filter_label = format!("{filter_label}+label:{label}"); [INFO] [stdout] 1097 + } [INFO] [stdout] 1098 + if let Some(ref repo) = self.modal_repo_filter { [INFO] [stdout] 1099 + filter_label = format!("{filter_label}+repo:{repo}"); [INFO] [stdout] 1100 + } [INFO] [stdout] 1101 + let metrics_hint = if self.slow_metrics_pending { [INFO] [stdout] 1102 + " | metrics: computing..." [INFO] [stdout] 1103 + } else { [INFO] [stdout] 1104 + "" [INFO] [stdout] 1105 + }; [INFO] [stdout] 1106 + let mode_label = if matches!(self.mode, ViewMode::History) { [INFO] [stdout] 1107 + format!( [INFO] [stdout] 1108 + "{} {}", [INFO] [stdout] 1109 + self.mode.label(), [INFO] [stdout] 1110 + self.history_view_mode.indicator() [INFO] [stdout] 1111 + ) [INFO] [stdout] 1112 + } else { [INFO] [stdout] 1113 + self.mode.label().to_string() [INFO] [stdout] 1114 + }; [INFO] [stdout] 1115 + format!( [INFO] [stdout] 1116 + "bvr | mode={} | focus={} | issues={}/{} | filter={} | sort={}{} | ? help | Tab focus |", [INFO] [stdout] 1117 + mode_label, [INFO] [stdout] 1118 + self.focus.label(), [INFO] [stdout] 1119 + visible_count, [INFO] [stdout] 1120 + self.analyzer.issues.len(), [INFO] [stdout] 1121 + filter_label, [INFO] [stdout] 1122 + self.list_sort.label(), [INFO] [stdout] 1123 + metrics_hint, [INFO] [stdout] 1124 + ) [INFO] [stdout] 1125 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: these match arms have identical bodies [INFO] [stdout] --> src/tui.rs:1347:13 [INFO] [stdout] | [INFO] [stdout] 1347 | ViewMode::Attention => "Label Detail", [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 1348 | ViewMode::Tree => "Issue Detail", [INFO] [stdout] 1349 | ViewMode::LabelDashboard => "Label Detail", [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: if this is unintentional make the arms return different values [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_same_arms [INFO] [stdout] help: otherwise merge the patterns into a single arm [INFO] [stdout] | [INFO] [stdout] 1347 ~ ViewMode::Attention | ViewMode::LabelDashboard => "Label Detail", [INFO] [stdout] 1348 | ViewMode::Tree => "Issue Detail", [INFO] [stdout] 1349 ~ ViewMode::FlowMatrix => "Flow Detail", [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `usize` to `u16` may truncate the value [INFO] [stdout] --> src/tui.rs:1571:26 [INFO] [stdout] | [INFO] [stdout] 1571 | .scroll((self.list_scroll_offset.get() as u16, 0)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ... [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_truncation [INFO] [stdout] help: ... or use `try_from` and handle the error accordingly [INFO] [stdout] | [INFO] [stdout] 1571 - .scroll((self.list_scroll_offset.get() as u16, 0)) [INFO] [stdout] 1571 + .scroll((u16::try_from(self.list_scroll_offset.get()), 0)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `self` argument [INFO] [stdout] --> src/tui.rs:1760:23 [INFO] [stdout] | [INFO] [stdout] 1760 | fn history_layout(&self) -> HistoryLayout { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider refactoring to an associated function [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_self [INFO] [stdout] = note: `-W clippy::unused-self` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::unused_self)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `self` argument [INFO] [stdout] --> src/tui.rs:1784:35 [INFO] [stdout] | [INFO] [stdout] 1784 | fn history_detail_panel_title(&self) -> &'static str { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider refactoring to an associated function [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_self [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map().unwrap_or_else()` on an `Option` value [INFO] [stdout] --> src/tui.rs:1789:9 [INFO] [stdout] | [INFO] [stdout] 1789 | / self.selected_issue() [INFO] [stdout] 1790 | | .map(|issue| format!("Timeline: {}", issue.id)) [INFO] [stdout] 1791 | | .unwrap_or_else(|| "Timeline".to_string()) [INFO] [stdout] | |______________________________________________________^ help: try: `self.selected_issue().map_or_else(|| "Timeline".to_string(), |issue| format!("Timeline: {}", issue.id))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_unwrap_or [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary boolean `not` operation [INFO] [stdout] --> src/tui.rs:2123:9 [INFO] [stdout] | [INFO] [stdout] 2123 | / if !state.drill_active { [INFO] [stdout] 2124 | | state.drill_cursor = 0; [INFO] [stdout] 2125 | | } else { [INFO] [stdout] 2126 | | state.drill_cursor = state [INFO] [stdout] 2127 | | .drill_cursor [INFO] [stdout] 2128 | | .min(cell_issue_ids.len().saturating_sub(1)); [INFO] [stdout] 2129 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_not_else [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 2123 ~ if state.drill_active { [INFO] [stdout] 2124 + state.drill_cursor = state [INFO] [stdout] 2125 + .drill_cursor [INFO] [stdout] 2126 + .min(cell_issue_ids.len().saturating_sub(1)); [INFO] [stdout] 2127 + } else { [INFO] [stdout] 2128 + state.drill_cursor = 0; [INFO] [stdout] 2129 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/tui.rs:2567:20 [INFO] [stdout] | [INFO] [stdout] 2567 | if !(matches!(self.mode, ViewMode::History) && self.history_file_tree_focus) [INFO] [stdout] | ____________________^ [INFO] [stdout] 2568 | | && !matches!(self.mode, ViewMode::Tree) => [INFO] [stdout] | |___________________________________________________________^ help: try: `!(matches!(self.mode, ViewMode::Tree) || matches!(self.mode, ViewMode::History) && self.history_file_tree_focus)` [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: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/tui.rs:2330:29 [INFO] [stdout] | [INFO] [stdout] 2330 | / ... if cur < len { [INFO] [stdout] 2331 | | ... let recipe_name = items[cur].0.clone(); [INFO] [stdout] 2332 | | ... self.modal_overlay = None; [INFO] [stdout] 2333 | | ... self.status_msg = format!("Recipe: {recipe_name}"); [INFO] [stdout] 2334 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 2329 ~ KeyCode::Enter [INFO] [stdout] 2330 ~ if cur < len => { [INFO] [stdout] 2331 | let recipe_name = items[cur].0.clone(); [INFO] [stdout] 2332 | self.modal_overlay = None; [INFO] [stdout] 2333 | self.status_msg = format!("Recipe: {recipe_name}"); [INFO] [stdout] 2334 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/tui.rs:2362:29 [INFO] [stdout] | [INFO] [stdout] 2362 | / ... if cur < len { [INFO] [stdout] 2363 | | ... let label = items[cur].0.clone(); [INFO] [stdout] 2364 | | ... self.modal_overlay = None; [INFO] [stdout] 2365 | | ... self.set_label_filter(&label); [INFO] [stdout] 2366 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 2361 ~ KeyCode::Enter [INFO] [stdout] 2362 ~ if cur < len => { [INFO] [stdout] 2363 | let label = items[cur].0.clone(); [INFO] [stdout] 2364 | self.modal_overlay = None; [INFO] [stdout] 2365 | self.set_label_filter(&label); [INFO] [stdout] 2366 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/tui.rs:2394:29 [INFO] [stdout] | [INFO] [stdout] 2394 | / ... if cur < len { [INFO] [stdout] 2395 | | ... let repo = items[cur].clone(); [INFO] [stdout] 2396 | | ... self.modal_overlay = None; [INFO] [stdout] 2397 | | ... self.set_repo_filter(&repo); [INFO] [stdout] 2398 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 2393 ~ KeyCode::Enter [INFO] [stdout] 2394 ~ if cur < len => { [INFO] [stdout] 2395 | let repo = items[cur].clone(); [INFO] [stdout] 2396 | self.modal_overlay = None; [INFO] [stdout] 2397 | self.set_repo_filter(&repo); [INFO] [stdout] 2398 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/tui.rs:2797:17 [INFO] [stdout] | [INFO] [stdout] 2797 | / if self.tree_cursor + 1 < self.tree_flat_nodes.len() { [INFO] [stdout] 2798 | | self.tree_cursor += 1; [INFO] [stdout] 2799 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 2796 ~ KeyCode::Char('j') | KeyCode::Down if self.tree_shortcut_focus() [INFO] [stdout] 2797 ~ && self.tree_cursor + 1 < self.tree_flat_nodes.len() => { [INFO] [stdout] 2798 | self.tree_cursor += 1; [INFO] [stdout] 2799 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: these match arms have identical bodies [INFO] [stdout] --> src/tui.rs:2666:25 [INFO] [stdout] | [INFO] [stdout] 2666 | FocusPane::List => FocusPane::Detail, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 2667 | FocusPane::Middle => FocusPane::Detail, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: if this is unintentional make the arms return different values [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_same_arms [INFO] [stdout] help: otherwise merge the patterns into a single arm [INFO] [stdout] | [INFO] [stdout] 2666 - FocusPane::List => FocusPane::Detail, [INFO] [stdout] 2667 - FocusPane::Middle => FocusPane::Detail, [INFO] [stdout] 2666 + FocusPane::List | FocusPane::Middle => FocusPane::Detail, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: adding items after statements is confusing, since items exist from the start of the scope [INFO] [stdout] --> src/tui.rs:3507:9 [INFO] [stdout] | [INFO] [stdout] 3507 | / fn insert_path( [INFO] [stdout] 3508 | | nodes: &mut Vec, [INFO] [stdout] 3509 | | parts: &[&str], [INFO] [stdout] 3510 | | level: usize, [INFO] [stdout] ... | [INFO] [stdout] 3544 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#items_after_statements [INFO] [stdout] = note: `-W clippy::items-after-statements` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::items_after_statements)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: adding items after statements is confusing, since items exist from the start of the scope [INFO] [stdout] --> src/tui.rs:3546:9 [INFO] [stdout] | [INFO] [stdout] 3546 | / fn sort_nodes(nodes: &mut [FileTreeNode]) { [INFO] [stdout] 3547 | | for node in nodes.iter_mut() { [INFO] [stdout] 3548 | | sort_nodes(&mut node.children); [INFO] [stdout] ... | [INFO] [stdout] 3555 | | }); [INFO] [stdout] 3556 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#items_after_statements [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `self` argument [INFO] [stdout] --> src/tui.rs:5158:26 [INFO] [stdout] | [INFO] [stdout] 5158 | fn help_overlay_text(&self, width: usize) -> String { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider refactoring to an associated function [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_self [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variables can be used directly in the `format!` string [INFO] [stdout] --> src/tui.rs:5268:28 [INFO] [stdout] | [INFO] [stdout] 5268 | block.push(format!(" {:<12} {}", key, desc)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 5268 - block.push(format!(" {:<12} {}", key, desc)); [INFO] [stdout] 5268 + block.push(format!(" {key:<12} {desc}")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manually reimplementing `div_ceil` [INFO] [stdout] --> src/tui.rs:5299:30 [INFO] [stdout] | [INFO] [stdout] 5299 | let target_per_col = (total_lines + num_cols - 1) / num_cols; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `total_lines.div_ceil(num_cols)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_div_ceil [INFO] [stdout] = note: `#[warn(clippy::manual_div_ceil)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/tui.rs:5319:43 [INFO] [stdout] | [INFO] [stdout] 5319 | let max_rows = columns.iter().map(|c| c.len()).max().unwrap_or(0); [INFO] [stdout] | ^^^^^^^^^^^ help: replace the closure with the method itself: `std::vec::Vec::len` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual checked division [INFO] [stdout] --> src/tui.rs:5320:35 [INFO] [stdout] | [INFO] [stdout] 5320 | let actual_col_width = if num_cols > 0 { [INFO] [stdout] | ^^^^^^^^^^^^ check performed here [INFO] [stdout] 5321 | (width.saturating_sub(num_cols - 1)) / num_cols [INFO] [stdout] | ----------------------------------------------- division performed here [INFO] [stdout] | [INFO] [stdout] = help: consider using `checked_div` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_checked_ops [INFO] [stdout] = note: `#[warn(clippy::manual_checked_ops)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map().unwrap_or()` on an `Option` value [INFO] [stdout] --> src/tui.rs:5330:28 [INFO] [stdout] | [INFO] [stdout] 5330 | let cell = col_data.get(row).map(|s| s.as_str()).unwrap_or(""); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_unwrap_or [INFO] [stdout] help: use `map_or(, )` instead [INFO] [stdout] | [INFO] [stdout] 5330 - let cell = col_data.get(row).map(|s| s.as_str()).unwrap_or(""); [INFO] [stdout] 5330 + let cell = col_data.get(row).map_or("", |s| s.as_str()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/tui.rs:5330:50 [INFO] [stdout] | [INFO] [stdout] 5330 | let cell = col_data.get(row).map(|s| s.as_str()).unwrap_or(""); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace the closure with the method itself: `std::string::String::as_str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map().unwrap_or_else()` on an `Option` value [INFO] [stdout] --> src/tui.rs:6226:29 [INFO] [stdout] | [INFO] [stdout] 6226 | let title = issue [INFO] [stdout] | _____________________________^ [INFO] [stdout] 6227 | | .map(|issue| truncate_str(&issue.title, inner_width.saturating_sub(18))) [INFO] [stdout] 6228 | | .unwrap_or_else(|| bead_id.clone()); [INFO] [stdout] | |_______________________________________________________^ help: try: `issue.map_or_else(|| bead_id.clone(), |issue| truncate_str(&issue.title, inner_width.saturating_sub(18)))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_unwrap_or [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map().unwrap_or_else()` on an `Option` value [INFO] [stdout] --> src/tui.rs:6331:26 [INFO] [stdout] | [INFO] [stdout] 6331 | let ts = event [INFO] [stdout] | __________________________^ [INFO] [stdout] 6332 | | .timestamp [INFO] [stdout] 6333 | | .map(|dt| format_compact_timestamp(Some(dt))) [INFO] [stdout] 6334 | | .unwrap_or_else(|| "n/a".to_string()); [INFO] [stdout] | |_________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_unwrap_or [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 6331 ~ let ts = event [INFO] [stdout] 6332 ~ .timestamp.map_or_else(|| "n/a".to_string(), |dt| format_compact_timestamp(Some(dt))); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `self` argument [INFO] [stdout] --> src/tui.rs:6363:9 [INFO] [stdout] | [INFO] [stdout] 6363 | &self, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider refactoring to an associated function [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_self [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: it looks like the same item is being pushed into this `Vec` [INFO] [stdout] --> src/tui.rs:6385:17 [INFO] [stdout] | [INFO] [stdout] 6385 | markers.push("├"); [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider using `vec!["├";SIZE]` [INFO] [stdout] = help: or `markers.extend(std::iter::repeat_n("├", SIZE))` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#same_item_push [INFO] [stdout] = note: `#[warn(clippy::same_item_push)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `usize` to `isize` may wrap around the value [INFO] [stdout] --> src/tui.rs:6461:28 [INFO] [stdout] | [INFO] [stdout] 6461 | let new_pos = (self.actionable_track_cursor as isize + delta).clamp(0, max as isize); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_wrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `usize` to `isize` may wrap around the value [INFO] [stdout] --> src/tui.rs:6461:84 [INFO] [stdout] | [INFO] [stdout] 6461 | let new_pos = (self.actionable_track_cursor as isize + delta).clamp(0, max as isize); [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_wrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `isize` to `usize` may lose the sign of the value [INFO] [stdout] --> src/tui.rs:6462:44 [INFO] [stdout] | [INFO] [stdout] 6462 | self.actionable_track_cursor = new_pos as usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_sign_loss [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `usize` to `isize` may wrap around the value [INFO] [stdout] --> src/tui.rs:6468:32 [INFO] [stdout] | [INFO] [stdout] 6468 | let new_pos = (self.actionable_item_cursor as isize + delta).clamp(0, max as isize); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_wrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `usize` to `isize` may wrap around the value [INFO] [stdout] --> src/tui.rs:6468:87 [INFO] [stdout] | [INFO] [stdout] 6468 | let new_pos = (self.actionable_item_cursor as isize + delta).clamp(0, max as isize); [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_wrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `isize` to `usize` may lose the sign of the value [INFO] [stdout] --> src/tui.rs:6469:47 [INFO] [stdout] | [INFO] [stdout] 6469 | self.actionable_item_cursor = new_pos as usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_sign_loss [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/tui.rs:6625:9 [INFO] [stdout] | [INFO] [stdout] 6625 | md.push_str(&format!("# {} — {}\n\n", issue.id, issue.title)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 6625 - md.push_str(&format!("# {} — {}\n\n", issue.id, issue.title)); [INFO] [stdout] 6625 + let _ = write!(md, "# {} — {}\n\n", issue.id, issue.title); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/tui.rs:6626:9 [INFO] [stdout] | [INFO] [stdout] 6626 | / md.push_str(&format!( [INFO] [stdout] 6627 | | "**Status:** {} | **Priority:** p{} | **Type:** {}\n\n", [INFO] [stdout] 6628 | | issue.status, issue.priority, issue.issue_type [INFO] [stdout] 6629 | | )); [INFO] [stdout] | |__________^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 6626 ~ let _ = write!(md, "**Status:** {} | **Priority:** p{} | **Type:** {}\n\n", [INFO] [stdout] 6627 ~ issue.status, issue.priority, issue.issue_type); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/tui.rs:6631:13 [INFO] [stdout] | [INFO] [stdout] 6631 | md.push_str(&format!("**Assignee:** {}\n\n", issue.assignee)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 6631 - md.push_str(&format!("**Assignee:** {}\n\n", issue.assignee)); [INFO] [stdout] 6631 + let _ = write!(md, "**Assignee:** {}\n\n", issue.assignee); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/tui.rs:6634:13 [INFO] [stdout] | [INFO] [stdout] 6634 | md.push_str(&format!("## Description\n\n{}\n\n", issue.description)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 6634 - md.push_str(&format!("## Description\n\n{}\n\n", issue.description)); [INFO] [stdout] 6634 + let _ = write!(md, "## Description\n\n{}\n\n", issue.description); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/tui.rs:6637:13 [INFO] [stdout] | [INFO] [stdout] 6637 | md.push_str(&format!("## Notes\n\n{}\n\n", issue.notes)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 6637 - md.push_str(&format!("## Notes\n\n{}\n\n", issue.notes)); [INFO] [stdout] 6637 + let _ = write!(md, "## Notes\n\n{}\n\n", issue.notes); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/tui.rs:6640:13 [INFO] [stdout] | [INFO] [stdout] 6640 | md.push_str(&format!("**Labels:** {}\n", issue.labels.join(", "))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 6640 - md.push_str(&format!("**Labels:** {}\n", issue.labels.join(", "))); [INFO] [stdout] 6640 + let _ = write!(md, "**Labels:** {}\n", issue.labels.join(", ")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this could be rewritten as `let...else` [INFO] [stdout] --> src/tui.rs:6688:9 [INFO] [stdout] | [INFO] [stdout] 6688 | / let issues = match loader::load_issues(repo_path) { [INFO] [stdout] 6689 | | Ok(issues) => issues, [INFO] [stdout] 6690 | | Err(_) => return, // silently ignore — data unchanged [INFO] [stdout] 6691 | | }; [INFO] [stdout] | |__________^ help: consider writing: `let Ok(issues) = loader::load_issues(repo_path) else { return };` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_let_else [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `usize` to `i32` may truncate the value on targets with 64-bit wide pointers [INFO] [stdout] --> src/tui.rs:6746:19 [INFO] [stdout] | [INFO] [stdout] 6746 | let cur = self.attention_cursor as i32 + delta; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ... [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_truncation [INFO] [stdout] help: ... or use `try_from` and handle the error accordingly [INFO] [stdout] | [INFO] [stdout] 6746 - let cur = self.attention_cursor as i32 + delta; [INFO] [stdout] 6746 + let cur = i32::try_from(self.attention_cursor) + delta; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `usize` to `i32` may wrap around the value on targets with 32-bit wide pointers [INFO] [stdout] --> src/tui.rs:6746:19 [INFO] [stdout] | [INFO] [stdout] 6746 | let cur = self.attention_cursor as i32 + delta; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_wrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `i32` to `usize` may lose the sign of the value [INFO] [stdout] --> src/tui.rs:6747:33 [INFO] [stdout] | [INFO] [stdout] 6747 | self.attention_cursor = cur.clamp(0, count as i32 - 1) as usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_sign_loss [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `usize` to `i32` may truncate the value on targets with 64-bit wide pointers [INFO] [stdout] --> src/tui.rs:6747:46 [INFO] [stdout] | [INFO] [stdout] 6747 | self.attention_cursor = cur.clamp(0, count as i32 - 1) as usize; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ... [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_truncation [INFO] [stdout] help: ... or use `try_from` and handle the error accordingly [INFO] [stdout] | [INFO] [stdout] 6747 - self.attention_cursor = cur.clamp(0, count as i32 - 1) as usize; [INFO] [stdout] 6747 + self.attention_cursor = cur.clamp(0, i32::try_from(count) - 1) as usize; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `usize` to `i32` may wrap around the value on targets with 32-bit wide pointers [INFO] [stdout] --> src/tui.rs:6747:46 [INFO] [stdout] | [INFO] [stdout] 6747 | self.attention_cursor = cur.clamp(0, count as i32 - 1) as usize; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_wrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/tui.rs:6763:20 [INFO] [stdout] | [INFO] [stdout] 6763 | lines.push(format!("{}", "─".repeat(72))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"─".repeat(72).to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map().unwrap_or()` on an `Option` value [INFO] [stdout] --> src/tui.rs:7032:29 [INFO] [stdout] | [INFO] [stdout] 7032 | let title = self [INFO] [stdout] | _____________________________^ [INFO] [stdout] 7033 | | .analyzer [INFO] [stdout] 7034 | | .issues [INFO] [stdout] 7035 | | .iter() [INFO] [stdout] 7036 | | .find(|i| i.id == *b) [INFO] [stdout] 7037 | | .map(|i| i.title.as_str()) [INFO] [stdout] 7038 | | .unwrap_or("?"); [INFO] [stdout] | |___________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_unwrap_or [INFO] [stdout] help: use `map_or(, )` instead [INFO] [stdout] | [INFO] [stdout] 7037 - .map(|i| i.title.as_str()) [INFO] [stdout] 7038 - .unwrap_or("?"); [INFO] [stdout] 7037 + .map_or("?", |i| i.title.as_str()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map().unwrap_or()` on an `Option` value [INFO] [stdout] --> src/tui.rs:7047:29 [INFO] [stdout] | [INFO] [stdout] 7047 | let title = self [INFO] [stdout] | _____________________________^ [INFO] [stdout] 7048 | | .analyzer [INFO] [stdout] 7049 | | .issues [INFO] [stdout] 7050 | | .iter() [INFO] [stdout] 7051 | | .find(|i| i.id == *d) [INFO] [stdout] 7052 | | .map(|i| i.title.as_str()) [INFO] [stdout] 7053 | | .unwrap_or("?"); [INFO] [stdout] | |___________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_unwrap_or [INFO] [stdout] help: use `map_or(, )` instead [INFO] [stdout] | [INFO] [stdout] 7052 - .map(|i| i.title.as_str()) [INFO] [stdout] 7053 - .unwrap_or("?"); [INFO] [stdout] 7052 + .map_or("?", |i| i.title.as_str()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `i32` to `usize` may lose the sign of the value [INFO] [stdout] --> src/tui.rs:7113:30 [INFO] [stdout] | [INFO] [stdout] 7113 | let bar_filled = (label.health as usize).min(100) / 10; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_sign_loss [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map().unwrap_or()` on an `Option` value [INFO] [stdout] --> src/tui.rs:7224:29 [INFO] [stdout] | [INFO] [stdout] 7224 | let title = self [INFO] [stdout] | _____________________________^ [INFO] [stdout] 7225 | | .analyzer [INFO] [stdout] 7226 | | .issues [INFO] [stdout] 7227 | | .iter() [INFO] [stdout] 7228 | | .find(|i| i.id == *id) [INFO] [stdout] 7229 | | .map(|i| i.title.as_str()) [INFO] [stdout] 7230 | | .unwrap_or("?"); [INFO] [stdout] | |___________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_unwrap_or [INFO] [stdout] help: use `map_or(, )` instead [INFO] [stdout] | [INFO] [stdout] 7229 - .map(|i| i.title.as_str()) [INFO] [stdout] 7230 - .unwrap_or("?"); [INFO] [stdout] 7229 + .map_or("?", |i| i.title.as_str()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map().unwrap_or()` on an `Option` value [INFO] [stdout] --> src/tui.rs:7401:37 [INFO] [stdout] | [INFO] [stdout] 7401 | let title = self [INFO] [stdout] | _____________________________________^ [INFO] [stdout] 7402 | | .analyzer [INFO] [stdout] 7403 | | .issues [INFO] [stdout] 7404 | | .iter() [INFO] [stdout] 7405 | | .find(|i| i.id == *id) [INFO] [stdout] 7406 | | .map(|i| i.title.as_str()) [INFO] [stdout] 7407 | | .unwrap_or("?"); [INFO] [stdout] | |___________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_unwrap_or [INFO] [stdout] help: use `map_or(, )` instead [INFO] [stdout] | [INFO] [stdout] 7406 - .map(|i| i.title.as_str()) [INFO] [stdout] 7407 - .unwrap_or("?"); [INFO] [stdout] 7406 + .map_or("?", |i| i.title.as_str()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/tui.rs:7543:60 [INFO] [stdout] | [INFO] [stdout] 7543 | let new_count = diff.new_issues.as_ref().map_or(0, |v| v.len()); [INFO] [stdout] | ^^^^^^^^^^^ help: replace the closure with the method itself: `std::vec::Vec::len` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/tui.rs:7544:66 [INFO] [stdout] | [INFO] [stdout] 7544 | let closed_count = diff.closed_issues.as_ref().map_or(0, |v| v.len()); [INFO] [stdout] | ^^^^^^^^^^^ help: replace the closure with the method itself: `std::vec::Vec::len` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/tui.rs:7545:68 [INFO] [stdout] | [INFO] [stdout] 7545 | let removed_count = diff.removed_issues.as_ref().map_or(0, |v| v.len()); [INFO] [stdout] | ^^^^^^^^^^^ help: replace the closure with the method itself: `std::vec::Vec::len` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/tui.rs:7546:70 [INFO] [stdout] | [INFO] [stdout] 7546 | let reopened_count = diff.reopened_issues.as_ref().map_or(0, |v| v.len()); [INFO] [stdout] | ^^^^^^^^^^^ help: replace the closure with the method itself: `std::vec::Vec::len` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/tui.rs:7547:70 [INFO] [stdout] | [INFO] [stdout] 7547 | let modified_count = diff.modified_issues.as_ref().map_or(0, |v| v.len()); [INFO] [stdout] | ^^^^^^^^^^^ help: replace the closure with the method itself: `std::vec::Vec::len` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/tui.rs:7548:61 [INFO] [stdout] | [INFO] [stdout] 7548 | let new_cycles = diff.new_cycles.as_ref().map_or(0, |v| v.len()); [INFO] [stdout] | ^^^^^^^^^^^ help: replace the closure with the method itself: `std::vec::Vec::len` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/tui.rs:7549:71 [INFO] [stdout] | [INFO] [stdout] 7549 | let resolved_cycles = diff.resolved_cycles.as_ref().map_or(0, |v| v.len()); [INFO] [stdout] | ^^^^^^^^^^^ help: replace the closure with the method itself: `std::vec::Vec::len` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this could be rewritten as `let...else` [INFO] [stdout] --> src/tui.rs:7766:9 [INFO] [stdout] | [INFO] [stdout] 7766 | / let sprint = match self.sprint_data.get(self.sprint_cursor) { [INFO] [stdout] 7767 | | Some(s) => s, [INFO] [stdout] 7768 | | None => return Vec::new(), [INFO] [stdout] 7769 | | }; [INFO] [stdout] | |__________^ help: consider writing: `let Some(sprint) = self.sprint_data.get(self.sprint_cursor) else { return Vec::new() };` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_let_else [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `f64` to `u32` may truncate the value [INFO] [stdout] --> src/tui.rs:7833:27 [INFO] [stdout] | [INFO] [stdout] 7833 | let pct = (closed as f64 / matched_issues as f64 * 100.0) as u32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ... [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_truncation [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `f64` to `u32` may lose the sign of the value [INFO] [stdout] --> src/tui.rs:7833:27 [INFO] [stdout] | [INFO] [stdout] 7833 | let pct = (closed as f64 / matched_issues as f64 * 100.0) as u32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_sign_loss [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this could be rewritten as `let...else` [INFO] [stdout] --> src/tui.rs:7842:9 [INFO] [stdout] | [INFO] [stdout] 7842 | / let sprint = match self.sprint_data.get(self.sprint_cursor) { [INFO] [stdout] 7843 | | Some(s) => s, [INFO] [stdout] 7844 | | None => return " Select a sprint from the list.".to_string(), [INFO] [stdout] 7845 | | }; [INFO] [stdout] | |__________^ help: consider writing: `let Some(sprint) = self.sprint_data.get(self.sprint_cursor) else { return " Select a sprint from the list.".to_string() };` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_let_else [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `f64` to `usize` may truncate the value [INFO] [stdout] --> src/tui.rs:7926:27 [INFO] [stdout] | [INFO] [stdout] 7926 | let pct = (closed as f64 / total as f64 * 100.0) as usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ... [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_truncation [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `f64` to `usize` may lose the sign of the value [INFO] [stdout] --> src/tui.rs:7926:27 [INFO] [stdout] | [INFO] [stdout] 7926 | let pct = (closed as f64 / total as f64 * 100.0) as usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_sign_loss [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `self` argument [INFO] [stdout] --> src/tui.rs:8853:37 [INFO] [stdout] | [INFO] [stdout] 8853 | fn graph_relationship_box_width(&self, width: usize, count: usize) -> usize { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider refactoring to an associated function [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_self [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `self` argument [INFO] [stdout] --> src/tui.rs:8934:29 [INFO] [stdout] | [INFO] [stdout] 8934 | fn graph_connector_rows(&self, count: usize, width: usize) -> Vec { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider refactoring to an associated function [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_self [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: these match arms have identical bodies [INFO] [stdout] --> src/tui.rs:9126:13 [INFO] [stdout] | [INFO] [stdout] 9126 | / FocusPane::Middle => { [INFO] [stdout] 9127 | | "Focused edge: list focus (Tab to inspect relationships)".to_string() [INFO] [stdout] 9128 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] 9129 | / FocusPane::List => { [INFO] [stdout] 9130 | | "Focused edge: list focus (Tab to inspect relationships)".to_string() [INFO] [stdout] 9131 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: if this is unintentional make the arms return different values [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_same_arms [INFO] [stdout] help: otherwise merge the patterns into a single arm [INFO] [stdout] | [INFO] [stdout] 9126 ~ FocusPane::Middle | FocusPane::List => { [INFO] [stdout] 9127 | "Focused edge: list focus (Tab to inspect relationships)".to_string() [INFO] [stdout] 9128 | } [INFO] [stdout] 9129 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map().unwrap_or()` on an `Option` value [INFO] [stdout] --> src/tui.rs:9097:33 [INFO] [stdout] | [INFO] [stdout] 9097 | let title = self [INFO] [stdout] | _________________________________^ [INFO] [stdout] 9098 | | .issue_by_id(target) [INFO] [stdout] 9099 | | .map(|candidate| candidate.title.as_str()) [INFO] [stdout] 9100 | | .unwrap_or("?"); [INFO] [stdout] | |_______________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_unwrap_or [INFO] [stdout] help: use `map_or(, )` instead [INFO] [stdout] | [INFO] [stdout] 9099 - .map(|candidate| candidate.title.as_str()) [INFO] [stdout] 9100 - .unwrap_or("?"); [INFO] [stdout] 9099 + .map_or("?", |candidate| candidate.title.as_str()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map().unwrap_or()` on an `Option` value [INFO] [stdout] --> src/tui.rs:9112:33 [INFO] [stdout] | [INFO] [stdout] 9112 | let title = self [INFO] [stdout] | _________________________________^ [INFO] [stdout] 9113 | | .issue_by_id(target) [INFO] [stdout] 9114 | | .map(|candidate| candidate.title.as_str()) [INFO] [stdout] 9115 | | .unwrap_or("?"); [INFO] [stdout] | |_______________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_unwrap_or [INFO] [stdout] help: use `map_or(, )` instead [INFO] [stdout] | [INFO] [stdout] 9114 - .map(|candidate| candidate.title.as_str()) [INFO] [stdout] 9115 - .unwrap_or("?"); [INFO] [stdout] 9114 + .map_or("?", |candidate| candidate.title.as_str()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map().unwrap_or_else()` on an `Option` value [INFO] [stdout] --> src/tui.rs:9519:30 [INFO] [stdout] | [INFO] [stdout] 9519 | let ts = event [INFO] [stdout] | ______________________________^ [INFO] [stdout] 9520 | | .timestamp [INFO] [stdout] 9521 | | .map(|dt| dt.to_rfc3339_opts(chrono::SecondsFormat::Secs, true)) [INFO] [stdout] 9522 | | .unwrap_or_else(|| "n/a".to_string()); [INFO] [stdout] | |_____________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_unwrap_or [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 9519 ~ let ts = event [INFO] [stdout] 9520 ~ .timestamp.map_or_else(|| "n/a".to_string(), |dt| dt.to_rfc3339_opts(chrono::SecondsFormat::Secs, true)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use Option::map_or_else instead of an if let/else [INFO] [stdout] --> src/tui.rs:10342:21 [INFO] [stdout] | [INFO] [stdout] 10342 | / if let Some(line) = box_lines.get(row) { [INFO] [stdout] 10343 | | line.clone() [INFO] [stdout] 10344 | | } else { [INFO] [stdout] 10345 | | let fallback_width = [INFO] [stdout] 10346 | | box_lines.first().map_or(0, |line| display_width(line)); [INFO] [stdout] 10347 | | " ".repeat(fallback_width) [INFO] [stdout] 10348 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_if_let_else [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 10342 ~ box_lines.get(row).map_or_else(|| { [INFO] [stdout] 10343 + let fallback_width = [INFO] [stdout] 10344 + box_lines.first().map_or(0, |line| display_width(line)); [INFO] [stdout] 10345 + " ".repeat(fallback_width) [INFO] [stdout] 10346 + }, |line| line.clone()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: single-character string constant used as pattern [INFO] [stdout] --> src/analysis/alerts.rs:640:44 [INFO] [stdout] | [INFO] [stdout] 640 | assert!(alerts[0].message.contains("A")); [INFO] [stdout] | ^^^ help: consider using a `char`: `'A'` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stdout] = note: `-W clippy::single-char-pattern` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::single_char_pattern)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`i32` -> `i32`) [INFO] [stdout] --> src/analysis/alerts.rs:814:26 [INFO] [stdout] | [INFO] [stdout] 814 | d.priority = i as i32; // priorities 1, 2, 3 [INFO] [stdout] | ^^^^^^^^ help: try: `i` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: item in documentation is missing backticks [INFO] [stdout] --> src/analysis/cache.rs:30:53 [INFO] [stdout] | [INFO] [stdout] 30 | /// The cache avoids recomputing expensive metrics (PageRank, betweenness, HITS, etc.) [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown [INFO] [stdout] = note: `-W clippy::doc-markdown` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::doc_markdown)]` [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 30 - /// The cache avoids recomputing expensive metrics (PageRank, betweenness, HITS, etc.) [INFO] [stdout] 30 + /// The cache avoids recomputing expensive metrics (`PageRank`, betweenness, HITS, etc.) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/analysis/cache.rs:80:62 [INFO] [stdout] | [INFO] [stdout] 80 | let entries = self.entries.lock().unwrap_or_else(|e| e.into_inner()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace the closure with the method itself: `std::sync::PoisonError::into_inner` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] = note: `-W clippy::redundant-closure-for-method-calls` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::redundant_closure_for_method_calls)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/analysis/cache.rs:83:54 [INFO] [stdout] | [INFO] [stdout] 83 | *self.hits.lock().unwrap_or_else(|e| e.into_inner()) += 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace the closure with the method itself: `std::sync::PoisonError::into_inner` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/analysis/cache.rs:90:44 [INFO] [stdout] | [INFO] [stdout] 90 | *self.misses.lock().unwrap_or_else(|e| e.into_inner()) += 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace the closure with the method itself: `std::sync::PoisonError::into_inner` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/analysis/cache.rs:96:66 [INFO] [stdout] | [INFO] [stdout] 96 | let mut entries = self.entries.lock().unwrap_or_else(|e| e.into_inner()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace the closure with the method itself: `std::sync::PoisonError::into_inner` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/analysis/cache.rs:116:29 [INFO] [stdout] | [INFO] [stdout] 116 | .unwrap_or_else(|e| e.into_inner()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace the closure with the method itself: `std::sync::PoisonError::into_inner` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/analysis/cache.rs:123:58 [INFO] [stdout] | [INFO] [stdout] 123 | let entries = self.entries.lock().unwrap_or_else(|e| e.into_inner()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace the closure with the method itself: `std::sync::PoisonError::into_inner` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/analysis/cache.rs:124:53 [INFO] [stdout] | [INFO] [stdout] 124 | let hits = *self.hits.lock().unwrap_or_else(|e| e.into_inner()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace the closure with the method itself: `std::sync::PoisonError::into_inner` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/analysis/cache.rs:125:57 [INFO] [stdout] | [INFO] [stdout] 125 | let misses = *self.misses.lock().unwrap_or_else(|e| e.into_inner()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace the closure with the method itself: `std::sync::PoisonError::into_inner` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: item in documentation is missing backticks [INFO] [stdout] --> src/analysis/cache.rs:146:7 [INFO] [stdout] | [INFO] [stdout] 146 | /// - AnalysisConfig toggles (since they affect which metrics are computed) [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 146 - /// - AnalysisConfig toggles (since they affect which metrics are computed) [INFO] [stdout] 146 + /// - `AnalysisConfig` toggles (since they affect which metrics are computed) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `sort` on primitive type `tuple` [INFO] [stdout] --> src/analysis/cache.rs:155:5 [INFO] [stdout] | [INFO] [stdout] 155 | sorted_ids.sort(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try: `sorted_ids.sort_unstable()` [INFO] [stdout] | [INFO] [stdout] = note: an unstable sort typically performs faster without any observable difference for this data type [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#stable_sort_primitive [INFO] [stdout] = note: `-W clippy::stable-sort-primitive` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::stable_sort_primitive)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `sort` on primitive type `tuple` [INFO] [stdout] --> src/analysis/cache.rs:173:5 [INFO] [stdout] | [INFO] [stdout] 173 | edges.sort(); [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `edges.sort_unstable()` [INFO] [stdout] | [INFO] [stdout] = note: an unstable sort typically performs faster without any observable difference for this data type [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#stable_sort_primitive [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field assignment outside of initializer for an instance created with Default::default() [INFO] [stdout] --> src/analysis/cache.rs:361:9 [INFO] [stdout] | [INFO] [stdout] 361 | config2.enable_pagerank = false; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `analysis::graph::AnalysisConfig { enable_pagerank: false, ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> src/analysis/cache.rs:360:9 [INFO] [stdout] | [INFO] [stdout] 360 | let mut config2 = AnalysisConfig::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: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/analysis/causal.rs:876:17 [INFO] [stdout] | [INFO] [stdout] 876 | / if blocked_start.is_none() { [INFO] [stdout] 877 | | blocked_start = Some(( [INFO] [stdout] 878 | | event.timestamp.clone(), [INFO] [stdout] 879 | | event.blocker_id.clone().unwrap_or_default(), [INFO] [stdout] 880 | | )); [INFO] [stdout] 881 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 875 ~ "blocked" [INFO] [stdout] 876 ~ if blocked_start.is_none() => { [INFO] [stdout] 877 | blocked_start = Some(( [INFO] [stdout] ... [INFO] [stdout] 880 | )); [INFO] [stdout] 881 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: strict comparison of `f32` or `f64` [INFO] [stdout] --> src/analysis/causal.rs:1591:9 [INFO] [stdout] | [INFO] [stdout] 1591 | assert_eq!(sub.stats.density, 0.0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stdout] = note: `-W clippy::float-cmp` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::float_cmp)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: item in documentation is missing backticks [INFO] [stdout] --> tests/cli_model_validation.rs:7:7 [INFO] [stdout] | [INFO] [stdout] 7 | //! - content_hash / external_ref model serialization [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown [INFO] [stdout] = note: `-W clippy::doc-markdown` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::doc_markdown)]` [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 7 - //! - content_hash / external_ref model serialization [INFO] [stdout] 7 + //! - `content_hash` / external_ref model serialization [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: item in documentation is missing backticks [INFO] [stdout] --> tests/cli_model_validation.rs:7:22 [INFO] [stdout] | [INFO] [stdout] 7 | //! - content_hash / external_ref model serialization [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 7 - //! - content_hash / external_ref model serialization [INFO] [stdout] 7 + //! - content_hash / `external_ref` model serialization [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: item in documentation is missing backticks [INFO] [stdout] --> tests/e2e_export_pages.rs:6:7 [INFO] [stdout] | [INFO] [stdout] 6 | //! - SQLite database is populated and queryable [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown [INFO] [stdout] = note: `-W clippy::doc-markdown` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::doc_markdown)]` [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 6 - //! - SQLite database is populated and queryable [INFO] [stdout] 6 + //! - `SQLite` database is populated and queryable [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: item in documentation is missing backticks [INFO] [stdout] --> tests/e2e_export_pages.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 11 | //! Set BVR_E2E_ARTIFACT_DIR to capture per-scenario diagnostics. [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 11 - //! Set BVR_E2E_ARTIFACT_DIR to capture per-scenario diagnostics. [INFO] [stdout] 11 + //! Set `BVR_E2E_ARTIFACT_DIR` to capture per-scenario diagnostics. [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> tests/e2e_export_pages.rs:31:5 [INFO] [stdout] | [INFO] [stdout] 27 | / let dir = tempfile::Builder::new() [INFO] [stdout] 28 | | .prefix(&format!("bvr_e2e_export_{label}_")) [INFO] [stdout] 29 | | .tempdir() [INFO] [stdout] 30 | | .expect("create temp dir"); [INFO] [stdout] | |___________________________________- unnecessary `let` binding [INFO] [stdout] 31 | dir [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] = note: `#[warn(clippy::let_and_return)]` on by default [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 27 ~ [INFO] [stdout] 28 ~ tempfile::Builder::new() [INFO] [stdout] 29 + .prefix(&format!("bvr_e2e_export_{label}_")) [INFO] [stdout] 30 + .tempdir() [INFO] [stdout] 31 + .expect("create temp dir") [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: adding items after statements is confusing, since items exist from the start of the scope [INFO] [stdout] --> tests/e2e_export_pages.rs:629:9 [INFO] [stdout] | [INFO] [stdout] 629 | use std::io::Write; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#items_after_statements [INFO] [stdout] = note: `-W clippy::items-after-statements` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::items_after_statements)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> tests/e2e_workspace_history.rs:119:9 [INFO] [stdout] | [INFO] [stdout] 119 | / yaml_repos.push_str(&format!( [INFO] [stdout] 120 | | " - name: {name}\n path: {name}\n prefix: \"{name}-\"\n" [INFO] [stdout] 121 | | )); [INFO] [stdout] | |__________^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] = note: `-W clippy::format-push-string` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::format_push_string)]` [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 119 - yaml_repos.push_str(&format!( [INFO] [stdout] 120 - " - name: {name}\n path: {name}\n prefix: \"{name}-\"\n" [INFO] [stdout] 121 - )); [INFO] [stdout] 119 + let _ = write!(yaml_repos, " - name: {name}\n path: {name}\n prefix: \"{name}-\"\n"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: strict comparison of `f32` or `f64` [INFO] [stdout] --> src/analysis/diff.rs:1410:9 [INFO] [stdout] | [INFO] [stdout] 1410 | assert_eq!(average_map_value(&map), 0.0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> tests/e2e_workspace_history.rs:1067:22 [INFO] [stdout] | [INFO] [stdout] 1067 | let has_method = dist.as_object().map_or(false, |m| { [INFO] [stdout] | ______________________^ [INFO] [stdout] 1068 | | m.values() [INFO] [stdout] 1069 | | .any(|v| v.as_u64().unwrap_or(0) > 0 || v.as_i64().unwrap_or(0) > 0) [INFO] [stdout] 1070 | | }); [INFO] [stdout] | |______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 1067 - let has_method = dist.as_object().map_or(false, |m| { [INFO] [stdout] 1067 + let has_method = dist.as_object().is_some_and(|m| { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: strict comparison of `f32` or `f64` [INFO] [stdout] --> src/analysis/drift.rs:1019:9 [INFO] [stdout] | [INFO] [stdout] 1019 | assert_eq!(baseline.stats.density, 0.0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty String is being created manually [INFO] [stdout] --> src/analysis/file_intel.rs:1247:59 [INFO] [stdout] | [INFO] [stdout] 1247 | &["src/main.rs".to_string(), " ".to_string(), "".to_string()], [INFO] [stdout] | ^^^^^^^^^^^^^^ help: consider using: `String::new()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_string_new [INFO] [stdout] = note: `-W clippy::manual-string-new` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::manual_string_new)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary struct building [INFO] [stdout] --> src/analysis/forecast.rs:664:21 [INFO] [stdout] | [INFO] [stdout] 664 | let issue = Issue { ..Issue::default() }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `Issue::default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_struct_initialization [INFO] [stdout] = note: `-W clippy::unnecessary-struct-initialization` implied by `-W clippy::nursery` [INFO] [stdout] = help: to override `-W clippy::nursery` add `#[allow(clippy::unnecessary_struct_initialization)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: strict comparison of `f32` or `f64` [INFO] [stdout] --> src/analysis/forecast.rs:749:9 [INFO] [stdout] | [INFO] [stdout] 749 | assert_eq!(velocity, 0.0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: strict comparison of `f32` or `f64` [INFO] [stdout] --> src/analysis/forecast.rs:825:9 [INFO] [stdout] | [INFO] [stdout] 825 | assert_eq!(super::clamp(0.5, 0.1, 0.9), 0.5); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: strict comparison of `f32` or `f64` [INFO] [stdout] --> src/analysis/forecast.rs:826:9 [INFO] [stdout] | [INFO] [stdout] 826 | assert_eq!(super::clamp(-0.5, 0.1, 0.9), 0.1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: strict comparison of `f32` or `f64` [INFO] [stdout] --> src/analysis/forecast.rs:827:9 [INFO] [stdout] | [INFO] [stdout] 827 | assert_eq!(super::clamp(1.5, 0.1, 0.9), 0.9); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this could be a `const fn` [INFO] [stdout] --> src/main.rs:32:1 [INFO] [stdout] | [INFO] [stdout] 32 | / fn analysis_config_for_cli(cli: &Cli) -> AnalysisConfig { [INFO] [stdout] 33 | | if cli.robot_next [INFO] [stdout] 34 | | || cli.robot_triage [INFO] [stdout] 35 | | || cli.robot_triage_by_track [INFO] [stdout] ... | [INFO] [stdout] 48 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_const_for_fn [INFO] [stdout] = note: `-W clippy::missing-const-for-fn` implied by `-W clippy::nursery` [INFO] [stdout] = help: to override `-W clippy::nursery` add `#[allow(clippy::missing_const_for_fn)]` [INFO] [stdout] help: make the function `const` [INFO] [stdout] | [INFO] [stdout] 32 | const fn analysis_config_for_cli(cli: &Cli) -> AnalysisConfig { [INFO] [stdout] | +++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:495:64 [INFO] [stdout] | [INFO] [stdout] 495 | weight_adjustments: feedback_weight_adjustments.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:495:37 [INFO] [stdout] | [INFO] [stdout] 495 | weight_adjustments: feedback_weight_adjustments.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] = note: `-W clippy::redundant-clone` implied by `-W clippy::nursery` [INFO] [stdout] = help: to override `-W clippy::nursery` add `#[allow(clippy::redundant_clone)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:506:33 [INFO] [stdout] | [INFO] [stdout] 506 | as_of: as_of.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:506:28 [INFO] [stdout] | [INFO] [stdout] 506 | as_of: as_of.clone(), [INFO] [stdout] | ^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:507:47 [INFO] [stdout] | [INFO] [stdout] 507 | as_of_commit: as_of_commit.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:507:35 [INFO] [stdout] | [INFO] [stdout] 507 | as_of_commit: as_of_commit.clone(), [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:520:33 [INFO] [stdout] | [INFO] [stdout] 520 | as_of: as_of.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:520:28 [INFO] [stdout] | [INFO] [stdout] 520 | as_of: as_of.clone(), [INFO] [stdout] | ^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:521:47 [INFO] [stdout] | [INFO] [stdout] 521 | as_of_commit: as_of_commit.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:521:35 [INFO] [stdout] | [INFO] [stdout] 521 | as_of_commit: as_of_commit.clone(), [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:550:25 [INFO] [stdout] | [INFO] [stdout] 550 | as_of: as_of.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:550:20 [INFO] [stdout] | [INFO] [stdout] 550 | as_of: as_of.clone(), [INFO] [stdout] | ^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:551:39 [INFO] [stdout] | [INFO] [stdout] 551 | as_of_commit: as_of_commit.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:551:27 [INFO] [stdout] | [INFO] [stdout] 551 | as_of_commit: as_of_commit.clone(), [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:576:64 [INFO] [stdout] | [INFO] [stdout] 576 | weight_adjustments: feedback_weight_adjustments.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:576:37 [INFO] [stdout] | [INFO] [stdout] 576 | weight_adjustments: feedback_weight_adjustments.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:585:25 [INFO] [stdout] | [INFO] [stdout] 585 | as_of: as_of.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:585:20 [INFO] [stdout] | [INFO] [stdout] 585 | as_of: as_of.clone(), [INFO] [stdout] | ^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:586:39 [INFO] [stdout] | [INFO] [stdout] 586 | as_of_commit: as_of_commit.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:586:27 [INFO] [stdout] | [INFO] [stdout] 586 | as_of_commit: as_of_commit.clone(), [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:587:37 [INFO] [stdout] | [INFO] [stdout] 587 | label_scope: label_scope.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:587:26 [INFO] [stdout] | [INFO] [stdout] 587 | label_scope: label_scope.clone(), [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:588:41 [INFO] [stdout] | [INFO] [stdout] 588 | label_context: label_context.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:588:28 [INFO] [stdout] | [INFO] [stdout] 588 | label_context: label_context.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:619:25 [INFO] [stdout] | [INFO] [stdout] 619 | as_of: as_of.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:619:20 [INFO] [stdout] | [INFO] [stdout] 619 | as_of: as_of.clone(), [INFO] [stdout] | ^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:620:39 [INFO] [stdout] | [INFO] [stdout] 620 | as_of_commit: as_of_commit.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:620:27 [INFO] [stdout] | [INFO] [stdout] 620 | as_of_commit: as_of_commit.clone(), [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:621:37 [INFO] [stdout] | [INFO] [stdout] 621 | label_scope: label_scope.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:621:26 [INFO] [stdout] | [INFO] [stdout] 621 | label_scope: label_scope.clone(), [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:622:41 [INFO] [stdout] | [INFO] [stdout] 622 | label_context: label_context.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:622:28 [INFO] [stdout] | [INFO] [stdout] 622 | label_context: label_context.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:660:25 [INFO] [stdout] | [INFO] [stdout] 660 | as_of: as_of.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:660:20 [INFO] [stdout] | [INFO] [stdout] 660 | as_of: as_of.clone(), [INFO] [stdout] | ^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:661:39 [INFO] [stdout] | [INFO] [stdout] 661 | as_of_commit: as_of_commit.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:661:27 [INFO] [stdout] | [INFO] [stdout] 661 | as_of_commit: as_of_commit.clone(), [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:662:37 [INFO] [stdout] | [INFO] [stdout] 662 | label_scope: label_scope.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:662:26 [INFO] [stdout] | [INFO] [stdout] 662 | label_scope: label_scope.clone(), [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:663:41 [INFO] [stdout] | [INFO] [stdout] 663 | label_context: label_context.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:663:28 [INFO] [stdout] | [INFO] [stdout] 663 | label_context: label_context.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:1045:64 [INFO] [stdout] | [INFO] [stdout] 1045 | weight_adjustments: feedback_weight_adjustments.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:1045:37 [INFO] [stdout] | [INFO] [stdout] 1045 | weight_adjustments: feedback_weight_adjustments.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:1704:64 [INFO] [stdout] | [INFO] [stdout] 1704 | weight_adjustments: feedback_weight_adjustments.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:1704:37 [INFO] [stdout] | [INFO] [stdout] 1704 | weight_adjustments: feedback_weight_adjustments.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:1763:64 [INFO] [stdout] | [INFO] [stdout] 1763 | weight_adjustments: feedback_weight_adjustments.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:1763:37 [INFO] [stdout] | [INFO] [stdout] 1763 | weight_adjustments: feedback_weight_adjustments.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:1801:64 [INFO] [stdout] | [INFO] [stdout] 1801 | weight_adjustments: feedback_weight_adjustments.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:1801:37 [INFO] [stdout] | [INFO] [stdout] 1801 | weight_adjustments: feedback_weight_adjustments.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:1828:64 [INFO] [stdout] | [INFO] [stdout] 1828 | weight_adjustments: feedback_weight_adjustments.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:1828:37 [INFO] [stdout] | [INFO] [stdout] 1828 | weight_adjustments: feedback_weight_adjustments.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `unwrap_or` [INFO] [stdout] --> src/main.rs:364:22 [INFO] [stdout] | [INFO] [stdout] 364 | .unwrap_or(Path::new("./bv-pages")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|| Path::new("./bv-pages"))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stdout] = note: `-W clippy::or-fun-call` implied by `-W clippy::nursery` [INFO] [stdout] = help: to override `-W clippy::nursery` add `#[allow(clippy::or_fun_call)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/main.rs:420:9 [INFO] [stdout] | [INFO] [stdout] 420 | / match bvr::analysis::drift::Baseline::load(&project_dir) { [INFO] [stdout] 421 | | Ok(bl) => { [INFO] [stdout] 422 | | println!("Baseline info:"); [INFO] [stdout] 423 | | println!(" Created: {}", bl.created_at); [INFO] [stdout] ... | [INFO] [stdout] 441 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match_else [INFO] [stdout] = note: `-W clippy::single-match-else` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::single_match_else)]` [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 420 ~ if let Ok(bl) = bvr::analysis::drift::Baseline::load(&project_dir) { [INFO] [stdout] 421 + println!("Baseline info:"); [INFO] [stdout] 422 + println!(" Created: {}", bl.created_at); [INFO] [stdout] 423 + if !bl.description.is_empty() { [INFO] [stdout] 424 + println!(" Description: {}", bl.description); [INFO] [stdout] 425 + } [INFO] [stdout] 426 + println!(" Nodes: {}", bl.stats.node_count); [INFO] [stdout] 427 + println!(" Edges: {}", bl.stats.edge_count); [INFO] [stdout] 428 + println!(" Open: {}", bl.stats.open_count); [INFO] [stdout] 429 + println!(" Closed: {}", bl.stats.closed_count); [INFO] [stdout] 430 + println!(" Blocked: {}", bl.stats.blocked_count); [INFO] [stdout] 431 + println!(" Actionable: {}", bl.stats.actionable_count); [INFO] [stdout] 432 + println!(" Cycles: {}", bl.stats.cycle_count); [INFO] [stdout] 433 + println!(" Density: {:.4}", bl.stats.density); [INFO] [stdout] 434 + return ExitCode::SUCCESS; [INFO] [stdout] 435 + } else { [INFO] [stdout] 436 + println!("No baseline found. Run --save-baseline to create one."); [INFO] [stdout] 437 + return ExitCode::SUCCESS; [INFO] [stdout] 438 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct update has no effect, all the fields in the struct have already been specified [INFO] [stdout] --> src/main.rs:498:15 [INFO] [stdout] | [INFO] [stdout] 498 | ..TriageOptions::default() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_update [INFO] [stdout] = note: `#[warn(clippy::needless_update)]` 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:502:32 [INFO] [stdout] | [INFO] [stdout] 502 | let env = envelope(&issues); [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [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 expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:549:32 [INFO] [stdout] | [INFO] [stdout] 549 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct update has no effect, all the fields in the struct have already been specified [INFO] [stdout] --> src/main.rs:579:15 [INFO] [stdout] | [INFO] [stdout] 579 | ..TriageOptions::default() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_update [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:584:32 [INFO] [stdout] | [INFO] [stdout] 584 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:618:32 [INFO] [stdout] | [INFO] [stdout] 618 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:659:32 [INFO] [stdout] | [INFO] [stdout] 659 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:748:47 [INFO] [stdout] | [INFO] [stdout] 748 | let output = build_robot_graph_output(&issues, &analyzer, &cli, None); [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:762:55 [INFO] [stdout] | [INFO] [stdout] 762 | let output = build_robot_graph_output(&issues, &analyzer, &cli, Some(format)); [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:775:58 [INFO] [stdout] | [INFO] [stdout] 775 | let graph_data = build_graph_export_data(&issues, &analyzer, &cli); [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:810:13 [INFO] [stdout] | [INFO] [stdout] 810 | &issues, [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:819:32 [INFO] [stdout] | [INFO] [stdout] 819 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:822:45 [INFO] [stdout] | [INFO] [stdout] 822 | to_data_hash: compute_data_hash(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:835:61 [INFO] [stdout] | [INFO] [stdout] 835 | let output = match build_robot_history_output(&cli, &issues, &analyzer) { [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:852:62 [INFO] [stdout] | [INFO] [stdout] 852 | let output = match build_robot_burndown_output(&cli, &issues, target_sprint) { [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:869:50 [INFO] [stdout] | [INFO] [stdout] 869 | let output = build_robot_capacity_output(&issues, &cli); [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:969:32 [INFO] [stdout] | [INFO] [stdout] 969 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:998:40 [INFO] [stdout] | [INFO] [stdout] 998 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1011:36 [INFO] [stdout] | [INFO] [stdout] 1011 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1026:32 [INFO] [stdout] | [INFO] [stdout] 1026 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct update has no effect, all the fields in the struct have already been specified [INFO] [stdout] --> src/main.rs:1048:15 [INFO] [stdout] | [INFO] [stdout] 1048 | ..TriageOptions::default() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_update [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1085:36 [INFO] [stdout] | [INFO] [stdout] 1085 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1103:32 [INFO] [stdout] | [INFO] [stdout] 1103 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1108:21 [INFO] [stdout] | [INFO] [stdout] 1108 | &issues, [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1130:32 [INFO] [stdout] | [INFO] [stdout] 1130 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1132:72 [INFO] [stdout] | [INFO] [stdout] 1132 | flow: bvr::analysis::label_intel::compute_cross_label_flow(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1148:65 [INFO] [stdout] | [INFO] [stdout] 1148 | bvr::analysis::label_intel::compute_label_attention(&issues, &analyzer.metrics, limit); [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1150:32 [INFO] [stdout] | [INFO] [stdout] 1150 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1187:36 [INFO] [stdout] | [INFO] [stdout] 1187 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1219:69 [INFO] [stdout] | [INFO] [stdout] 1219 | let history_output = match build_robot_history_output(&cli, &issues, &analyzer) { [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1253:36 [INFO] [stdout] | [INFO] [stdout] 1253 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1321:69 [INFO] [stdout] | [INFO] [stdout] 1321 | let history_output = match build_robot_history_output(&cli, &issues, &analyzer) { [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: item in documentation is missing backticks [INFO] [stdout] --> src/analysis/graph.rs:77:49 [INFO] [stdout] | [INFO] [stdout] 77 | /// Minimal config for triage scoring (only PageRank + betweenness + basic). [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 77 - /// Minimal config for triage scoring (only PageRank + betweenness + basic). [INFO] [stdout] 77 + /// Minimal config for triage scoring (only `PageRank` + betweenness + basic). [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1350:36 [INFO] [stdout] | [INFO] [stdout] 1350 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1367:36 [INFO] [stdout] | [INFO] [stdout] 1367 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1385:36 [INFO] [stdout] | [INFO] [stdout] 1385 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1404:36 [INFO] [stdout] | [INFO] [stdout] 1404 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1422:36 [INFO] [stdout] | [INFO] [stdout] 1422 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1441:36 [INFO] [stdout] | [INFO] [stdout] 1441 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1460:36 [INFO] [stdout] | [INFO] [stdout] 1460 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1471:73 [INFO] [stdout] | [INFO] [stdout] 1471 | let history_output = match build_robot_history_output(&cli, &issues, &analyzer) { [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1485:36 [INFO] [stdout] | [INFO] [stdout] 1485 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary structure name repetition [INFO] [stdout] --> src/analysis/graph.rs:202:40 [INFO] [stdout] | [INFO] [stdout] 202 | pub fn merge_slow(&mut self, slow: GraphMetrics) { [INFO] [stdout] | ^^^^^^^^^^^^ help: use the applicable keyword: `Self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#use_self [INFO] [stdout] = note: `-W clippy::use-self` implied by `-W clippy::nursery` [INFO] [stdout] = help: to override `-W clippy::nursery` add `#[allow(clippy::use_self)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1496:73 [INFO] [stdout] | [INFO] [stdout] 1496 | let history_output = match build_robot_history_output(&cli, &issues, &analyzer) { [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1509:36 [INFO] [stdout] | [INFO] [stdout] 1509 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1530:13 [INFO] [stdout] | [INFO] [stdout] 1530 | &issues, [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1566:13 [INFO] [stdout] | [INFO] [stdout] 1566 | &issues, [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary boolean `not` operation [INFO] [stdout] --> src/main.rs:1570:9 [INFO] [stdout] | [INFO] [stdout] 1570 | / if !result.has_drift { [INFO] [stdout] 1571 | | println!("No drift detected."); [INFO] [stdout] 1572 | | } else { [INFO] [stdout] 1573 | | println!( [INFO] [stdout] ... | [INFO] [stdout] 1585 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_not_else [INFO] [stdout] = note: `-W clippy::if-not-else` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::if_not_else)]` [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 1570 ~ if result.has_drift { [INFO] [stdout] 1571 + println!( [INFO] [stdout] 1572 + "Drift detected: {} critical, {} warning, {} info", [INFO] [stdout] 1573 + result.summary.critical, result.summary.warning, result.summary.info [INFO] [stdout] 1574 + ); [INFO] [stdout] 1575 + for alert in &result.alerts { [INFO] [stdout] 1576 + println!( [INFO] [stdout] 1577 + " [{}] {}: {}", [INFO] [stdout] 1578 + alert.severity.to_uppercase(), [INFO] [stdout] 1579 + alert.alert_type, [INFO] [stdout] 1580 + alert.message [INFO] [stdout] 1581 + ); [INFO] [stdout] 1582 + } [INFO] [stdout] 1583 + } else { [INFO] [stdout] 1584 + println!("No drift detected."); [INFO] [stdout] 1585 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1608:13 [INFO] [stdout] | [INFO] [stdout] 1608 | &issues, [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1614:32 [INFO] [stdout] | [INFO] [stdout] 1614 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1654:13 [INFO] [stdout] | [INFO] [stdout] 1654 | &issues, [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this could be a `const fn` [INFO] [stdout] --> src/main.rs:32:1 [INFO] [stdout] | [INFO] [stdout] 32 | / fn analysis_config_for_cli(cli: &Cli) -> AnalysisConfig { [INFO] [stdout] 33 | | if cli.robot_next [INFO] [stdout] 34 | | || cli.robot_triage [INFO] [stdout] 35 | | || cli.robot_triage_by_track [INFO] [stdout] ... | [INFO] [stdout] 48 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_const_for_fn [INFO] [stdout] = note: `-W clippy::missing-const-for-fn` implied by `-W clippy::nursery` [INFO] [stdout] = help: to override `-W clippy::nursery` add `#[allow(clippy::missing_const_for_fn)]` [INFO] [stdout] help: make the function `const` [INFO] [stdout] | [INFO] [stdout] 32 | const fn analysis_config_for_cli(cli: &Cli) -> AnalysisConfig { [INFO] [stdout] | +++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1677:32 [INFO] [stdout] | [INFO] [stdout] 1677 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct update has no effect, all the fields in the struct have already been specified [INFO] [stdout] --> src/main.rs:1707:15 [INFO] [stdout] | [INFO] [stdout] 1707 | ..TriageOptions::default() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_update [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1718:21 [INFO] [stdout] | [INFO] [stdout] 1718 | &issues, [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1738:32 [INFO] [stdout] | [INFO] [stdout] 1738 | &compute_data_hash(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct update has no effect, all the fields in the struct have already been specified [INFO] [stdout] --> src/main.rs:1766:15 [INFO] [stdout] | [INFO] [stdout] 1766 | ..TriageOptions::default() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_update [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct update has no effect, all the fields in the struct have already been specified [INFO] [stdout] --> src/main.rs:1804:15 [INFO] [stdout] | [INFO] [stdout] 1804 | ..TriageOptions::default() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_update [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1806:28 [INFO] [stdout] | [INFO] [stdout] 1806 | let env = envelope(&issues); [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1808:13 [INFO] [stdout] | [INFO] [stdout] 1808 | &issues, [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct update has no effect, all the fields in the struct have already been specified [INFO] [stdout] --> src/main.rs:1831:15 [INFO] [stdout] | [INFO] [stdout] 1831 | ..TriageOptions::default() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_update [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1835:28 [INFO] [stdout] | [INFO] [stdout] 1835 | let env = envelope(&issues); [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1837:13 [INFO] [stdout] | [INFO] [stdout] 1837 | &issues, [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/analysis/graph.rs:493:28 [INFO] [stdout] | [INFO] [stdout] 493 | .chain(self.dependents(&id).into_iter()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/3645249d79dfb136b5d8de3ce153d19d6698d92d/library/core/src/iter/traits/iterator.rs:510:11 [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] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 493 - .chain(self.dependents(&id).into_iter()); [INFO] [stdout] 493 + .chain(self.dependents(&id)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1865:57 [INFO] [stdout] | [INFO] [stdout] 1865 | let mut issue_count = count_pages_export_issues(&issues, &options); [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1880:55 [INFO] [stdout] | [INFO] [stdout] 1880 | || bvr::export_pages::export_pages_bundle(&issues, export_path, &options), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary boolean `not` operation [INFO] [stdout] --> src/analysis/graph.rs:538:26 [INFO] [stdout] | [INFO] [stdout] 538 | let reason = if !config.enable_betweenness { [INFO] [stdout] | __________________________^ [INFO] [stdout] 539 | | "disabled by config".to_string() [INFO] [stdout] 540 | | } else { [INFO] [stdout] 541 | | format!( [INFO] [stdout] ... | [INFO] [stdout] 545 | | }; [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_not_else [INFO] [stdout] = note: `-W clippy::if-not-else` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::if_not_else)]` [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 538 ~ let reason = if config.enable_betweenness { [INFO] [stdout] 539 + format!( [INFO] [stdout] 540 + "graph too large ({n} nodes > {} max)", [INFO] [stdout] 541 + config.betweenness_max_nodes [INFO] [stdout] 542 + ) [INFO] [stdout] 543 + } else { [INFO] [stdout] 544 + "disabled by config".to_string() [INFO] [stdout] 545 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary boolean `not` operation [INFO] [stdout] --> src/analysis/graph.rs:556:26 [INFO] [stdout] | [INFO] [stdout] 556 | let reason = if !config.enable_eigenvector { [INFO] [stdout] | __________________________^ [INFO] [stdout] 557 | | "disabled by config".to_string() [INFO] [stdout] 558 | | } else { [INFO] [stdout] 559 | | format!( [INFO] [stdout] ... | [INFO] [stdout] 563 | | }; [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_not_else [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 556 ~ let reason = if config.enable_eigenvector { [INFO] [stdout] 557 + format!( [INFO] [stdout] 558 + "graph too large ({n} nodes > {} max)", [INFO] [stdout] 559 + config.eigenvector_max_nodes [INFO] [stdout] 560 + ) [INFO] [stdout] 561 + } else { [INFO] [stdout] 562 + "disabled by config".to_string() [INFO] [stdout] 563 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:2092:13 [INFO] [stdout] | [INFO] [stdout] 2092 | &issues, [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: implicitly cloning a `Vec` by calling `to_vec` on its dereferenced type [INFO] [stdout] --> src/main.rs:2105:13 [INFO] [stdout] | [INFO] [stdout] 2105 | issues.to_vec(), [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: consider using: `issues.clone()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_clone [INFO] [stdout] = note: `-W clippy::implicit-clone` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::implicit_clone)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: implicitly cloning a `Vec` by calling `to_vec` on its dereferenced type [INFO] [stdout] --> src/main.rs:2129:45 [INFO] [stdout] | [INFO] [stdout] 2129 | match bvr::tui::run_tui_with_background(issues.to_vec(), background_runtime) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: consider using: `issues.clone()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:495:64 [INFO] [stdout] | [INFO] [stdout] 495 | weight_adjustments: feedback_weight_adjustments.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:495:37 [INFO] [stdout] | [INFO] [stdout] 495 | weight_adjustments: feedback_weight_adjustments.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] = note: `-W clippy::redundant-clone` implied by `-W clippy::nursery` [INFO] [stdout] = help: to override `-W clippy::nursery` add `#[allow(clippy::redundant_clone)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:506:33 [INFO] [stdout] | [INFO] [stdout] 506 | as_of: as_of.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:506:28 [INFO] [stdout] | [INFO] [stdout] 506 | as_of: as_of.clone(), [INFO] [stdout] | ^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:2292:30 [INFO] [stdout] | [INFO] [stdout] 2292 | format_path_list(&starts), [INFO] [stdout] | ^^^^^^^ help: change this to: `starts` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:507:47 [INFO] [stdout] | [INFO] [stdout] 507 | as_of_commit: as_of_commit.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:507:35 [INFO] [stdout] | [INFO] [stdout] 507 | as_of_commit: as_of_commit.clone(), [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:520:33 [INFO] [stdout] | [INFO] [stdout] 520 | as_of: as_of.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:520:28 [INFO] [stdout] | [INFO] [stdout] 520 | as_of: as_of.clone(), [INFO] [stdout] | ^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:521:47 [INFO] [stdout] | [INFO] [stdout] 521 | as_of_commit: as_of_commit.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:521:35 [INFO] [stdout] | [INFO] [stdout] 521 | as_of_commit: as_of_commit.clone(), [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:550:25 [INFO] [stdout] | [INFO] [stdout] 550 | as_of: as_of.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:550:20 [INFO] [stdout] | [INFO] [stdout] 550 | as_of: as_of.clone(), [INFO] [stdout] | ^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:551:39 [INFO] [stdout] | [INFO] [stdout] 551 | as_of_commit: as_of_commit.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:551:27 [INFO] [stdout] | [INFO] [stdout] 551 | as_of_commit: as_of_commit.clone(), [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:576:64 [INFO] [stdout] | [INFO] [stdout] 576 | weight_adjustments: feedback_weight_adjustments.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:576:37 [INFO] [stdout] | [INFO] [stdout] 576 | weight_adjustments: feedback_weight_adjustments.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:585:25 [INFO] [stdout] | [INFO] [stdout] 585 | as_of: as_of.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:585:20 [INFO] [stdout] | [INFO] [stdout] 585 | as_of: as_of.clone(), [INFO] [stdout] | ^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:586:39 [INFO] [stdout] | [INFO] [stdout] 586 | as_of_commit: as_of_commit.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:586:27 [INFO] [stdout] | [INFO] [stdout] 586 | as_of_commit: as_of_commit.clone(), [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:587:37 [INFO] [stdout] | [INFO] [stdout] 587 | label_scope: label_scope.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:587:26 [INFO] [stdout] | [INFO] [stdout] 587 | label_scope: label_scope.clone(), [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:588:41 [INFO] [stdout] | [INFO] [stdout] 588 | label_context: label_context.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:588:28 [INFO] [stdout] | [INFO] [stdout] 588 | label_context: label_context.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:619:25 [INFO] [stdout] | [INFO] [stdout] 619 | as_of: as_of.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:619:20 [INFO] [stdout] | [INFO] [stdout] 619 | as_of: as_of.clone(), [INFO] [stdout] | ^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:620:39 [INFO] [stdout] | [INFO] [stdout] 620 | as_of_commit: as_of_commit.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:620:27 [INFO] [stdout] | [INFO] [stdout] 620 | as_of_commit: as_of_commit.clone(), [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:621:37 [INFO] [stdout] | [INFO] [stdout] 621 | label_scope: label_scope.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:621:26 [INFO] [stdout] | [INFO] [stdout] 621 | label_scope: label_scope.clone(), [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:622:41 [INFO] [stdout] | [INFO] [stdout] 622 | label_context: label_context.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:622:28 [INFO] [stdout] | [INFO] [stdout] 622 | label_context: label_context.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:660:25 [INFO] [stdout] | [INFO] [stdout] 660 | as_of: as_of.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:660:20 [INFO] [stdout] | [INFO] [stdout] 660 | as_of: as_of.clone(), [INFO] [stdout] | ^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:661:39 [INFO] [stdout] | [INFO] [stdout] 661 | as_of_commit: as_of_commit.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:661:27 [INFO] [stdout] | [INFO] [stdout] 661 | as_of_commit: as_of_commit.clone(), [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:662:37 [INFO] [stdout] | [INFO] [stdout] 662 | label_scope: label_scope.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:662:26 [INFO] [stdout] | [INFO] [stdout] 662 | label_scope: label_scope.clone(), [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:663:41 [INFO] [stdout] | [INFO] [stdout] 663 | label_context: label_context.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:663:28 [INFO] [stdout] | [INFO] [stdout] 663 | label_context: label_context.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:1045:64 [INFO] [stdout] | [INFO] [stdout] 1045 | weight_adjustments: feedback_weight_adjustments.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:1045:37 [INFO] [stdout] | [INFO] [stdout] 1045 | weight_adjustments: feedback_weight_adjustments.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:1704:64 [INFO] [stdout] | [INFO] [stdout] 1704 | weight_adjustments: feedback_weight_adjustments.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:1704:37 [INFO] [stdout] | [INFO] [stdout] 1704 | weight_adjustments: feedback_weight_adjustments.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:1763:64 [INFO] [stdout] | [INFO] [stdout] 1763 | weight_adjustments: feedback_weight_adjustments.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:1763:37 [INFO] [stdout] | [INFO] [stdout] 1763 | weight_adjustments: feedback_weight_adjustments.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:1801:64 [INFO] [stdout] | [INFO] [stdout] 1801 | weight_adjustments: feedback_weight_adjustments.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:1801:37 [INFO] [stdout] | [INFO] [stdout] 1801 | weight_adjustments: feedback_weight_adjustments.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:1828:64 [INFO] [stdout] | [INFO] [stdout] 1828 | weight_adjustments: feedback_weight_adjustments.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:1828:37 [INFO] [stdout] | [INFO] [stdout] 1828 | weight_adjustments: feedback_weight_adjustments.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `unwrap_or` [INFO] [stdout] --> src/main.rs:364:22 [INFO] [stdout] | [INFO] [stdout] 364 | .unwrap_or(Path::new("./bv-pages")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|| Path::new("./bv-pages"))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stdout] = note: `-W clippy::or-fun-call` implied by `-W clippy::nursery` [INFO] [stdout] = help: to override `-W clippy::nursery` add `#[allow(clippy::or_fun_call)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/main.rs:420:9 [INFO] [stdout] | [INFO] [stdout] 420 | / match bvr::analysis::drift::Baseline::load(&project_dir) { [INFO] [stdout] 421 | | Ok(bl) => { [INFO] [stdout] 422 | | println!("Baseline info:"); [INFO] [stdout] 423 | | println!(" Created: {}", bl.created_at); [INFO] [stdout] ... | [INFO] [stdout] 441 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match_else [INFO] [stdout] = note: `-W clippy::single-match-else` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::single_match_else)]` [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 420 ~ if let Ok(bl) = bvr::analysis::drift::Baseline::load(&project_dir) { [INFO] [stdout] 421 + println!("Baseline info:"); [INFO] [stdout] 422 + println!(" Created: {}", bl.created_at); [INFO] [stdout] 423 + if !bl.description.is_empty() { [INFO] [stdout] 424 + println!(" Description: {}", bl.description); [INFO] [stdout] 425 + } [INFO] [stdout] 426 + println!(" Nodes: {}", bl.stats.node_count); [INFO] [stdout] 427 + println!(" Edges: {}", bl.stats.edge_count); [INFO] [stdout] 428 + println!(" Open: {}", bl.stats.open_count); [INFO] [stdout] 429 + println!(" Closed: {}", bl.stats.closed_count); [INFO] [stdout] 430 + println!(" Blocked: {}", bl.stats.blocked_count); [INFO] [stdout] 431 + println!(" Actionable: {}", bl.stats.actionable_count); [INFO] [stdout] 432 + println!(" Cycles: {}", bl.stats.cycle_count); [INFO] [stdout] 433 + println!(" Density: {:.4}", bl.stats.density); [INFO] [stdout] 434 + return ExitCode::SUCCESS; [INFO] [stdout] 435 + } else { [INFO] [stdout] 436 + println!("No baseline found. Run --save-baseline to create one."); [INFO] [stdout] 437 + return ExitCode::SUCCESS; [INFO] [stdout] 438 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct update has no effect, all the fields in the struct have already been specified [INFO] [stdout] --> src/main.rs:498:15 [INFO] [stdout] | [INFO] [stdout] 498 | ..TriageOptions::default() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_update [INFO] [stdout] = note: `#[warn(clippy::needless_update)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: item in documentation is missing backticks [INFO] [stdout] --> src/main.rs:2745:30 [INFO] [stdout] | [INFO] [stdout] 2745 | /// Resolve --as-of flag to (as_of_value, resolved_commit_sha). [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown [INFO] [stdout] = note: `-W clippy::doc-markdown` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::doc_markdown)]` [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 2745 - /// Resolve --as-of flag to (as_of_value, resolved_commit_sha). [INFO] [stdout] 2745 + /// Resolve --as-of flag to (`as_of_value`, resolved_commit_sha). [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:502:32 [INFO] [stdout] | [INFO] [stdout] 502 | let env = envelope(&issues); [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [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: item in documentation is missing backticks [INFO] [stdout] --> src/main.rs:2745:43 [INFO] [stdout] | [INFO] [stdout] 2745 | /// Resolve --as-of flag to (as_of_value, resolved_commit_sha). [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 2745 - /// Resolve --as-of flag to (as_of_value, resolved_commit_sha). [INFO] [stdout] 2745 + /// Resolve --as-of flag to (as_of_value, `resolved_commit_sha`). [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `!=` operation [INFO] [stdout] --> src/main.rs:2751:18 [INFO] [stdout] | [INFO] [stdout] 2751 | let commit = if resolved != *ref_name { [INFO] [stdout] | __________________^ [INFO] [stdout] 2752 | | Some(resolved) [INFO] [stdout] 2753 | | } else { [INFO] [stdout] 2754 | | None [INFO] [stdout] 2755 | | }; [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_not_else [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 2751 ~ let commit = if resolved == *ref_name { [INFO] [stdout] 2752 + None [INFO] [stdout] 2753 + } else { [INFO] [stdout] 2754 + Some(resolved) [INFO] [stdout] 2755 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:549:32 [INFO] [stdout] | [INFO] [stdout] 549 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct update has no effect, all the fields in the struct have already been specified [INFO] [stdout] --> src/main.rs:579:15 [INFO] [stdout] | [INFO] [stdout] 579 | ..TriageOptions::default() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_update [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:584:32 [INFO] [stdout] | [INFO] [stdout] 584 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:618:32 [INFO] [stdout] | [INFO] [stdout] 618 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:659:32 [INFO] [stdout] | [INFO] [stdout] 659 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:748:47 [INFO] [stdout] | [INFO] [stdout] 748 | let output = build_robot_graph_output(&issues, &analyzer, &cli, None); [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:762:55 [INFO] [stdout] | [INFO] [stdout] 762 | let output = build_robot_graph_output(&issues, &analyzer, &cli, Some(format)); [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:775:58 [INFO] [stdout] | [INFO] [stdout] 775 | let graph_data = build_graph_export_data(&issues, &analyzer, &cli); [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:810:13 [INFO] [stdout] | [INFO] [stdout] 810 | &issues, [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:819:32 [INFO] [stdout] | [INFO] [stdout] 819 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:822:45 [INFO] [stdout] | [INFO] [stdout] 822 | to_data_hash: compute_data_hash(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:835:61 [INFO] [stdout] | [INFO] [stdout] 835 | let output = match build_robot_history_output(&cli, &issues, &analyzer) { [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:852:62 [INFO] [stdout] | [INFO] [stdout] 852 | let output = match build_robot_burndown_output(&cli, &issues, target_sprint) { [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:869:50 [INFO] [stdout] | [INFO] [stdout] 869 | let output = build_robot_capacity_output(&issues, &cli); [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:969:32 [INFO] [stdout] | [INFO] [stdout] 969 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:998:40 [INFO] [stdout] | [INFO] [stdout] 998 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1011:36 [INFO] [stdout] | [INFO] [stdout] 1011 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1026:32 [INFO] [stdout] | [INFO] [stdout] 1026 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct update has no effect, all the fields in the struct have already been specified [INFO] [stdout] --> src/main.rs:1048:15 [INFO] [stdout] | [INFO] [stdout] 1048 | ..TriageOptions::default() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_update [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1085:36 [INFO] [stdout] | [INFO] [stdout] 1085 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1103:32 [INFO] [stdout] | [INFO] [stdout] 1103 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1108:21 [INFO] [stdout] | [INFO] [stdout] 1108 | &issues, [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1130:32 [INFO] [stdout] | [INFO] [stdout] 1130 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion has a constant value [INFO] [stdout] --> src/analysis/graph.rs:2049:9 [INFO] [stdout] | [INFO] [stdout] 2049 | / assert!( [INFO] [stdout] 2050 | | AnalysisConfig::BACKGROUND_THRESHOLD >= 100, [INFO] [stdout] 2051 | | "threshold should be >= 100" [INFO] [stdout] 2052 | | ); [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] = note: `#[warn(clippy::assertions_on_constants)]` 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:1132:72 [INFO] [stdout] | [INFO] [stdout] 1132 | flow: bvr::analysis::label_intel::compute_cross_label_flow(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion has a constant value [INFO] [stdout] --> src/analysis/graph.rs:2053:9 [INFO] [stdout] | [INFO] [stdout] 2053 | / assert!( [INFO] [stdout] 2054 | | AnalysisConfig::BACKGROUND_THRESHOLD <= 1000, [INFO] [stdout] 2055 | | "threshold should be <= 1000" [INFO] [stdout] 2056 | | ); [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 expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1148:65 [INFO] [stdout] | [INFO] [stdout] 1148 | bvr::analysis::label_intel::compute_label_attention(&issues, &analyzer.metrics, limit); [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1150:32 [INFO] [stdout] | [INFO] [stdout] 1150 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1187:36 [INFO] [stdout] | [INFO] [stdout] 1187 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1219:69 [INFO] [stdout] | [INFO] [stdout] 1219 | let history_output = match build_robot_history_output(&cli, &issues, &analyzer) { [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1253:36 [INFO] [stdout] | [INFO] [stdout] 1253 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1321:69 [INFO] [stdout] | [INFO] [stdout] 1321 | let history_output = match build_robot_history_output(&cli, &issues, &analyzer) { [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1350:36 [INFO] [stdout] | [INFO] [stdout] 1350 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1367:36 [INFO] [stdout] | [INFO] [stdout] 1367 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1385:36 [INFO] [stdout] | [INFO] [stdout] 1385 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1404:36 [INFO] [stdout] | [INFO] [stdout] 1404 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1422:36 [INFO] [stdout] | [INFO] [stdout] 1422 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1441:36 [INFO] [stdout] | [INFO] [stdout] 1441 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1460:36 [INFO] [stdout] | [INFO] [stdout] 1460 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1471:73 [INFO] [stdout] | [INFO] [stdout] 1471 | let history_output = match build_robot_history_output(&cli, &issues, &analyzer) { [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1485:36 [INFO] [stdout] | [INFO] [stdout] 1485 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1496:73 [INFO] [stdout] | [INFO] [stdout] 1496 | let history_output = match build_robot_history_output(&cli, &issues, &analyzer) { [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1509:36 [INFO] [stdout] | [INFO] [stdout] 1509 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1530:13 [INFO] [stdout] | [INFO] [stdout] 1530 | &issues, [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option>` which implements the `Copy` trait [INFO] [stdout] --> src/analysis/history.rs:36:24 [INFO] [stdout] | [INFO] [stdout] 36 | timestamp: issue.created_at.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `issue.created_at` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option>` which implements the `Copy` trait [INFO] [stdout] --> src/analysis/history.rs:43:28 [INFO] [stdout] | [INFO] [stdout] 43 | timestamp: issue.updated_at.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `issue.updated_at` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1566:13 [INFO] [stdout] | [INFO] [stdout] 1566 | &issues, [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option>` which implements the `Copy` trait [INFO] [stdout] --> src/analysis/history.rs:51:28 [INFO] [stdout] | [INFO] [stdout] 51 | timestamp: issue.closed_at.clone().or_else(|| issue.updated_at.clone()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `issue.closed_at` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option>` which implements the `Copy` trait [INFO] [stdout] --> src/analysis/history.rs:51:63 [INFO] [stdout] | [INFO] [stdout] 51 | timestamp: issue.closed_at.clone().or_else(|| issue.updated_at.clone()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `issue.updated_at` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary boolean `not` operation [INFO] [stdout] --> src/main.rs:1570:9 [INFO] [stdout] | [INFO] [stdout] 1570 | / if !result.has_drift { [INFO] [stdout] 1571 | | println!("No drift detected."); [INFO] [stdout] 1572 | | } else { [INFO] [stdout] 1573 | | println!( [INFO] [stdout] ... | [INFO] [stdout] 1585 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_not_else [INFO] [stdout] = note: `-W clippy::if-not-else` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::if_not_else)]` [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 1570 ~ if result.has_drift { [INFO] [stdout] 1571 + println!( [INFO] [stdout] 1572 + "Drift detected: {} critical, {} warning, {} info", [INFO] [stdout] 1573 + result.summary.critical, result.summary.warning, result.summary.info [INFO] [stdout] 1574 + ); [INFO] [stdout] 1575 + for alert in &result.alerts { [INFO] [stdout] 1576 + println!( [INFO] [stdout] 1577 + " [{}] {}: {}", [INFO] [stdout] 1578 + alert.severity.to_uppercase(), [INFO] [stdout] 1579 + alert.alert_type, [INFO] [stdout] 1580 + alert.message [INFO] [stdout] 1581 + ); [INFO] [stdout] 1582 + } [INFO] [stdout] 1583 + } else { [INFO] [stdout] 1584 + println!("No drift detected."); [INFO] [stdout] 1585 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1608:13 [INFO] [stdout] | [INFO] [stdout] 1608 | &issues, [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1614:32 [INFO] [stdout] | [INFO] [stdout] 1614 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1654:13 [INFO] [stdout] | [INFO] [stdout] 1654 | &issues, [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1677:32 [INFO] [stdout] | [INFO] [stdout] 1677 | envelope: envelope(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct update has no effect, all the fields in the struct have already been specified [INFO] [stdout] --> src/main.rs:1707:15 [INFO] [stdout] | [INFO] [stdout] 1707 | ..TriageOptions::default() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_update [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1718:21 [INFO] [stdout] | [INFO] [stdout] 1718 | &issues, [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1738:32 [INFO] [stdout] | [INFO] [stdout] 1738 | &compute_data_hash(&issues), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct update has no effect, all the fields in the struct have already been specified [INFO] [stdout] --> src/main.rs:1766:15 [INFO] [stdout] | [INFO] [stdout] 1766 | ..TriageOptions::default() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_update [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct update has no effect, all the fields in the struct have already been specified [INFO] [stdout] --> src/main.rs:1804:15 [INFO] [stdout] | [INFO] [stdout] 1804 | ..TriageOptions::default() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_update [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1806:28 [INFO] [stdout] | [INFO] [stdout] 1806 | let env = envelope(&issues); [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1808:13 [INFO] [stdout] | [INFO] [stdout] 1808 | &issues, [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct update has no effect, all the fields in the struct have already been specified [INFO] [stdout] --> src/main.rs:1831:15 [INFO] [stdout] | [INFO] [stdout] 1831 | ..TriageOptions::default() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_update [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1835:28 [INFO] [stdout] | [INFO] [stdout] 1835 | let env = envelope(&issues); [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1837:13 [INFO] [stdout] | [INFO] [stdout] 1837 | &issues, [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1865:57 [INFO] [stdout] | [INFO] [stdout] 1865 | let mut issue_count = count_pages_export_issues(&issues, &options); [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:1880:55 [INFO] [stdout] | [INFO] [stdout] 1880 | || bvr::export_pages::export_pages_bundle(&issues, export_path, &options), [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:2092:13 [INFO] [stdout] | [INFO] [stdout] 2092 | &issues, [INFO] [stdout] | ^^^^^^^ help: change this to: `issues` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: implicitly cloning a `Vec` by calling `to_vec` on its dereferenced type [INFO] [stdout] --> src/main.rs:2105:13 [INFO] [stdout] | [INFO] [stdout] 2105 | issues.to_vec(), [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: consider using: `issues.clone()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_clone [INFO] [stdout] = note: `-W clippy::implicit-clone` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::implicit_clone)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: implicitly cloning a `Vec` by calling `to_vec` on its dereferenced type [INFO] [stdout] --> src/main.rs:2129:45 [INFO] [stdout] | [INFO] [stdout] 2129 | match bvr::tui::run_tui_with_background(issues.to_vec(), background_runtime) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: consider using: `issues.clone()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:2292:30 [INFO] [stdout] | [INFO] [stdout] 2292 | format_path_list(&starts), [INFO] [stdout] | ^^^^^^^ help: change this to: `starts` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: item in documentation is missing backticks [INFO] [stdout] --> src/main.rs:2745:30 [INFO] [stdout] | [INFO] [stdout] 2745 | /// Resolve --as-of flag to (as_of_value, resolved_commit_sha). [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown [INFO] [stdout] = note: `-W clippy::doc-markdown` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::doc_markdown)]` [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 2745 - /// Resolve --as-of flag to (as_of_value, resolved_commit_sha). [INFO] [stdout] 2745 + /// Resolve --as-of flag to (`as_of_value`, resolved_commit_sha). [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: item in documentation is missing backticks [INFO] [stdout] --> src/main.rs:2745:43 [INFO] [stdout] | [INFO] [stdout] 2745 | /// Resolve --as-of flag to (as_of_value, resolved_commit_sha). [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 2745 - /// Resolve --as-of flag to (as_of_value, resolved_commit_sha). [INFO] [stdout] 2745 + /// Resolve --as-of flag to (as_of_value, `resolved_commit_sha`). [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `!=` operation [INFO] [stdout] --> src/main.rs:2751:18 [INFO] [stdout] | [INFO] [stdout] 2751 | let commit = if resolved != *ref_name { [INFO] [stdout] | __________________^ [INFO] [stdout] 2752 | | Some(resolved) [INFO] [stdout] 2753 | | } else { [INFO] [stdout] 2754 | | None [INFO] [stdout] 2755 | | }; [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_not_else [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 2751 ~ let commit = if resolved == *ref_name { [INFO] [stdout] 2752 + None [INFO] [stdout] 2753 + } else { [INFO] [stdout] 2754 + Some(resolved) [INFO] [stdout] 2755 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: strict comparison of `f32` or `f64` [INFO] [stdout] --> src/analysis/label_intel.rs:1151:9 [INFO] [stdout] | [INFO] [stdout] 1151 | assert_eq!(result.avg_days_since_update, 0.0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/analysis/label_intel.rs:1164:57 [INFO] [stdout] | [INFO] [stdout] 1164 | let flow = compute_flow("frontend", &[&i2], &[i1.clone(), i2.clone()]); [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/analysis/label_intel.rs:1164:55 [INFO] [stdout] | [INFO] [stdout] 1164 | let flow = compute_flow("frontend", &[&i2], &[i1.clone(), i2.clone()]); [INFO] [stdout] | ^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] = note: `-W clippy::redundant-clone` implied by `-W clippy::nursery` [INFO] [stdout] = help: to override `-W clippy::nursery` add `#[allow(clippy::redundant_clone)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this call to `clone` can be replaced with `std::slice::from_ref` [INFO] [stdout] --> src/analysis/label_intel.rs:1172:52 [INFO] [stdout] | [INFO] [stdout] 1172 | let flow = compute_flow("backend", &[&i1], &[i1.clone()]); [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `std::slice::from_ref(&i1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cloned_ref_to_slice_refs [INFO] [stdout] = note: `#[warn(clippy::cloned_ref_to_slice_refs)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: strict comparison of `f32` or `f64` [INFO] [stdout] --> src/analysis/label_intel.rs:1186:9 [INFO] [stdout] | [INFO] [stdout] 1186 | assert_eq!(crit.avg_pagerank, 0.0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: strict comparison of `f32` or `f64` [INFO] [stdout] --> src/analysis/label_intel.rs:1187:9 [INFO] [stdout] | [INFO] [stdout] 1187 | assert_eq!(crit.avg_betweenness, 0.0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this call to `clone` can be replaced with `std::slice::from_ref` [INFO] [stdout] --> src/analysis/label_intel.rs:1270:60 [INFO] [stdout] | [INFO] [stdout] 1270 | let graph = super::super::graph::IssueGraph::build(&[i1.clone()]); [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `std::slice::from_ref(&i1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cloned_ref_to_slice_refs [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: single-character string constant used as pattern [INFO] [stdout] --> src/analysis/plan.rs:293:33 [INFO] [stdout] | [INFO] [stdout] 293 | assert!(reason.contains("A"), "should mention the issue ID"); [INFO] [stdout] | ^^^ help: consider using a `char`: `'A'` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: item in documentation is missing backticks [INFO] [stdout] --> src/analysis/recipe.rs:558:62 [INFO] [stdout] | [INFO] [stdout] 558 | /// Returns the weight adjustments as a map suitable for TriageScoringOptions. [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 558 - /// Returns the weight adjustments as a map suitable for TriageScoringOptions. [INFO] [stdout] 558 + /// Returns the weight adjustments as a map suitable for `TriageScoringOptions`. [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: item in documentation is missing backticks [INFO] [stdout] --> src/analysis/recipe.rs:559:36 [INFO] [stdout] | [INFO] [stdout] 559 | /// Maps component name (e.g. "PageRank") to a multiplier (0.5–2.0). [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 559 - /// Maps component name (e.g. "PageRank") to a multiplier (0.5–2.0). [INFO] [stdout] 559 + /// Maps component name (e.g. "`PageRank`") to a multiplier (0.5–2.0). [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:6669:44 [INFO] [stdout] | [INFO] [stdout] 6669 | analysis_config: metrics.config.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:6669:30 [INFO] [stdout] | [INFO] [stdout] 6669 | analysis_config: metrics.config.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/main.rs:6711:44 [INFO] [stdout] | [INFO] [stdout] 6711 | analysis_config: metrics.config.clone(), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/main.rs:6711:30 [INFO] [stdout] | [INFO] [stdout] 6711 | analysis_config: metrics.config.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/analysis/suggest.rs:613:28 [INFO] [stdout] | [INFO] [stdout] 613 | open_pageranks.sort_by(|a, b| a.total_cmp(b)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the method itself: `f64::total_cmp` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `f64` to `usize` may truncate the value [INFO] [stdout] --> src/analysis/suggest.rs:617:19 [INFO] [stdout] | [INFO] [stdout] 617 | let idx = ((open_pageranks.len() as f64 * STALE_PAGERANK_PERCENTILE).ceil() as usize) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ... [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_truncation [INFO] [stdout] = note: `-W clippy::cast-possible-truncation` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::cast_possible_truncation)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `f64` to `usize` may lose the sign of the value [INFO] [stdout] --> src/analysis/suggest.rs:617:19 [INFO] [stdout] | [INFO] [stdout] 617 | let idx = ((open_pageranks.len() as f64 * STALE_PAGERANK_PERCENTILE).ceil() as usize) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_sign_loss [INFO] [stdout] = note: `-W clippy::cast-sign-loss` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::cast_sign_loss)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variables can be used directly in the `format!` string [INFO] [stdout] --> src/analysis/suggest.rs:658:13 [INFO] [stdout] | [INFO] [stdout] 658 | / format!( [INFO] [stdout] 659 | | "Last updated {} days ago, PageRank {:.4} (below threshold {:.4})", [INFO] [stdout] 660 | | days_stale, pagerank, pagerank_threshold [INFO] [stdout] 661 | | ), [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args [INFO] [stdout] = note: `-W clippy::uninlined-format-args` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::uninlined_format_args)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `get("shared_labels").is_some()` [INFO] [stdout] --> src/analysis/suggest.rs:1338:37 [INFO] [stdout] | [INFO] [stdout] 1338 | results[0].metadata.get("shared_labels").is_some(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `contains_key("shared_labels")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_get_then_check [INFO] [stdout] = note: `#[warn(clippy::unnecessary_get_then_check)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: avoid using `collect()` when not needed [INFO] [stdout] --> src/analysis/suggest.rs:1420:14 [INFO] [stdout] | [INFO] [stdout] 1420 | .collect(); [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 1421 | assert!( [INFO] [stdout] 1422 | db_suggestions.is_empty(), [INFO] [stdout] | ------------------------- the iterator could be used here instead [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_collect [INFO] [stdout] = note: `-W clippy::needless-collect` implied by `-W clippy::nursery` [INFO] [stdout] = help: to override `-W clippy::nursery` add `#[allow(clippy::needless_collect)]` [INFO] [stdout] help: check if the original Iterator has anything instead of collecting it and seeing if it's empty [INFO] [stdout] | [INFO] [stdout] 1413 ~ [INFO] [stdout] 1414 | assert!( [INFO] [stdout] 1415 ~ results [INFO] [stdout] 1416 + .iter() [INFO] [stdout] 1417 + .filter(|s| { [INFO] [stdout] 1418 + s.target_bead == "bd-2" [INFO] [stdout] 1419 + && s.metadata.get("suggested_label").and_then(|v| v.as_str()) [INFO] [stdout] 1420 + == Some("database") [INFO] [stdout] 1421 ~ }).next().is_none(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: avoid using `collect()` when not needed [INFO] [stdout] --> src/analysis/suggest.rs:1442:64 [INFO] [stdout] | [INFO] [stdout] 1442 | results.iter().filter(|s| s.target_bead == "bd-2").collect(); [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 1443 | assert!( [INFO] [stdout] 1444 | closed_suggestions.is_empty(), [INFO] [stdout] | ----------------------------- the iterator could be used here instead [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_collect [INFO] [stdout] help: check if the original Iterator has anything instead of collecting it and seeing if it's empty [INFO] [stdout] | [INFO] [stdout] 1441 ~ [INFO] [stdout] 1442 | assert!( [INFO] [stdout] 1443 ~ results.iter().filter(|s| s.target_bead == "bd-2").next().is_none(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: avoid using `collect()` when not needed [INFO] [stdout] --> src/analysis/suggest.rs:1511:14 [INFO] [stdout] | [INFO] [stdout] 1511 | .collect(); [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 1512 | assert!( [INFO] [stdout] 1513 | !integration_suggestions.is_empty(), [INFO] [stdout] | ---------------------------------- the iterator could be used here instead [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_collect [INFO] [stdout] help: check if the original Iterator has anything instead of collecting it and seeing if it's empty [INFO] [stdout] | [INFO] [stdout] 1504 ~ [INFO] [stdout] 1505 | assert!( [INFO] [stdout] 1506 ~ !results [INFO] [stdout] 1507 + .iter() [INFO] [stdout] 1508 + .filter(|s| { [INFO] [stdout] 1509 + s.target_bead == "bd-3" [INFO] [stdout] 1510 + && s.metadata.get("suggested_label").and_then(|v| v.as_str()) [INFO] [stdout] 1511 + == Some("integration") [INFO] [stdout] 1512 ~ }).next().is_none(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/analysis/suggest.rs:1564:27 [INFO] [stdout] | [INFO] [stdout] 1564 | .and_then(|v| v.as_u64()), [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace the closure with the method itself: `serde_json::Value::as_u64` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: strict comparison of `f32` or `f64` [INFO] [stdout] --> src/analysis/suggest.rs:1677:9 [INFO] [stdout] | [INFO] [stdout] 1677 | assert_eq!(ratio(5, 0), 0.0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field assignment outside of initializer for an instance created with Default::default() [INFO] [stdout] --> src/analysis/suggest.rs:1716:9 [INFO] [stdout] | [INFO] [stdout] 1716 | options.min_confidence = 0.3; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `analysis::suggest::SuggestOptions { min_confidence: 0.3, ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> src/analysis/suggest.rs:1715:9 [INFO] [stdout] | [INFO] [stdout] 1715 | let mut options = SuggestOptions::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/analysis/suggest.rs:1726:9 [INFO] [stdout] | [INFO] [stdout] 1726 | options.filter_type = Some(SuggestionType::CycleWarning); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `analysis::suggest::SuggestOptions { filter_type: Some(SuggestionType::CycleWarning), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> src/analysis/suggest.rs:1725:9 [INFO] [stdout] | [INFO] [stdout] 1725 | let mut options = SuggestOptions::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/analysis/suggest.rs:1738:9 [INFO] [stdout] | [INFO] [stdout] 1738 | options.filter_bead = Some("bd-1".to_string()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `analysis::suggest::SuggestOptions { filter_bead: Some("bd-1".to_string()), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> src/analysis/suggest.rs:1736:9 [INFO] [stdout] | [INFO] [stdout] 1736 | let mut options = SuggestOptions::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: item in documentation is missing backticks [INFO] [stdout] --> src/analysis/triage.rs:13:26 [INFO] [stdout] | [INFO] [stdout] 13 | /// Weight constants for ImpactScore components (must sum to 1.0). [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 13 - /// Weight constants for ImpactScore components (must sum to 1.0). [INFO] [stdout] 13 + /// Weight constants for `ImpactScore` components (must sum to 1.0). [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: item in documentation is missing backticks [INFO] [stdout] --> src/analysis/triage.rs:43:31 [INFO] [stdout] | [INFO] [stdout] 43 | /// Context needed to compute ImpactScores across a set of issues. [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 43 - /// Context needed to compute ImpactScores across a set of issues. [INFO] [stdout] 43 + /// Context needed to compute `ImpactScores` across a set of issues. [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: item in documentation is missing backticks [INFO] [stdout] --> src/analysis/triage.rs:110:34 [INFO] [stdout] | [INFO] [stdout] 110 | /// Compute the full 8-component ImpactScore for a single issue. [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 110 - /// Compute the full 8-component ImpactScore for a single issue. [INFO] [stdout] 110 + /// Compute the full 8-component `ImpactScore` for a single issue. [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map().unwrap_or()` on an `Option` value [INFO] [stdout] --> src/analysis/triage.rs:144:22 [INFO] [stdout] | [INFO] [stdout] 144 | let updated_ts = issue [INFO] [stdout] | ______________________^ [INFO] [stdout] 145 | | .updated_at [INFO] [stdout] 146 | | .map(|dt| dt.timestamp()) [INFO] [stdout] 147 | | .unwrap_or(ctx.now_ts); [INFO] [stdout] | |______________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_unwrap_or [INFO] [stdout] = note: `-W clippy::map-unwrap-or` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::map_unwrap_or)]` [INFO] [stdout] help: use `map_or(, )` instead [INFO] [stdout] | [INFO] [stdout] 146 - .map(|dt| dt.timestamp()) [INFO] [stdout] 147 - .unwrap_or(ctx.now_ts); [INFO] [stdout] 146 + .map_or(ctx.now_ts, |dt| dt.timestamp()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: item in documentation is missing backticks [INFO] [stdout] --> src/analysis/triage.rs:443:74 [INFO] [stdout] | [INFO] [stdout] 443 | /// Configurable scoring weights and thresholds for triage (matches Go's TriageScoringOptions). [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 443 - /// Configurable scoring weights and thresholds for triage (matches Go's TriageScoringOptions). [INFO] [stdout] 443 + /// Configurable scoring weights and thresholds for triage (matches Go's `TriageScoringOptions`). [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: item in documentation is missing backticks [INFO] [stdout] --> src/analysis/triage.rs:446:29 [INFO] [stdout] | [INFO] [stdout] 446 | /// Weight for the base ImpactScore (0.0–1.0). [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 446 - /// Weight for the base ImpactScore (0.0–1.0). [INFO] [stdout] 446 + /// Weight for the base `ImpactScore` (0.0–1.0). [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: item in documentation is missing backticks [INFO] [stdout] --> src/analysis/triage.rs:454:21 [INFO] [stdout] | [INFO] [stdout] 454 | /// Issues with critical_depth <= this are considered quick wins. [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 454 - /// Issues with critical_depth <= this are considered quick wins. [INFO] [stdout] 454 + /// Issues with `critical_depth` <= this are considered quick wins. [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: item in documentation is missing backticks [INFO] [stdout] --> src/analysis/triage.rs:465:63 [INFO] [stdout] | [INFO] [stdout] 465 | /// Per-component weight multipliers from feedback (e.g. "PageRank" -> 1.1). [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_markdown [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 465 - /// Per-component weight multipliers from feedback (e.g. "PageRank" -> 1.1). [INFO] [stdout] 465 + /// Per-component weight multipliers from feedback (e.g. "`PageRank`" -> 1.1). [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `usize` to `i64` may wrap around the value on targets with 64-bit wide pointers [INFO] [stdout] --> src/analysis/triage.rs:811:44 [INFO] [stdout] | [INFO] [stdout] 811 | start_of_week - Duration::days((index * 7) as i64), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_wrap [INFO] [stdout] = note: `-W clippy::cast-possible-wrap` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::cast_possible_wrap)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `issues` [INFO] [stdout] --> src/analysis/triage.rs:1568:18 [INFO] [stdout] | [INFO] [stdout] 1568 | for i in 1..20 { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 1568 - for i in 1..20 { [INFO] [stdout] 1568 + for (i, ) in issues.iter_mut().enumerate().take(20).skip(1) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map().unwrap_or()` on an `Option` value [INFO] [stdout] --> src/analysis/triage.rs:1744:23 [INFO] [stdout] | [INFO] [stdout] 1744 | let a_score = triage_qw [INFO] [stdout] | _______________________^ [INFO] [stdout] 1745 | | .result [INFO] [stdout] 1746 | | .recommendations [INFO] [stdout] 1747 | | .iter() [INFO] [stdout] 1748 | | .find(|r| r.id == "A") [INFO] [stdout] 1749 | | .map(|r| r.score) [INFO] [stdout] 1750 | | .unwrap_or(0.0); [INFO] [stdout] | |___________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_unwrap_or [INFO] [stdout] help: use `map_or(, )` instead [INFO] [stdout] | [INFO] [stdout] 1749 - .map(|r| r.score) [INFO] [stdout] 1750 - .unwrap_or(0.0); [INFO] [stdout] 1749 + .map_or(0.0, |r| r.score); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map().unwrap_or()` on an `Option` value [INFO] [stdout] --> src/analysis/triage.rs:1751:23 [INFO] [stdout] | [INFO] [stdout] 1751 | let b_score = triage_qw [INFO] [stdout] | _______________________^ [INFO] [stdout] 1752 | | .result [INFO] [stdout] 1753 | | .recommendations [INFO] [stdout] 1754 | | .iter() [INFO] [stdout] 1755 | | .find(|r| r.id == "B") [INFO] [stdout] 1756 | | .map(|r| r.score) [INFO] [stdout] 1757 | | .unwrap_or(0.0); [INFO] [stdout] | |___________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_unwrap_or [INFO] [stdout] help: use `map_or(, )` instead [INFO] [stdout] | [INFO] [stdout] 1756 - .map(|r| r.score) [INFO] [stdout] 1757 - .unwrap_or(0.0); [INFO] [stdout] 1756 + .map_or(0.0, |r| r.score); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/analysis/mod.rs:804:50 [INFO] [stdout] | [INFO] [stdout] 804 | let fast_scores = fast_triage.score_by_id.clone(); [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/analysis/mod.rs:804:27 [INFO] [stdout] | [INFO] [stdout] 804 | let fast_scores = fast_triage.score_by_id.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/export_pages.rs:705:42 [INFO] [stdout] | [INFO] [stdout] 705 | if !visited_dirs.insert(resolved_path.clone()) { [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/export_pages.rs:705:29 [INFO] [stdout] | [INFO] [stdout] 705 | if !visited_dirs.insert(resolved_path.clone()) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/export_pages.rs:1155:22 [INFO] [stdout] | [INFO] [stdout] 1155 | let header = format!( [INFO] [stdout] | ______________________^ [INFO] [stdout] 1156 | | "HTTP/1.1 200 OK\r\n\ [INFO] [stdout] 1157 | | Content-Type: text/html; charset=utf-8\r\n\ [INFO] [stdout] 1158 | | Content-Length: 5\r\n\ [INFO] [stdout] ... | [INFO] [stdout] 1162 | | Connection: close\r\n\r\n" [INFO] [stdout] 1163 | | ); [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] help: consider using `.to_string()` [INFO] [stdout] | [INFO] [stdout] 1155 ~ let header = "HTTP/1.1 200 OK\r\n\ [INFO] [stdout] 1156 + Content-Type: text/html; charset=utf-8\r\n\ [INFO] [stdout] 1157 + Content-Length: 5\r\n\ [INFO] [stdout] 1158 + Cache-Control: no-store, no-cache, must-revalidate, max-age=0\r\n\ [INFO] [stdout] 1159 + Pragma: no-cache\r\n\ [INFO] [stdout] 1160 + Expires: 0\r\n\ [INFO] [stdout] 1161 ~ Connection: close\r\n\r\n".to_string(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty String is being created manually [INFO] [stdout] --> src/export_pages.rs:1354:29 [INFO] [stdout] | [INFO] [stdout] 1354 | title: Some("".to_string()), [INFO] [stdout] | ^^^^^^^^^^^^^^ help: consider using: `String::new()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_string_new [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/export_pages.rs:1794:25 [INFO] [stdout] | [INFO] [stdout] 1794 | .filter_map(|r| r.ok()) [INFO] [stdout] | ^^^^^^^^^^ help: replace the closure with the method itself: `std::result::Result::ok` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `get("title").is_none()` [INFO] [stdout] --> src/export_sqlite.rs:1860:22 [INFO] [stdout] | [INFO] [stdout] 1860 | assert!(meta.get("title").is_none()); [INFO] [stdout] | -----^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: replace it with: `!meta.contains_key("title")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_get_then_check [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `get("title").is_none()` [INFO] [stdout] --> src/export_sqlite.rs:1879:22 [INFO] [stdout] | [INFO] [stdout] 1879 | assert!(meta.get("title").is_none()); [INFO] [stdout] | -----^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: replace it with: `!meta.contains_key("title")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_get_then_check [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: docs for function which may panic missing `# Panics` section [INFO] [stdout] --> src/model.rs:119:1 [INFO] [stdout] | [INFO] [stdout] 119 | pub fn ts(s: &str) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: first possible panic found here [INFO] [stdout] --> src/model.rs:122:33 [INFO] [stdout] | [INFO] [stdout] 122 | .unwrap_or_else(|e| panic!("invalid timestamp {s:?}: {e}")) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_panics_doc [INFO] [stdout] = note: `-W clippy::missing-panics-doc` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::missing_panics_doc)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: these match arms have identical bodies [INFO] [stdout] --> src/pages_wizard.rs:106:13 [INFO] [stdout] | [INFO] [stdout] 106 | Self::LoadSaved => None, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 112 | Self::Export | Self::Preview | Self::Deploy | Self::Done => None, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: if this is unintentional make the arms return different values [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_same_arms [INFO] [stdout] = note: `-W clippy::match-same-arms` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::match_same_arms)]` [INFO] [stdout] help: otherwise merge the patterns into a single arm [INFO] [stdout] | [INFO] [stdout] 106 ~ Self::ExportOptions => Some(Self::LoadSaved), [INFO] [stdout] 107 | Self::DeployTarget => Some(Self::ExportOptions), [INFO] [stdout] ... [INFO] [stdout] 110 | // Cannot back out of execution steps [INFO] [stdout] 111 ~ Self::LoadSaved | Self::Export | Self::Preview | Self::Deploy | Self::Done => None, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/pages_wizard.rs:245:59 [INFO] [stdout] | [INFO] [stdout] 245 | if self.github_repo.as_ref().map_or(true, |r| r.is_empty()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace the closure with the method itself: `std::string::String::is_empty` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/pages_wizard.rs:245:20 [INFO] [stdout] | [INFO] [stdout] 245 | if self.github_repo.as_ref().map_or(true, |r| r.is_empty()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_none_or` instead [INFO] [stdout] | [INFO] [stdout] 245 - if self.github_repo.as_ref().map_or(true, |r| r.is_empty()) { [INFO] [stdout] 245 + if self.github_repo.as_ref().is_none_or(|r| r.is_empty()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/pages_wizard.rs:255:35 [INFO] [stdout] | [INFO] [stdout] 255 | .map_or(true, |p| p.is_empty()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace the closure with the method itself: `std::string::String::is_empty` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/pages_wizard.rs:252:20 [INFO] [stdout] | [INFO] [stdout] 252 | if self [INFO] [stdout] | ____________________^ [INFO] [stdout] 253 | | .cloudflare_project [INFO] [stdout] 254 | | .as_ref() [INFO] [stdout] 255 | | .map_or(true, |p| p.is_empty()) [INFO] [stdout] | |___________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_none_or` instead [INFO] [stdout] | [INFO] [stdout] 255 - .map_or(true, |p| p.is_empty()) [INFO] [stdout] 255 + .is_none_or(|p| p.is_empty()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this could be rewritten as `let...else` [INFO] [stdout] --> src/pages_wizard.rs:310:5 [INFO] [stdout] | [INFO] [stdout] 310 | / let path = match wizard_config_path() { [INFO] [stdout] 311 | | Some(p) => p, [INFO] [stdout] 312 | | None => return Ok(None), [INFO] [stdout] 313 | | }; [INFO] [stdout] | |______^ help: consider writing: `let Some(path) = wizard_config_path() else { return Ok(None) };` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_let_else [INFO] [stdout] = note: `-W clippy::manual-let-else` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::manual_let_else)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this could be rewritten as `let...else` [INFO] [stdout] --> src/pages_wizard.rs:326:5 [INFO] [stdout] | [INFO] [stdout] 326 | / let path = match wizard_config_path() { [INFO] [stdout] 327 | | Some(p) => p, [INFO] [stdout] 328 | | None => { [INFO] [stdout] 329 | | return Err(BvrError::InvalidArgument( [INFO] [stdout] ... | [INFO] [stdout] 333 | | }; [INFO] [stdout] | |______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_let_else [INFO] [stdout] help: consider writing [INFO] [stdout] | [INFO] [stdout] 326 ~ let Some(path) = wizard_config_path() else { [INFO] [stdout] 327 + return Err(BvrError::InvalidArgument( [INFO] [stdout] 328 + "cannot determine config directory".into(), [INFO] [stdout] 329 + )); [INFO] [stdout] 330 + }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/pages_wizard.rs:404:9 [INFO] [stdout] | [INFO] [stdout] 404 | return true; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 404 - return true; [INFO] [stdout] 404 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map().unwrap_or()` on an `Option` value [INFO] [stdout] --> src/pages_wizard.rs:444:23 [INFO] [stdout] | [INFO] [stdout] 444 | let elapsed = self [INFO] [stdout] | _______________________^ [INFO] [stdout] 445 | | .start [INFO] [stdout] 446 | | .map(|s| s.elapsed().as_millis() as u64) [INFO] [stdout] 447 | | .unwrap_or(0); [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_unwrap_or [INFO] [stdout] help: use `map_or(, )` instead [INFO] [stdout] | [INFO] [stdout] 446 - .map(|s| s.elapsed().as_millis() as u64) [INFO] [stdout] 447 - .unwrap_or(0); [INFO] [stdout] 446 + .map_or(0, |s| s.elapsed().as_millis() as u64); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `u128` to `u64` may truncate the value [INFO] [stdout] --> src/pages_wizard.rs:446:22 [INFO] [stdout] | [INFO] [stdout] 446 | .map(|s| s.elapsed().as_millis() as u64) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ... [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_truncation [INFO] [stdout] help: ... or use `try_from` and handle the error accordingly [INFO] [stdout] | [INFO] [stdout] 446 - .map(|s| s.elapsed().as_millis() as u64) [INFO] [stdout] 446 + .map(|s| u64::try_from(s.elapsed().as_millis())) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/pages_wizard.rs:459:13 [INFO] [stdout] | [INFO] [stdout] 459 | / out.push_str(&format!( [INFO] [stdout] 460 | | " [{:>6}ms] {:?}: {}\n", [INFO] [stdout] 461 | | entry.elapsed_ms, entry.step, entry.action [INFO] [stdout] 462 | | )); [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] = note: `-W clippy::format-push-string` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::format_push_string)]` [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 459 ~ let _ = write!(out, " [{:>6}ms] {:?}: {}\n", [INFO] [stdout] 460 ~ entry.elapsed_ms, entry.step, entry.action); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use Option::map_or instead of an if let/else [INFO] [stdout] --> src/pages_wizard.rs:556:17 [INFO] [stdout] | [INFO] [stdout] 556 | / if let Some(next) = self.advance() { [INFO] [stdout] 557 | | WizardTransition::GoTo(next) [INFO] [stdout] 558 | | } else { [INFO] [stdout] 559 | | WizardTransition::Finished [INFO] [stdout] 560 | | } [INFO] [stdout] | |_________________^ help: try: `self.advance().map_or(WizardTransition::Finished, |next| WizardTransition::GoTo(next))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_if_let_else [INFO] [stdout] = note: `-W clippy::option-if-let-else` implied by `-W clippy::nursery` [INFO] [stdout] = help: to override `-W clippy::nursery` add `#[allow(clippy::option_if_let_else)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use Option::map_or instead of an if let/else [INFO] [stdout] --> src/pages_wizard.rs:563:17 [INFO] [stdout] | [INFO] [stdout] 563 | / if let Some(prev) = self.go_back() { [INFO] [stdout] 564 | | WizardTransition::GoTo(prev) [INFO] [stdout] 565 | | } else { [INFO] [stdout] 566 | | WizardTransition::StayOnCurrent [INFO] [stdout] 567 | | } [INFO] [stdout] | |_________________^ help: try: `self.go_back().map_or(WizardTransition::StayOnCurrent, |prev| WizardTransition::GoTo(prev))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_if_let_else [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: docs for function which may panic missing `# Panics` section [INFO] [stdout] --> src/pages_wizard.rs:664:1 [INFO] [stdout] | [INFO] [stdout] 664 | / pub fn run_wizard_interactive( [INFO] [stdout] 665 | | reader: &mut R, [INFO] [stdout] 666 | | writer: &mut W, [INFO] [stdout] 667 | | beads_path: Option, [INFO] [stdout] ... | [INFO] [stdout] 675 | | E: FnOnce(&WizardConfig) -> Result<()>, [INFO] [stdout] 676 | | P: Fn(&Path) -> Result<()>, [INFO] [stdout] | |_______________________________^ [INFO] [stdout] | [INFO] [stdout] note: first possible panic found here [INFO] [stdout] --> src/pages_wizard.rs:899:33 [INFO] [stdout] | [INFO] [stdout] 899 | let do_export = export_fn.take().expect("export called only once"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_panics_doc [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `continue` expression is redundant [INFO] [stdout] --> src/pages_wizard.rs:884:25 [INFO] [stdout] | [INFO] [stdout] 884 | continue; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider dropping the `continue` expression [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_continue [INFO] [stdout] = note: `-W clippy::needless-continue` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::needless_continue)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/pages_wizard.rs:763:20 [INFO] [stdout] | [INFO] [stdout] 763 | if choice >= 1 && choice <= 3 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(1..=3).contains(&choice)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] = note: `#[warn(clippy::manual_range_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `unwrap_or` [INFO] [stdout] --> src/pages_wizard.rs:909:34 [INFO] [stdout] | [INFO] [stdout] 909 | ... .unwrap_or(Path::new("?")) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|| Path::new("?"))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stdout] = note: `-W clippy::or-fun-call` implied by `-W clippy::nursery` [INFO] [stdout] = help: to override `-W clippy::nursery` add `#[allow(clippy::or_fun_call)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `map_or` [INFO] [stdout] --> src/pages_wizard.rs:965:22 [INFO] [stdout] | [INFO] [stdout] 965 | .map_or("local".to_string(), |t| t.label().to_string()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `map_or_else(|| "local".to_string(), |t| t.label().to_string())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `unwrap_or` [INFO] [stdout] --> src/pages_wizard.rs:970:22 [INFO] [stdout] | [INFO] [stdout] 970 | .unwrap_or(Path::new("./bv-pages")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|| Path::new("./bv-pages"))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variables can be used directly in the `format!` string [INFO] [stdout] --> src/pages_wizard.rs:1241:13 [INFO] [stdout] | [INFO] [stdout] 1241 | assert!(!step.label().is_empty(), "step {:?} has empty label", step); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 1241 - assert!(!step.label().is_empty(), "step {:?} has empty label", step); [INFO] [stdout] 1241 + assert!(!step.label().is_empty(), "step {step:?} has empty label"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field assignment outside of initializer for an instance created with Default::default() [INFO] [stdout] --> src/pages_wizard.rs:1284:9 [INFO] [stdout] | [INFO] [stdout] 1284 | config.output_path = Some(PathBuf::from("./pages")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `pages_wizard::WizardConfig { output_path: Some(PathBuf::from("./pages")), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> src/pages_wizard.rs:1283:9 [INFO] [stdout] | [INFO] [stdout] 1283 | let mut config = WizardConfig::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/pages_wizard.rs:1291:9 [INFO] [stdout] | [INFO] [stdout] 1291 | config.output_path = Some(PathBuf::from("./pages")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `pages_wizard::WizardConfig { output_path: Some(PathBuf::from("./pages")), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> src/pages_wizard.rs:1290:9 [INFO] [stdout] | [INFO] [stdout] 1290 | let mut config = WizardConfig::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/pages_wizard.rs:1298:9 [INFO] [stdout] | [INFO] [stdout] 1298 | config.output_path = Some(PathBuf::from("./pages")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `pages_wizard::WizardConfig { output_path: Some(PathBuf::from("./pages")), deploy_target: Some(DeployTarget::Local), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> src/pages_wizard.rs:1297:9 [INFO] [stdout] | [INFO] [stdout] 1297 | let mut config = WizardConfig::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/pages_wizard.rs:1306:9 [INFO] [stdout] | [INFO] [stdout] 1306 | config.output_path = Some(PathBuf::from("./pages")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `pages_wizard::WizardConfig { output_path: Some(PathBuf::from("./pages")), deploy_target: Some(DeployTarget::Github), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> src/pages_wizard.rs:1305:9 [INFO] [stdout] | [INFO] [stdout] 1305 | let mut config = WizardConfig::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/pages_wizard.rs:1317:9 [INFO] [stdout] | [INFO] [stdout] 1317 | config.output_path = Some(PathBuf::from("./pages")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `pages_wizard::WizardConfig { output_path: Some(PathBuf::from("./pages")), deploy_target: Some(DeployTarget::Github), github_repo: Some(String::new()), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> src/pages_wizard.rs:1316:9 [INFO] [stdout] | [INFO] [stdout] 1316 | let mut config = WizardConfig::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/pages_wizard.rs:1326:9 [INFO] [stdout] | [INFO] [stdout] 1326 | config.output_path = Some(PathBuf::from("./pages")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `pages_wizard::WizardConfig { output_path: Some(PathBuf::from("./pages")), deploy_target: Some(DeployTarget::Cloudflare), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> src/pages_wizard.rs:1325:9 [INFO] [stdout] | [INFO] [stdout] 1325 | let mut config = WizardConfig::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/pages_wizard.rs:1337:9 [INFO] [stdout] | [INFO] [stdout] 1337 | config.github_repo = Some("owner/repo".into()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `pages_wizard::WizardConfig { github_repo: Some("owner/repo".into()), github_private: true, github_description: Some("desc".into()), cloudflare_project: Some("proj".into()), cloudflare_branch: Some("main".into()), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> src/pages_wizard.rs:1336:9 [INFO] [stdout] | [INFO] [stdout] 1336 | let mut config = WizardConfig::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/pages_wizard.rs:1356:9 [INFO] [stdout] | [INFO] [stdout] 1356 | config.title = Some("My Dashboard".into()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `pages_wizard::WizardConfig { title: Some("My Dashboard".into()), deploy_target: Some(DeployTarget::Github), github_repo: Some("user/pages".into()), output_path: Some(PathBuf::from("./out")), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> src/pages_wizard.rs:1355:9 [INFO] [stdout] | [INFO] [stdout] 1355 | let mut config = WizardConfig::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/pages_wizard.rs:1383:9 [INFO] [stdout] | [INFO] [stdout] 1383 | config.title = Some("Test".into()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `pages_wizard::WizardConfig { title: Some("Test".into()), deploy_target: Some(DeployTarget::Local), output_path: Some(PathBuf::from("./pages")), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> src/pages_wizard.rs:1382:9 [INFO] [stdout] | [INFO] [stdout] 1382 | let mut config = WizardConfig::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: redundant clone [INFO] [stdout] --> src/pages_wizard.rs:1561:31 [INFO] [stdout] | [INFO] [stdout] 1561 | let ec = export_called.clone(); [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/pages_wizard.rs:1561:18 [INFO] [stdout] | [INFO] [stdout] 1561 | let ec = export_called.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for an equality check. Consider using `if` [INFO] [stdout] --> src/tui.rs:1087:27 [INFO] [stdout] | [INFO] [stdout] 1087 | let header_text = match bp { [INFO] [stdout] | ___________________________^ [INFO] [stdout] 1088 | | Breakpoint::Narrow => format!( [INFO] [stdout] 1089 | | "bvr {} | {}/{} | {}", [INFO] [stdout] 1090 | | self.mode.label(), [INFO] [stdout] ... | [INFO] [stdout] 1128 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match_else [INFO] [stdout] = note: `-W clippy::single-match-else` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::single_match_else)]` [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 1087 ~ let header_text = if bp == Breakpoint::Narrow { format!( [INFO] [stdout] 1088 + "bvr {} | {}/{} | {}", [INFO] [stdout] 1089 + self.mode.label(), [INFO] [stdout] 1090 + visible_count, [INFO] [stdout] 1091 + self.analyzer.issues.len(), [INFO] [stdout] 1092 + self.list_filter.label(), [INFO] [stdout] 1093 + ) } else { [INFO] [stdout] 1094 + let mut filter_label = self.list_filter.label().to_string(); [INFO] [stdout] 1095 + if let Some(ref label) = self.modal_label_filter { [INFO] [stdout] 1096 + filter_label = format!("{filter_label}+label:{label}"); [INFO] [stdout] 1097 + } [INFO] [stdout] 1098 + if let Some(ref repo) = self.modal_repo_filter { [INFO] [stdout] 1099 + filter_label = format!("{filter_label}+repo:{repo}"); [INFO] [stdout] 1100 + } [INFO] [stdout] 1101 + let metrics_hint = if self.slow_metrics_pending { [INFO] [stdout] 1102 + " | metrics: computing..." [INFO] [stdout] 1103 + } else { [INFO] [stdout] 1104 + "" [INFO] [stdout] 1105 + }; [INFO] [stdout] 1106 + let mode_label = if matches!(self.mode, ViewMode::History) { [INFO] [stdout] 1107 + format!( [INFO] [stdout] 1108 + "{} {}", [INFO] [stdout] 1109 + self.mode.label(), [INFO] [stdout] 1110 + self.history_view_mode.indicator() [INFO] [stdout] 1111 + ) [INFO] [stdout] 1112 + } else { [INFO] [stdout] 1113 + self.mode.label().to_string() [INFO] [stdout] 1114 + }; [INFO] [stdout] 1115 + format!( [INFO] [stdout] 1116 + "bvr | mode={} | focus={} | issues={}/{} | filter={} | sort={}{} | ? help | Tab focus |", [INFO] [stdout] 1117 + mode_label, [INFO] [stdout] 1118 + self.focus.label(), [INFO] [stdout] 1119 + visible_count, [INFO] [stdout] 1120 + self.analyzer.issues.len(), [INFO] [stdout] 1121 + filter_label, [INFO] [stdout] 1122 + self.list_sort.label(), [INFO] [stdout] 1123 + metrics_hint, [INFO] [stdout] 1124 + ) [INFO] [stdout] 1125 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: these match arms have identical bodies [INFO] [stdout] --> src/tui.rs:1347:13 [INFO] [stdout] | [INFO] [stdout] 1347 | ViewMode::Attention => "Label Detail", [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 1348 | ViewMode::Tree => "Issue Detail", [INFO] [stdout] 1349 | ViewMode::LabelDashboard => "Label Detail", [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: if this is unintentional make the arms return different values [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_same_arms [INFO] [stdout] help: otherwise merge the patterns into a single arm [INFO] [stdout] | [INFO] [stdout] 1347 ~ ViewMode::Attention | ViewMode::LabelDashboard => "Label Detail", [INFO] [stdout] 1348 | ViewMode::Tree => "Issue Detail", [INFO] [stdout] 1349 ~ ViewMode::FlowMatrix => "Flow Detail", [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `usize` to `u16` may truncate the value [INFO] [stdout] --> src/tui.rs:1571:26 [INFO] [stdout] | [INFO] [stdout] 1571 | .scroll((self.list_scroll_offset.get() as u16, 0)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ... [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_truncation [INFO] [stdout] help: ... or use `try_from` and handle the error accordingly [INFO] [stdout] | [INFO] [stdout] 1571 - .scroll((self.list_scroll_offset.get() as u16, 0)) [INFO] [stdout] 1571 + .scroll((u16::try_from(self.list_scroll_offset.get()), 0)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `self` argument [INFO] [stdout] --> src/tui.rs:1760:23 [INFO] [stdout] | [INFO] [stdout] 1760 | fn history_layout(&self) -> HistoryLayout { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider refactoring to an associated function [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_self [INFO] [stdout] = note: `-W clippy::unused-self` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::unused_self)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `self` argument [INFO] [stdout] --> src/tui.rs:1784:35 [INFO] [stdout] | [INFO] [stdout] 1784 | fn history_detail_panel_title(&self) -> &'static str { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider refactoring to an associated function [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_self [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map().unwrap_or_else()` on an `Option` value [INFO] [stdout] --> src/tui.rs:1789:9 [INFO] [stdout] | [INFO] [stdout] 1789 | / self.selected_issue() [INFO] [stdout] 1790 | | .map(|issue| format!("Timeline: {}", issue.id)) [INFO] [stdout] 1791 | | .unwrap_or_else(|| "Timeline".to_string()) [INFO] [stdout] | |______________________________________________________^ help: try: `self.selected_issue().map_or_else(|| "Timeline".to_string(), |issue| format!("Timeline: {}", issue.id))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_unwrap_or [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary boolean `not` operation [INFO] [stdout] --> src/tui.rs:2123:9 [INFO] [stdout] | [INFO] [stdout] 2123 | / if !state.drill_active { [INFO] [stdout] 2124 | | state.drill_cursor = 0; [INFO] [stdout] 2125 | | } else { [INFO] [stdout] 2126 | | state.drill_cursor = state [INFO] [stdout] 2127 | | .drill_cursor [INFO] [stdout] 2128 | | .min(cell_issue_ids.len().saturating_sub(1)); [INFO] [stdout] 2129 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_not_else [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 2123 ~ if state.drill_active { [INFO] [stdout] 2124 + state.drill_cursor = state [INFO] [stdout] 2125 + .drill_cursor [INFO] [stdout] 2126 + .min(cell_issue_ids.len().saturating_sub(1)); [INFO] [stdout] 2127 + } else { [INFO] [stdout] 2128 + state.drill_cursor = 0; [INFO] [stdout] 2129 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/tui.rs:2567:20 [INFO] [stdout] | [INFO] [stdout] 2567 | if !(matches!(self.mode, ViewMode::History) && self.history_file_tree_focus) [INFO] [stdout] | ____________________^ [INFO] [stdout] 2568 | | && !matches!(self.mode, ViewMode::Tree) => [INFO] [stdout] | |___________________________________________________________^ help: try: `!(matches!(self.mode, ViewMode::Tree) || matches!(self.mode, ViewMode::History) && self.history_file_tree_focus)` [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: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/tui.rs:2330:29 [INFO] [stdout] | [INFO] [stdout] 2330 | / ... if cur < len { [INFO] [stdout] 2331 | | ... let recipe_name = items[cur].0.clone(); [INFO] [stdout] 2332 | | ... self.modal_overlay = None; [INFO] [stdout] 2333 | | ... self.status_msg = format!("Recipe: {recipe_name}"); [INFO] [stdout] 2334 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 2329 ~ KeyCode::Enter [INFO] [stdout] 2330 ~ if cur < len => { [INFO] [stdout] 2331 | let recipe_name = items[cur].0.clone(); [INFO] [stdout] 2332 | self.modal_overlay = None; [INFO] [stdout] 2333 | self.status_msg = format!("Recipe: {recipe_name}"); [INFO] [stdout] 2334 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/tui.rs:2362:29 [INFO] [stdout] | [INFO] [stdout] 2362 | / ... if cur < len { [INFO] [stdout] 2363 | | ... let label = items[cur].0.clone(); [INFO] [stdout] 2364 | | ... self.modal_overlay = None; [INFO] [stdout] 2365 | | ... self.set_label_filter(&label); [INFO] [stdout] 2366 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 2361 ~ KeyCode::Enter [INFO] [stdout] 2362 ~ if cur < len => { [INFO] [stdout] 2363 | let label = items[cur].0.clone(); [INFO] [stdout] 2364 | self.modal_overlay = None; [INFO] [stdout] 2365 | self.set_label_filter(&label); [INFO] [stdout] 2366 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/tui.rs:2394:29 [INFO] [stdout] | [INFO] [stdout] 2394 | / ... if cur < len { [INFO] [stdout] 2395 | | ... let repo = items[cur].clone(); [INFO] [stdout] 2396 | | ... self.modal_overlay = None; [INFO] [stdout] 2397 | | ... self.set_repo_filter(&repo); [INFO] [stdout] 2398 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 2393 ~ KeyCode::Enter [INFO] [stdout] 2394 ~ if cur < len => { [INFO] [stdout] 2395 | let repo = items[cur].clone(); [INFO] [stdout] 2396 | self.modal_overlay = None; [INFO] [stdout] 2397 | self.set_repo_filter(&repo); [INFO] [stdout] 2398 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/tui.rs:2797:17 [INFO] [stdout] | [INFO] [stdout] 2797 | / if self.tree_cursor + 1 < self.tree_flat_nodes.len() { [INFO] [stdout] 2798 | | self.tree_cursor += 1; [INFO] [stdout] 2799 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 2796 ~ KeyCode::Char('j') | KeyCode::Down if self.tree_shortcut_focus() [INFO] [stdout] 2797 ~ && self.tree_cursor + 1 < self.tree_flat_nodes.len() => { [INFO] [stdout] 2798 | self.tree_cursor += 1; [INFO] [stdout] 2799 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: these match arms have identical bodies [INFO] [stdout] --> src/tui.rs:2666:25 [INFO] [stdout] | [INFO] [stdout] 2666 | FocusPane::List => FocusPane::Detail, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 2667 | FocusPane::Middle => FocusPane::Detail, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: if this is unintentional make the arms return different values [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_same_arms [INFO] [stdout] help: otherwise merge the patterns into a single arm [INFO] [stdout] | [INFO] [stdout] 2666 - FocusPane::List => FocusPane::Detail, [INFO] [stdout] 2667 - FocusPane::Middle => FocusPane::Detail, [INFO] [stdout] 2666 + FocusPane::List | FocusPane::Middle => FocusPane::Detail, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: adding items after statements is confusing, since items exist from the start of the scope [INFO] [stdout] --> src/tui.rs:3507:9 [INFO] [stdout] | [INFO] [stdout] 3507 | / fn insert_path( [INFO] [stdout] 3508 | | nodes: &mut Vec, [INFO] [stdout] 3509 | | parts: &[&str], [INFO] [stdout] 3510 | | level: usize, [INFO] [stdout] ... | [INFO] [stdout] 3544 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#items_after_statements [INFO] [stdout] = note: `-W clippy::items-after-statements` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::items_after_statements)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: adding items after statements is confusing, since items exist from the start of the scope [INFO] [stdout] --> src/tui.rs:3546:9 [INFO] [stdout] | [INFO] [stdout] 3546 | / fn sort_nodes(nodes: &mut [FileTreeNode]) { [INFO] [stdout] 3547 | | for node in nodes.iter_mut() { [INFO] [stdout] 3548 | | sort_nodes(&mut node.children); [INFO] [stdout] ... | [INFO] [stdout] 3555 | | }); [INFO] [stdout] 3556 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#items_after_statements [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `self` argument [INFO] [stdout] --> src/tui.rs:5158:26 [INFO] [stdout] | [INFO] [stdout] 5158 | fn help_overlay_text(&self, width: usize) -> String { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider refactoring to an associated function [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_self [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variables can be used directly in the `format!` string [INFO] [stdout] --> src/tui.rs:5268:28 [INFO] [stdout] | [INFO] [stdout] 5268 | block.push(format!(" {:<12} {}", key, desc)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 5268 - block.push(format!(" {:<12} {}", key, desc)); [INFO] [stdout] 5268 + block.push(format!(" {key:<12} {desc}")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manually reimplementing `div_ceil` [INFO] [stdout] --> src/tui.rs:5299:30 [INFO] [stdout] | [INFO] [stdout] 5299 | let target_per_col = (total_lines + num_cols - 1) / num_cols; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `total_lines.div_ceil(num_cols)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_div_ceil [INFO] [stdout] = note: `#[warn(clippy::manual_div_ceil)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/tui.rs:5319:43 [INFO] [stdout] | [INFO] [stdout] 5319 | let max_rows = columns.iter().map(|c| c.len()).max().unwrap_or(0); [INFO] [stdout] | ^^^^^^^^^^^ help: replace the closure with the method itself: `std::vec::Vec::len` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual checked division [INFO] [stdout] --> src/tui.rs:5320:35 [INFO] [stdout] | [INFO] [stdout] 5320 | let actual_col_width = if num_cols > 0 { [INFO] [stdout] | ^^^^^^^^^^^^ check performed here [INFO] [stdout] 5321 | (width.saturating_sub(num_cols - 1)) / num_cols [INFO] [stdout] | ----------------------------------------------- division performed here [INFO] [stdout] | [INFO] [stdout] = help: consider using `checked_div` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_checked_ops [INFO] [stdout] = note: `#[warn(clippy::manual_checked_ops)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map().unwrap_or()` on an `Option` value [INFO] [stdout] --> src/tui.rs:5330:28 [INFO] [stdout] | [INFO] [stdout] 5330 | let cell = col_data.get(row).map(|s| s.as_str()).unwrap_or(""); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_unwrap_or [INFO] [stdout] help: use `map_or(, )` instead [INFO] [stdout] | [INFO] [stdout] 5330 - let cell = col_data.get(row).map(|s| s.as_str()).unwrap_or(""); [INFO] [stdout] 5330 + let cell = col_data.get(row).map_or("", |s| s.as_str()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/tui.rs:5330:50 [INFO] [stdout] | [INFO] [stdout] 5330 | let cell = col_data.get(row).map(|s| s.as_str()).unwrap_or(""); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace the closure with the method itself: `std::string::String::as_str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map().unwrap_or_else()` on an `Option` value [INFO] [stdout] --> src/tui.rs:6226:29 [INFO] [stdout] | [INFO] [stdout] 6226 | let title = issue [INFO] [stdout] | _____________________________^ [INFO] [stdout] 6227 | | .map(|issue| truncate_str(&issue.title, inner_width.saturating_sub(18))) [INFO] [stdout] 6228 | | .unwrap_or_else(|| bead_id.clone()); [INFO] [stdout] | |_______________________________________________________^ help: try: `issue.map_or_else(|| bead_id.clone(), |issue| truncate_str(&issue.title, inner_width.saturating_sub(18)))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_unwrap_or [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map().unwrap_or_else()` on an `Option` value [INFO] [stdout] --> src/tui.rs:6331:26 [INFO] [stdout] | [INFO] [stdout] 6331 | let ts = event [INFO] [stdout] | __________________________^ [INFO] [stdout] 6332 | | .timestamp [INFO] [stdout] 6333 | | .map(|dt| format_compact_timestamp(Some(dt))) [INFO] [stdout] 6334 | | .unwrap_or_else(|| "n/a".to_string()); [INFO] [stdout] | |_________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_unwrap_or [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 6331 ~ let ts = event [INFO] [stdout] 6332 ~ .timestamp.map_or_else(|| "n/a".to_string(), |dt| format_compact_timestamp(Some(dt))); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `self` argument [INFO] [stdout] --> src/tui.rs:6363:9 [INFO] [stdout] | [INFO] [stdout] 6363 | &self, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider refactoring to an associated function [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_self [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: it looks like the same item is being pushed into this `Vec` [INFO] [stdout] --> src/tui.rs:6385:17 [INFO] [stdout] | [INFO] [stdout] 6385 | markers.push("├"); [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider using `vec!["├";SIZE]` [INFO] [stdout] = help: or `markers.extend(std::iter::repeat_n("├", SIZE))` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#same_item_push [INFO] [stdout] = note: `#[warn(clippy::same_item_push)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `usize` to `isize` may wrap around the value [INFO] [stdout] --> src/tui.rs:6461:28 [INFO] [stdout] | [INFO] [stdout] 6461 | let new_pos = (self.actionable_track_cursor as isize + delta).clamp(0, max as isize); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_wrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `usize` to `isize` may wrap around the value [INFO] [stdout] --> src/tui.rs:6461:84 [INFO] [stdout] | [INFO] [stdout] 6461 | let new_pos = (self.actionable_track_cursor as isize + delta).clamp(0, max as isize); [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_wrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `isize` to `usize` may lose the sign of the value [INFO] [stdout] --> src/tui.rs:6462:44 [INFO] [stdout] | [INFO] [stdout] 6462 | self.actionable_track_cursor = new_pos as usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_sign_loss [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `usize` to `isize` may wrap around the value [INFO] [stdout] --> src/tui.rs:6468:32 [INFO] [stdout] | [INFO] [stdout] 6468 | let new_pos = (self.actionable_item_cursor as isize + delta).clamp(0, max as isize); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_wrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `usize` to `isize` may wrap around the value [INFO] [stdout] --> src/tui.rs:6468:87 [INFO] [stdout] | [INFO] [stdout] 6468 | let new_pos = (self.actionable_item_cursor as isize + delta).clamp(0, max as isize); [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_wrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `isize` to `usize` may lose the sign of the value [INFO] [stdout] --> src/tui.rs:6469:47 [INFO] [stdout] | [INFO] [stdout] 6469 | self.actionable_item_cursor = new_pos as usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_sign_loss [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/tui.rs:6625:9 [INFO] [stdout] | [INFO] [stdout] 6625 | md.push_str(&format!("# {} — {}\n\n", issue.id, issue.title)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 6625 - md.push_str(&format!("# {} — {}\n\n", issue.id, issue.title)); [INFO] [stdout] 6625 + let _ = write!(md, "# {} — {}\n\n", issue.id, issue.title); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/tui.rs:6626:9 [INFO] [stdout] | [INFO] [stdout] 6626 | / md.push_str(&format!( [INFO] [stdout] 6627 | | "**Status:** {} | **Priority:** p{} | **Type:** {}\n\n", [INFO] [stdout] 6628 | | issue.status, issue.priority, issue.issue_type [INFO] [stdout] 6629 | | )); [INFO] [stdout] | |__________^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 6626 ~ let _ = write!(md, "**Status:** {} | **Priority:** p{} | **Type:** {}\n\n", [INFO] [stdout] 6627 ~ issue.status, issue.priority, issue.issue_type); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/tui.rs:6631:13 [INFO] [stdout] | [INFO] [stdout] 6631 | md.push_str(&format!("**Assignee:** {}\n\n", issue.assignee)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 6631 - md.push_str(&format!("**Assignee:** {}\n\n", issue.assignee)); [INFO] [stdout] 6631 + let _ = write!(md, "**Assignee:** {}\n\n", issue.assignee); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/tui.rs:6634:13 [INFO] [stdout] | [INFO] [stdout] 6634 | md.push_str(&format!("## Description\n\n{}\n\n", issue.description)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 6634 - md.push_str(&format!("## Description\n\n{}\n\n", issue.description)); [INFO] [stdout] 6634 + let _ = write!(md, "## Description\n\n{}\n\n", issue.description); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/tui.rs:6637:13 [INFO] [stdout] | [INFO] [stdout] 6637 | md.push_str(&format!("## Notes\n\n{}\n\n", issue.notes)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 6637 - md.push_str(&format!("## Notes\n\n{}\n\n", issue.notes)); [INFO] [stdout] 6637 + let _ = write!(md, "## Notes\n\n{}\n\n", issue.notes); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/tui.rs:6640:13 [INFO] [stdout] | [INFO] [stdout] 6640 | md.push_str(&format!("**Labels:** {}\n", issue.labels.join(", "))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 6640 - md.push_str(&format!("**Labels:** {}\n", issue.labels.join(", "))); [INFO] [stdout] 6640 + let _ = write!(md, "**Labels:** {}\n", issue.labels.join(", ")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this could be rewritten as `let...else` [INFO] [stdout] --> src/tui.rs:6688:9 [INFO] [stdout] | [INFO] [stdout] 6688 | / let issues = match loader::load_issues(repo_path) { [INFO] [stdout] 6689 | | Ok(issues) => issues, [INFO] [stdout] 6690 | | Err(_) => return, // silently ignore — data unchanged [INFO] [stdout] 6691 | | }; [INFO] [stdout] | |__________^ help: consider writing: `let Ok(issues) = loader::load_issues(repo_path) else { return };` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_let_else [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `usize` to `i32` may truncate the value on targets with 64-bit wide pointers [INFO] [stdout] --> src/tui.rs:6746:19 [INFO] [stdout] | [INFO] [stdout] 6746 | let cur = self.attention_cursor as i32 + delta; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ... [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_truncation [INFO] [stdout] help: ... or use `try_from` and handle the error accordingly [INFO] [stdout] | [INFO] [stdout] 6746 - let cur = self.attention_cursor as i32 + delta; [INFO] [stdout] 6746 + let cur = i32::try_from(self.attention_cursor) + delta; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `usize` to `i32` may wrap around the value on targets with 32-bit wide pointers [INFO] [stdout] --> src/tui.rs:6746:19 [INFO] [stdout] | [INFO] [stdout] 6746 | let cur = self.attention_cursor as i32 + delta; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_wrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `i32` to `usize` may lose the sign of the value [INFO] [stdout] --> src/tui.rs:6747:33 [INFO] [stdout] | [INFO] [stdout] 6747 | self.attention_cursor = cur.clamp(0, count as i32 - 1) as usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_sign_loss [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `usize` to `i32` may truncate the value on targets with 64-bit wide pointers [INFO] [stdout] --> src/tui.rs:6747:46 [INFO] [stdout] | [INFO] [stdout] 6747 | self.attention_cursor = cur.clamp(0, count as i32 - 1) as usize; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ... [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_truncation [INFO] [stdout] help: ... or use `try_from` and handle the error accordingly [INFO] [stdout] | [INFO] [stdout] 6747 - self.attention_cursor = cur.clamp(0, count as i32 - 1) as usize; [INFO] [stdout] 6747 + self.attention_cursor = cur.clamp(0, i32::try_from(count) - 1) as usize; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `usize` to `i32` may wrap around the value on targets with 32-bit wide pointers [INFO] [stdout] --> src/tui.rs:6747:46 [INFO] [stdout] | [INFO] [stdout] 6747 | self.attention_cursor = cur.clamp(0, count as i32 - 1) as usize; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_wrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/tui.rs:6763:20 [INFO] [stdout] | [INFO] [stdout] 6763 | lines.push(format!("{}", "─".repeat(72))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"─".repeat(72).to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map().unwrap_or()` on an `Option` value [INFO] [stdout] --> src/tui.rs:7032:29 [INFO] [stdout] | [INFO] [stdout] 7032 | let title = self [INFO] [stdout] | _____________________________^ [INFO] [stdout] 7033 | | .analyzer [INFO] [stdout] 7034 | | .issues [INFO] [stdout] 7035 | | .iter() [INFO] [stdout] 7036 | | .find(|i| i.id == *b) [INFO] [stdout] 7037 | | .map(|i| i.title.as_str()) [INFO] [stdout] 7038 | | .unwrap_or("?"); [INFO] [stdout] | |___________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_unwrap_or [INFO] [stdout] help: use `map_or(, )` instead [INFO] [stdout] | [INFO] [stdout] 7037 - .map(|i| i.title.as_str()) [INFO] [stdout] 7038 - .unwrap_or("?"); [INFO] [stdout] 7037 + .map_or("?", |i| i.title.as_str()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map().unwrap_or()` on an `Option` value [INFO] [stdout] --> src/tui.rs:7047:29 [INFO] [stdout] | [INFO] [stdout] 7047 | let title = self [INFO] [stdout] | _____________________________^ [INFO] [stdout] 7048 | | .analyzer [INFO] [stdout] 7049 | | .issues [INFO] [stdout] 7050 | | .iter() [INFO] [stdout] 7051 | | .find(|i| i.id == *d) [INFO] [stdout] 7052 | | .map(|i| i.title.as_str()) [INFO] [stdout] 7053 | | .unwrap_or("?"); [INFO] [stdout] | |___________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_unwrap_or [INFO] [stdout] help: use `map_or(, )` instead [INFO] [stdout] | [INFO] [stdout] 7052 - .map(|i| i.title.as_str()) [INFO] [stdout] 7053 - .unwrap_or("?"); [INFO] [stdout] 7052 + .map_or("?", |i| i.title.as_str()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `i32` to `usize` may lose the sign of the value [INFO] [stdout] --> src/tui.rs:7113:30 [INFO] [stdout] | [INFO] [stdout] 7113 | let bar_filled = (label.health as usize).min(100) / 10; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_sign_loss [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map().unwrap_or()` on an `Option` value [INFO] [stdout] --> src/tui.rs:7224:29 [INFO] [stdout] | [INFO] [stdout] 7224 | let title = self [INFO] [stdout] | _____________________________^ [INFO] [stdout] 7225 | | .analyzer [INFO] [stdout] 7226 | | .issues [INFO] [stdout] 7227 | | .iter() [INFO] [stdout] 7228 | | .find(|i| i.id == *id) [INFO] [stdout] 7229 | | .map(|i| i.title.as_str()) [INFO] [stdout] 7230 | | .unwrap_or("?"); [INFO] [stdout] | |___________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_unwrap_or [INFO] [stdout] help: use `map_or(, )` instead [INFO] [stdout] | [INFO] [stdout] 7229 - .map(|i| i.title.as_str()) [INFO] [stdout] 7230 - .unwrap_or("?"); [INFO] [stdout] 7229 + .map_or("?", |i| i.title.as_str()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map().unwrap_or()` on an `Option` value [INFO] [stdout] --> src/tui.rs:7401:37 [INFO] [stdout] | [INFO] [stdout] 7401 | let title = self [INFO] [stdout] | _____________________________________^ [INFO] [stdout] 7402 | | .analyzer [INFO] [stdout] 7403 | | .issues [INFO] [stdout] 7404 | | .iter() [INFO] [stdout] 7405 | | .find(|i| i.id == *id) [INFO] [stdout] 7406 | | .map(|i| i.title.as_str()) [INFO] [stdout] 7407 | | .unwrap_or("?"); [INFO] [stdout] | |___________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_unwrap_or [INFO] [stdout] help: use `map_or(, )` instead [INFO] [stdout] | [INFO] [stdout] 7406 - .map(|i| i.title.as_str()) [INFO] [stdout] 7407 - .unwrap_or("?"); [INFO] [stdout] 7406 + .map_or("?", |i| i.title.as_str()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/tui.rs:7543:60 [INFO] [stdout] | [INFO] [stdout] 7543 | let new_count = diff.new_issues.as_ref().map_or(0, |v| v.len()); [INFO] [stdout] | ^^^^^^^^^^^ help: replace the closure with the method itself: `std::vec::Vec::len` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/tui.rs:7544:66 [INFO] [stdout] | [INFO] [stdout] 7544 | let closed_count = diff.closed_issues.as_ref().map_or(0, |v| v.len()); [INFO] [stdout] | ^^^^^^^^^^^ help: replace the closure with the method itself: `std::vec::Vec::len` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/tui.rs:7545:68 [INFO] [stdout] | [INFO] [stdout] 7545 | let removed_count = diff.removed_issues.as_ref().map_or(0, |v| v.len()); [INFO] [stdout] | ^^^^^^^^^^^ help: replace the closure with the method itself: `std::vec::Vec::len` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/tui.rs:7546:70 [INFO] [stdout] | [INFO] [stdout] 7546 | let reopened_count = diff.reopened_issues.as_ref().map_or(0, |v| v.len()); [INFO] [stdout] | ^^^^^^^^^^^ help: replace the closure with the method itself: `std::vec::Vec::len` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/tui.rs:7547:70 [INFO] [stdout] | [INFO] [stdout] 7547 | let modified_count = diff.modified_issues.as_ref().map_or(0, |v| v.len()); [INFO] [stdout] | ^^^^^^^^^^^ help: replace the closure with the method itself: `std::vec::Vec::len` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/tui.rs:7548:61 [INFO] [stdout] | [INFO] [stdout] 7548 | let new_cycles = diff.new_cycles.as_ref().map_or(0, |v| v.len()); [INFO] [stdout] | ^^^^^^^^^^^ help: replace the closure with the method itself: `std::vec::Vec::len` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/tui.rs:7549:71 [INFO] [stdout] | [INFO] [stdout] 7549 | let resolved_cycles = diff.resolved_cycles.as_ref().map_or(0, |v| v.len()); [INFO] [stdout] | ^^^^^^^^^^^ help: replace the closure with the method itself: `std::vec::Vec::len` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_for_method_calls [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this could be rewritten as `let...else` [INFO] [stdout] --> src/tui.rs:7766:9 [INFO] [stdout] | [INFO] [stdout] 7766 | / let sprint = match self.sprint_data.get(self.sprint_cursor) { [INFO] [stdout] 7767 | | Some(s) => s, [INFO] [stdout] 7768 | | None => return Vec::new(), [INFO] [stdout] 7769 | | }; [INFO] [stdout] | |__________^ help: consider writing: `let Some(sprint) = self.sprint_data.get(self.sprint_cursor) else { return Vec::new() };` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_let_else [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `f64` to `u32` may truncate the value [INFO] [stdout] --> src/tui.rs:7833:27 [INFO] [stdout] | [INFO] [stdout] 7833 | let pct = (closed as f64 / matched_issues as f64 * 100.0) as u32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ... [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_truncation [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `f64` to `u32` may lose the sign of the value [INFO] [stdout] --> src/tui.rs:7833:27 [INFO] [stdout] | [INFO] [stdout] 7833 | let pct = (closed as f64 / matched_issues as f64 * 100.0) as u32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_sign_loss [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this could be rewritten as `let...else` [INFO] [stdout] --> src/tui.rs:7842:9 [INFO] [stdout] | [INFO] [stdout] 7842 | / let sprint = match self.sprint_data.get(self.sprint_cursor) { [INFO] [stdout] 7843 | | Some(s) => s, [INFO] [stdout] 7844 | | None => return " Select a sprint from the list.".to_string(), [INFO] [stdout] 7845 | | }; [INFO] [stdout] | |__________^ help: consider writing: `let Some(sprint) = self.sprint_data.get(self.sprint_cursor) else { return " Select a sprint from the list.".to_string() };` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_let_else [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `f64` to `usize` may truncate the value [INFO] [stdout] --> src/tui.rs:7926:27 [INFO] [stdout] | [INFO] [stdout] 7926 | let pct = (closed as f64 / total as f64 * 100.0) as usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: if this is intentional allow the lint with `#[allow(clippy::cast_possible_truncation)]` ... [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_possible_truncation [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting `f64` to `usize` may lose the sign of the value [INFO] [stdout] --> src/tui.rs:7926:27 [INFO] [stdout] | [INFO] [stdout] 7926 | let pct = (closed as f64 / total as f64 * 100.0) as usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_sign_loss [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `self` argument [INFO] [stdout] --> src/tui.rs:8853:37 [INFO] [stdout] | [INFO] [stdout] 8853 | fn graph_relationship_box_width(&self, width: usize, count: usize) -> usize { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider refactoring to an associated function [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_self [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `self` argument [INFO] [stdout] --> src/tui.rs:8934:29 [INFO] [stdout] | [INFO] [stdout] 8934 | fn graph_connector_rows(&self, count: usize, width: usize) -> Vec { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider refactoring to an associated function [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_self [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: these match arms have identical bodies [INFO] [stdout] --> src/tui.rs:9126:13 [INFO] [stdout] | [INFO] [stdout] 9126 | / FocusPane::Middle => { [INFO] [stdout] 9127 | | "Focused edge: list focus (Tab to inspect relationships)".to_string() [INFO] [stdout] 9128 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] 9129 | / FocusPane::List => { [INFO] [stdout] 9130 | | "Focused edge: list focus (Tab to inspect relationships)".to_string() [INFO] [stdout] 9131 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: if this is unintentional make the arms return different values [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_same_arms [INFO] [stdout] help: otherwise merge the patterns into a single arm [INFO] [stdout] | [INFO] [stdout] 9126 ~ FocusPane::Middle | FocusPane::List => { [INFO] [stdout] 9127 | "Focused edge: list focus (Tab to inspect relationships)".to_string() [INFO] [stdout] 9128 | } [INFO] [stdout] 9129 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map().unwrap_or()` on an `Option` value [INFO] [stdout] --> src/tui.rs:9097:33 [INFO] [stdout] | [INFO] [stdout] 9097 | let title = self [INFO] [stdout] | _________________________________^ [INFO] [stdout] 9098 | | .issue_by_id(target) [INFO] [stdout] 9099 | | .map(|candidate| candidate.title.as_str()) [INFO] [stdout] 9100 | | .unwrap_or("?"); [INFO] [stdout] | |_______________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_unwrap_or [INFO] [stdout] help: use `map_or(, )` instead [INFO] [stdout] | [INFO] [stdout] 9099 - .map(|candidate| candidate.title.as_str()) [INFO] [stdout] 9100 - .unwrap_or("?"); [INFO] [stdout] 9099 + .map_or("?", |candidate| candidate.title.as_str()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map().unwrap_or()` on an `Option` value [INFO] [stdout] --> src/tui.rs:9112:33 [INFO] [stdout] | [INFO] [stdout] 9112 | let title = self [INFO] [stdout] | _________________________________^ [INFO] [stdout] 9113 | | .issue_by_id(target) [INFO] [stdout] 9114 | | .map(|candidate| candidate.title.as_str()) [INFO] [stdout] 9115 | | .unwrap_or("?"); [INFO] [stdout] | |_______________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_unwrap_or [INFO] [stdout] help: use `map_or(, )` instead [INFO] [stdout] | [INFO] [stdout] 9114 - .map(|candidate| candidate.title.as_str()) [INFO] [stdout] 9115 - .unwrap_or("?"); [INFO] [stdout] 9114 + .map_or("?", |candidate| candidate.title.as_str()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map().unwrap_or_else()` on an `Option` value [INFO] [stdout] --> src/tui.rs:9519:30 [INFO] [stdout] | [INFO] [stdout] 9519 | let ts = event [INFO] [stdout] | ______________________________^ [INFO] [stdout] 9520 | | .timestamp [INFO] [stdout] 9521 | | .map(|dt| dt.to_rfc3339_opts(chrono::SecondsFormat::Secs, true)) [INFO] [stdout] 9522 | | .unwrap_or_else(|| "n/a".to_string()); [INFO] [stdout] | |_____________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_unwrap_or [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 9519 ~ let ts = event [INFO] [stdout] 9520 ~ .timestamp.map_or_else(|| "n/a".to_string(), |dt| dt.to_rfc3339_opts(chrono::SecondsFormat::Secs, true)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use Option::map_or_else instead of an if let/else [INFO] [stdout] --> src/tui.rs:10342:21 [INFO] [stdout] | [INFO] [stdout] 10342 | / if let Some(line) = box_lines.get(row) { [INFO] [stdout] 10343 | | line.clone() [INFO] [stdout] 10344 | | } else { [INFO] [stdout] 10345 | | let fallback_width = [INFO] [stdout] 10346 | | box_lines.first().map_or(0, |line| display_width(line)); [INFO] [stdout] 10347 | | " ".repeat(fallback_width) [INFO] [stdout] 10348 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_if_let_else [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 10342 ~ box_lines.get(row).map_or_else(|| { [INFO] [stdout] 10343 + let fallback_width = [INFO] [stdout] 10344 + box_lines.first().map_or(0, |line| display_width(line)); [INFO] [stdout] 10345 + " ".repeat(fallback_width) [INFO] [stdout] 10346 + }, |line| line.clone()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/tui.rs:11044:45 [INFO] [stdout] | [INFO] [stdout] 11044 | commits: Some(vec![ui_commit.clone(), core_commit.clone()]), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/tui.rs:11044:36 [INFO] [stdout] | [INFO] [stdout] 11044 | commits: Some(vec![ui_commit.clone(), core_commit.clone()]), [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/tui.rs:11044:66 [INFO] [stdout] | [INFO] [stdout] 11044 | commits: Some(vec![ui_commit.clone(), core_commit.clone()]), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/tui.rs:11044:55 [INFO] [stdout] | [INFO] [stdout] 11044 | commits: Some(vec![ui_commit.clone(), core_commit.clone()]), [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/tui.rs:11057:47 [INFO] [stdout] | [INFO] [stdout] 11057 | commits: Some(vec![docs_commit.clone(), build_commit.clone()]), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/tui.rs:11057:36 [INFO] [stdout] | [INFO] [stdout] 11057 | commits: Some(vec![docs_commit.clone(), build_commit.clone()]), [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/tui.rs:11057:69 [INFO] [stdout] | [INFO] [stdout] 11057 | commits: Some(vec![docs_commit.clone(), build_commit.clone()]), [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/tui.rs:11057:57 [INFO] [stdout] | [INFO] [stdout] 11057 | commits: Some(vec![docs_commit.clone(), build_commit.clone()]), [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: single-character string constant used as pattern [INFO] [stdout] --> src/tui.rs:11314:36 [INFO] [stdout] | [INFO] [stdout] 11314 | assert!(keystones.contains("A")); [INFO] [stdout] | ^^^ help: consider using a `char`: `'A'` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: single-character string constant used as pattern [INFO] [stdout] --> src/tui.rs:11323:35 [INFO] [stdout] | [INFO] [stdout] 11323 | assert!(priority.contains("p")); [INFO] [stdout] | ^^^ help: consider using a `char`: `'p'` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `contains()` instead of `iter().any()` is more efficient [INFO] [stdout] --> src/tui.rs:14980:13 [INFO] [stdout] | [INFO] [stdout] 14980 | / urls.iter() [INFO] [stdout] 14981 | | .any(|url| *url == "https://github.com/org/repo/issues/42"), [INFO] [stdout] | |___________________________________________________________________________^ help: try: `urls.contains(&"https://github.com/org/repo/issues/42")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_contains [INFO] [stdout] = note: `#[warn(clippy::manual_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variables can be used directly in the `format!` string [INFO] [stdout] --> src/tui.rs:17556:13 [INFO] [stdout] | [INFO] [stdout] 17556 | / assert_eq!( [INFO] [stdout] 17557 | | app.mode, [INFO] [stdout] 17558 | | ViewMode::Main, [INFO] [stdout] 17559 | | "should return to Main from mode entered via {:?}", [INFO] [stdout] 17560 | | mode_key [INFO] [stdout] 17561 | | ); [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variables can be used directly in the `format!` string [INFO] [stdout] --> src/tui.rs:17577:13 [INFO] [stdout] | [INFO] [stdout] 17577 | assert!(app.show_help, "help should open in mode {:?}", mode_key); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 17577 - assert!(app.show_help, "help should open in mode {:?}", mode_key); [INFO] [stdout] 17577 + assert!(app.show_help, "help should open in mode {mode_key:?}"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/tui.rs:18573:9 [INFO] [stdout] | [INFO] [stdout] 18573 | / out.push_str(&format!( [INFO] [stdout] 18574 | | "=== E2E Journey: {journey_name} | {width}x{height} ===\n\n" [INFO] [stdout] 18575 | | )); [INFO] [stdout] | |__________^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 18573 - out.push_str(&format!( [INFO] [stdout] 18574 - "=== E2E Journey: {journey_name} | {width}x{height} ===\n\n" [INFO] [stdout] 18575 - )); [INFO] [stdout] 18573 + let _ = write!(out, "=== E2E Journey: {journey_name} | {width}x{height} ===\n\n"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `format!(..)` appended to existing `String` [INFO] [stdout] --> src/tui.rs:18577:13 [INFO] [stdout] | [INFO] [stdout] 18577 | out.push_str(&format!("--- Step {}: {} ---\n{}\n\n", i + 1, step, text)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you may need to import the `std::fmt::Write` trait [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#format_push_string [INFO] [stdout] help: consider using `write!` to avoid the extra allocation [INFO] [stdout] | [INFO] [stdout] 18577 - out.push_str(&format!("--- Step {}: {} ---\n{}\n\n", i + 1, step, text)); [INFO] [stdout] 18577 + let _ = write!(out, "--- Step {}: {} ---\n{}\n\n", i + 1, step, text); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `sort` on primitive type `str` [INFO] [stdout] --> src/viewer_assets.rs:196:9 [INFO] [stdout] | [INFO] [stdout] 196 | sorted.sort(); [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `sorted.sort_unstable()` [INFO] [stdout] | [INFO] [stdout] = note: an unstable sort typically performs faster without any observable difference for this data type [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#stable_sort_primitive [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: case-sensitive file extension comparison [INFO] [stdout] --> src/viewer_assets.rs:577:16 [INFO] [stdout] | [INFO] [stdout] 577 | if entry.path.ends_with(".woff2") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider using a case-insensitive comparison instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#case_sensitive_file_extension_comparisons [INFO] [stdout] = note: `-W clippy::case-sensitive-file-extension-comparisons` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::case_sensitive_file_extension_comparisons)]` [INFO] [stdout] help: use std::path::Path [INFO] [stdout] | [INFO] [stdout] 577 ~ if std::path::Path::new(entry.path) [INFO] [stdout] 578 + .extension() [INFO] [stdout] 579 ~ .is_some_and(|ext| ext.eq_ignore_ascii_case("woff2")) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: case-sensitive file extension comparison [INFO] [stdout] --> src/viewer_assets.rs:584:16 [INFO] [stdout] | [INFO] [stdout] 584 | if entry.path.ends_with(".css") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider using a case-insensitive comparison instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#case_sensitive_file_extension_comparisons [INFO] [stdout] help: use std::path::Path [INFO] [stdout] | [INFO] [stdout] 584 ~ if std::path::Path::new(entry.path) [INFO] [stdout] 585 + .extension() [INFO] [stdout] 586 ~ .is_some_and(|ext| ext.eq_ignore_ascii_case("css")) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: case-sensitive file extension comparison [INFO] [stdout] --> src/viewer_assets.rs:592:16 [INFO] [stdout] | [INFO] [stdout] 592 | if entry.path.ends_with(".html") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider using a case-insensitive comparison instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#case_sensitive_file_extension_comparisons [INFO] [stdout] help: use std::path::Path [INFO] [stdout] | [INFO] [stdout] 592 ~ if std::path::Path::new(entry.path) [INFO] [stdout] 593 + .extension() [INFO] [stdout] 594 ~ .is_some_and(|ext| ext.eq_ignore_ascii_case("html")) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 37s [INFO] running `Command { std: "docker" "inspect" "466a9644b408afb6f21d0ce7070e6909c814cacce99be2e5ee8c83279d091b05", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "466a9644b408afb6f21d0ce7070e6909c814cacce99be2e5ee8c83279d091b05", kill_on_drop: false }` [INFO] [stdout] 466a9644b408afb6f21d0ce7070e6909c814cacce99be2e5ee8c83279d091b05