[INFO] cloning repository https://github.com/ZenimaxOnlineStudios/faqifai [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/ZenimaxOnlineStudios/faqifai" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FZenimaxOnlineStudios%2Ffaqifai", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FZenimaxOnlineStudios%2Ffaqifai'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] b021f0cdaa7b21362ef09e88d465ec8007950bbc [INFO] linting ZenimaxOnlineStudios/faqifai against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FZenimaxOnlineStudios%2Ffaqifai" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/ZenimaxOnlineStudios/faqifai [INFO] finished tweaking git repo https://github.com/ZenimaxOnlineStudios/faqifai [INFO] tweaked toml for git repo https://github.com/ZenimaxOnlineStudios/faqifai written to /workspace/builds/worker-3-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/ZenimaxOnlineStudios/faqifai 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/ZenimaxOnlineStudios/faqifai 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 logos v0.12.1 [INFO] [stderr] Downloaded allocative v0.3.4 [INFO] [stderr] Downloaded allocative_derive v0.3.3 [INFO] [stderr] Downloaded dupe_derive v0.9.1 [INFO] [stderr] Downloaded dupe v0.9.1 [INFO] [stderr] Downloaded starlark_map v0.13.0 [INFO] [stderr] Downloaded schemafy_core v0.5.2 [INFO] [stderr] Downloaded cmp_any v0.8.1 [INFO] [stderr] Downloaded schemafy_lib v0.5.2 [INFO] [stderr] Downloaded debugserver-types v0.5.0 [INFO] [stderr] Downloaded annotate-snippets v0.9.2 [INFO] [stderr] Downloaded logos-derive v0.12.1 [INFO] [stderr] Downloaded starlark_derive v0.13.0 [INFO] [stderr] Downloaded ignore v0.4.25 [INFO] [stderr] Downloaded schemafy v0.5.2 [INFO] [stderr] Downloaded lsp-types v0.94.1 [INFO] [stderr] Downloaded ena v0.14.4 [INFO] [stderr] Downloaded rustyline v14.0.0 [INFO] [stderr] Downloaded inventory v0.3.22 [INFO] [stderr] Downloaded starlark_syntax v0.13.0 [INFO] [stderr] Downloaded display_container v0.9.0 [INFO] [stderr] Downloaded starlark v0.13.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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] 5bbf41b2dd45eb26f03ab252ebe90bcc91b8864303814ab8d3a5e2e7c46b6323 [INFO] running `Command { std: "docker" "start" "-a" "5bbf41b2dd45eb26f03ab252ebe90bcc91b8864303814ab8d3a5e2e7c46b6323", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "5bbf41b2dd45eb26f03ab252ebe90bcc91b8864303814ab8d3a5e2e7c46b6323", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "5bbf41b2dd45eb26f03ab252ebe90bcc91b8864303814ab8d3a5e2e7c46b6323", kill_on_drop: false }` [INFO] [stdout] 5bbf41b2dd45eb26f03ab252ebe90bcc91b8864303814ab8d3a5e2e7c46b6323 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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] 90cb85304556895f86abdd4a65a63a6cd572c013510ea6860c97e0b327fca09a [INFO] running `Command { std: "docker" "start" "-a" "90cb85304556895f86abdd4a65a63a6cd572c013510ea6860c97e0b327fca09a", kill_on_drop: false }` [INFO] [stderr] Compiling memchr v2.8.0 [INFO] [stderr] Compiling libc v0.2.182 [INFO] [stderr] Compiling regex-syntax v0.8.10 [INFO] [stderr] Compiling crunchy v0.2.4 [INFO] [stderr] Compiling smallvec v1.15.1 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling syn v1.0.109 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling lock_api v0.4.14 [INFO] [stderr] Checking aho-corasick v1.1.4 [INFO] [stderr] Compiling equivalent v1.0.2 [INFO] [stderr] Compiling siphasher v1.0.2 [INFO] [stderr] Compiling hashbrown v0.16.1 [INFO] [stderr] Compiling zmij v1.0.21 [INFO] [stderr] Compiling either v1.15.0 [INFO] [stderr] Checking log v0.4.29 [INFO] [stderr] Compiling itoa v1.0.17 [INFO] [stderr] Compiling ena v0.14.4 [INFO] [stderr] Compiling tiny-keccak v2.0.2 [INFO] [stderr] Compiling itertools v0.10.5 [INFO] [stderr] Checking ahash v0.8.12 [INFO] [stderr] Compiling phf_shared v0.11.3 [INFO] [stderr] Checking percent-encoding v2.3.2 [INFO] [stderr] Compiling lazy_static v1.5.0 [INFO] [stderr] Compiling rustix v1.1.4 [INFO] [stderr] Compiling unicode-segmentation v1.12.0 [INFO] [stderr] Compiling allocative v0.3.4 [INFO] [stderr] Compiling diff v0.1.13 [INFO] [stderr] Checking form_urlencoded v1.2.2 [INFO] [stderr] Compiling nix v0.28.0 [INFO] [stderr] Checking hashbrown v0.14.5 [INFO] [stderr] Checking num-bigint v0.4.6 [INFO] [stderr] Compiling starlark_map v0.13.0 [INFO] [stderr] Checking linux-raw-sys v0.12.1 [INFO] [stderr] Compiling indexmap v2.13.0 [INFO] [stderr] Checking bumpalo v3.20.2 [INFO] [stderr] Compiling convert_case v0.6.0 [INFO] [stderr] Checking nibble_vec v0.1.0 [INFO] [stderr] Checking tracing-core v0.1.36 [INFO] [stderr] Checking anstyle v1.0.13 [INFO] [stderr] Compiling petgraph v0.6.5 [INFO] [stderr] Compiling ref-cast v1.0.25 [INFO] [stderr] Checking endian-type v0.1.2 [INFO] [stderr] Compiling getrandom v0.4.2 [INFO] [stderr] Checking is_terminal_polyfill v1.70.2 [INFO] [stderr] Checking anstyle-query v1.1.5 [INFO] [stderr] Checking radix_trie v0.2.1 [INFO] [stderr] Checking anstream v0.6.21 [INFO] [stderr] Checking annotate-snippets v0.9.2 [INFO] [stderr] Checking errno v0.3.14 [INFO] [stderr] Checking indenter v0.3.4 [INFO] [stderr] Compiling starlark v0.13.0 [INFO] [stderr] Checking clap_lex v1.0.0 [INFO] [stderr] Checking home v0.5.12 [INFO] [stderr] Checking lalrpop-util v0.19.12 [INFO] [stderr] Checking display_container v0.9.0 [INFO] [stderr] Checking clap_builder v4.5.60 [INFO] [stderr] Checking signal-hook-registry v1.4.8 [INFO] [stderr] Checking tracing-log v0.2.0 [INFO] [stderr] Checking itertools v0.13.0 [INFO] [stderr] Checking textwrap v0.11.0 [INFO] [stderr] Checking regex-automata v0.4.14 [INFO] [stderr] Checking mio v1.1.1 [INFO] [stderr] Checking cmp_any v0.8.1 [INFO] [stderr] Checking nu-ansi-term v0.50.3 [INFO] [stderr] Checking inventory v0.3.22 [INFO] [stderr] Checking maplit v1.0.2 [INFO] [stderr] Checking fd-lock v4.0.4 [INFO] [stderr] Checking unsafe-libyaml v0.2.11 [INFO] [stderr] Checking uuid v1.21.0 [INFO] [stderr] Checking rayon v1.11.0 [INFO] [stderr] Checking glob v0.3.3 [INFO] [stderr] Compiling dirs-sys-next v0.1.2 [INFO] [stderr] Compiling is-terminal v0.4.17 [INFO] [stderr] Compiling dirs-next v2.0.0 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling term v0.7.0 [INFO] [stderr] Compiling string_cache v0.8.9 [INFO] [stderr] Compiling ascii-canvas v3.0.0 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Checking rustyline v14.0.0 [INFO] [stderr] Checking matchers v0.2.0 [INFO] [stderr] Checking regex v1.12.3 [INFO] [stderr] Checking globset v0.4.18 [INFO] [stderr] Checking ignore v0.4.25 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling ctor v0.1.26 [INFO] [stderr] Compiling logos-derive v0.12.1 [INFO] [stderr] Compiling derivative v2.2.0 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [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 dupe_derive v0.9.1 [INFO] [stderr] Compiling serde_repr v0.1.20 [INFO] [stderr] Compiling allocative_derive v0.3.3 [INFO] [stderr] Compiling derive_more-impl v1.0.0 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling ref-cast-impl v1.0.25 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling Inflector v0.11.4 [INFO] [stderr] Checking dupe v0.9.1 [INFO] [stderr] Compiling lalrpop v0.19.12 [INFO] [stderr] Compiling starlark_derive v0.13.0 [INFO] [stderr] Compiling clap_derive v4.5.55 [INFO] [stderr] Compiling tokio-macros v2.6.1 [INFO] [stderr] Checking logos v0.12.1 [INFO] [stderr] Checking thiserror v1.0.69 [INFO] [stderr] Checking zerofrom v0.1.6 [INFO] [stderr] Checking tokio v1.50.0 [INFO] [stderr] Checking yoke v0.8.1 [INFO] [stderr] Checking tracing v0.1.44 [INFO] [stderr] Checking zerovec v0.11.5 [INFO] [stderr] Checking zerotrie v0.2.3 [INFO] [stderr] Checking tracing-subscriber v0.3.22 [INFO] [stderr] Checking clap v4.5.60 [INFO] [stderr] Checking tinystr v0.8.2 [INFO] [stderr] Checking potential_utf v0.1.4 [INFO] [stderr] Checking icu_collections v2.1.1 [INFO] [stderr] Checking icu_locale_core v2.1.1 [INFO] [stderr] Checking serde v1.0.228 [INFO] [stderr] Checking icu_provider v2.1.1 [INFO] [stderr] Checking toml_datetime v0.6.11 [INFO] [stderr] Checking serde_spanned v0.6.9 [INFO] [stderr] Checking erased-serde v0.3.31 [INFO] [stderr] Checking chrono v0.4.44 [INFO] [stderr] Checking serde_yaml v0.9.34+deprecated [INFO] [stderr] Compiling schemafy_core v0.5.2 [INFO] [stderr] Compiling schemafy_lib v0.5.2 [INFO] [stderr] Checking toml_edit v0.22.27 [INFO] [stderr] Checking icu_properties v2.1.2 [INFO] [stderr] Checking icu_normalizer v2.1.1 [INFO] [stderr] Checking derive_more v1.0.0 [INFO] [stderr] Compiling schemafy v0.5.2 [INFO] [stderr] Checking debugserver-types v0.5.0 [INFO] [stderr] Checking idna_adapter v1.2.1 [INFO] [stderr] Checking idna v1.1.0 [INFO] [stderr] Checking url v2.5.8 [INFO] [stderr] Checking toml v0.8.23 [INFO] [stderr] Checking lsp-types v0.94.1 [INFO] [stderr] Compiling starlark_syntax v0.13.0 [INFO] [stderr] Checking faqifai v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: associated function `deny` is never used [INFO] [stdout] --> src/copilot/types.rs:195:12 [INFO] [stdout] | [INFO] [stdout] 188 | impl PermissionResult { [INFO] [stdout] | --------------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 195 | pub fn deny() -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/ai.rs:209:5 [INFO] [stdout] | [INFO] [stdout] 209 | / if let Some(hint_paths) = hints { [INFO] [stdout] 210 | | if !hint_paths.is_empty() { [INFO] [stdout] 211 | | msg.push_str("## Suggested Starting Points\n\n"); [INFO] [stdout] 212 | | for h in hint_paths { [INFO] [stdout] ... | [INFO] [stdout] 217 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 209 ~ if let Some(hint_paths) = hints [INFO] [stdout] 210 ~ && !hint_paths.is_empty() { [INFO] [stdout] 211 | msg.push_str("## Suggested Starting Points\n\n"); [INFO] [stdout] ... [INFO] [stdout] 215 | msg.push_str("\n"); [INFO] [stdout] 216 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> src/ai.rs:215:13 [INFO] [stdout] | [INFO] [stdout] 215 | msg.push_str("\n"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `msg.push('\n')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] = note: `#[warn(clippy::single_char_add_str)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/ai.rs:220:5 [INFO] [stdout] | [INFO] [stdout] 220 | / if let Some(prev) = previous_answer { [INFO] [stdout] 221 | | if !prev.is_empty() { [INFO] [stdout] 222 | | msg.push_str("## Previous Answer (for reference only)\n\n"); [INFO] [stdout] 223 | | msg.push_str("The following is a previous answer to this question. It may be partially or fully outdated. Use it to g... [INFO] [stdout] ... | [INFO] [stdout] 249 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 220 ~ if let Some(prev) = previous_answer [INFO] [stdout] 221 ~ && !prev.is_empty() { [INFO] [stdout] 222 | msg.push_str("## Previous Answer (for reference only)\n\n"); [INFO] [stdout] ... [INFO] [stdout] 247 | msg.push_str("\n\n\n"); [INFO] [stdout] 248 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/ai.rs:225:13 [INFO] [stdout] | [INFO] [stdout] 225 | / if let Some(changes) = changed_sources { [INFO] [stdout] 226 | | if !changes.is_empty() { [INFO] [stdout] 227 | | msg.push_str("**Detected changes since last generation:**\n"); [INFO] [stdout] 228 | | for c in changes { [INFO] [stdout] ... | [INFO] [stdout] 233 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 225 ~ if let Some(changes) = changed_sources [INFO] [stdout] 226 ~ && !changes.is_empty() { [INFO] [stdout] 227 | msg.push_str("**Detected changes since last generation:**\n"); [INFO] [stdout] ... [INFO] [stdout] 231 | msg.push_str("\nPay special attention to these changed sources — they are likely why the answer needs updating.\n\n"); [INFO] [stdout] 232 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/ai.rs:235:13 [INFO] [stdout] | [INFO] [stdout] 235 | / ... if let Some(srcs) = previous_sources { [INFO] [stdout] 236 | | ... if !srcs.is_empty() { [INFO] [stdout] 237 | | ... msg.push_str("**Files previously tracked as relevant** (call `record_source` for each that remains relevant — add n... [INFO] [stdout] 238 | | ... for s in srcs { [INFO] [stdout] ... | [INFO] [stdout] 243 | | ... } [INFO] [stdout] | |_______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 235 ~ if let Some(srcs) = previous_sources [INFO] [stdout] 236 ~ && !srcs.is_empty() { [INFO] [stdout] 237 | msg.push_str("**Files previously tracked as relevant** (call `record_source` for each that remains relevant — add new findings, omit any that no longer apply):\n"); [INFO] [stdout] ... [INFO] [stdout] 241 | msg.push_str("\n"); [INFO] [stdout] 242 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> src/ai.rs:241:21 [INFO] [stdout] | [INFO] [stdout] 241 | msg.push_str("\n"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `msg.push('\n')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/ai.rs:675:16 [INFO] [stdout] | [INFO] [stdout] 675 | let queue: Arc>>> = [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/ai.rs:678:18 [INFO] [stdout] | [INFO] [stdout] 678 | let results: Arc)>>> = [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/ai.rs:715:62 [INFO] [stdout] | [INFO] [stdout] 715 | for (idx, result) in indices.into_iter().zip(group_results.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:629: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] 715 - for (idx, result) in indices.into_iter().zip(group_results.into_iter()) { [INFO] [stdout] 715 + for (idx, result) in indices.into_iter().zip(group_results) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/codebase.rs:71:9 [INFO] [stdout] | [INFO] [stdout] 71 | / if let Ok(canonical) = path.canonicalize() { [INFO] [stdout] 72 | | if !canonical.starts_with(&canonical_root) { continue; } [INFO] [stdout] 73 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 71 ~ if let Ok(canonical) = path.canonicalize() [INFO] [stdout] 72 ~ && !canonical.starts_with(&canonical_root) { continue; } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/codebase.rs:106:9 [INFO] [stdout] | [INFO] [stdout] 106 | / if let Ok(canonical) = path.canonicalize() { [INFO] [stdout] 107 | | if !canonical.starts_with(&canonical_root) { continue; } [INFO] [stdout] 108 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 106 ~ if let Ok(canonical) = path.canonicalize() [INFO] [stdout] 107 ~ && !canonical.starts_with(&canonical_root) { continue; } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `deny` is never used [INFO] [stdout] --> src/copilot/types.rs:195:12 [INFO] [stdout] | [INFO] [stdout] 188 | impl PermissionResult { [INFO] [stdout] | --------------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 195 | pub fn deny() -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/ai.rs:209:5 [INFO] [stdout] | [INFO] [stdout] 209 | / if let Some(hint_paths) = hints { [INFO] [stdout] 210 | | if !hint_paths.is_empty() { [INFO] [stdout] 211 | | msg.push_str("## Suggested Starting Points\n\n"); [INFO] [stdout] 212 | | for h in hint_paths { [INFO] [stdout] ... | [INFO] [stdout] 217 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 209 ~ if let Some(hint_paths) = hints [INFO] [stdout] 210 ~ && !hint_paths.is_empty() { [INFO] [stdout] 211 | msg.push_str("## Suggested Starting Points\n\n"); [INFO] [stdout] ... [INFO] [stdout] 215 | msg.push_str("\n"); [INFO] [stdout] 216 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> src/ai.rs:215:13 [INFO] [stdout] | [INFO] [stdout] 215 | msg.push_str("\n"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `msg.push('\n')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] = note: `#[warn(clippy::single_char_add_str)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/ai.rs:220:5 [INFO] [stdout] | [INFO] [stdout] 220 | / if let Some(prev) = previous_answer { [INFO] [stdout] 221 | | if !prev.is_empty() { [INFO] [stdout] 222 | | msg.push_str("## Previous Answer (for reference only)\n\n"); [INFO] [stdout] 223 | | msg.push_str("The following is a previous answer to this question. It may be partially or fully outdated. Use it to g... [INFO] [stdout] ... | [INFO] [stdout] 249 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 220 ~ if let Some(prev) = previous_answer [INFO] [stdout] 221 ~ && !prev.is_empty() { [INFO] [stdout] 222 | msg.push_str("## Previous Answer (for reference only)\n\n"); [INFO] [stdout] ... [INFO] [stdout] 247 | msg.push_str("\n\n\n"); [INFO] [stdout] 248 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/ai.rs:225:13 [INFO] [stdout] | [INFO] [stdout] 225 | / if let Some(changes) = changed_sources { [INFO] [stdout] 226 | | if !changes.is_empty() { [INFO] [stdout] 227 | | msg.push_str("**Detected changes since last generation:**\n"); [INFO] [stdout] 228 | | for c in changes { [INFO] [stdout] ... | [INFO] [stdout] 233 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 225 ~ if let Some(changes) = changed_sources [INFO] [stdout] 226 ~ && !changes.is_empty() { [INFO] [stdout] 227 | msg.push_str("**Detected changes since last generation:**\n"); [INFO] [stdout] ... [INFO] [stdout] 231 | msg.push_str("\nPay special attention to these changed sources — they are likely why the answer needs updating.\n\n"); [INFO] [stdout] 232 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/ai.rs:235:13 [INFO] [stdout] | [INFO] [stdout] 235 | / ... if let Some(srcs) = previous_sources { [INFO] [stdout] 236 | | ... if !srcs.is_empty() { [INFO] [stdout] 237 | | ... msg.push_str("**Files previously tracked as relevant** (call `record_source` for each that remains relevant — add n... [INFO] [stdout] 238 | | ... for s in srcs { [INFO] [stdout] ... | [INFO] [stdout] 243 | | ... } [INFO] [stdout] | |_______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 235 ~ if let Some(srcs) = previous_sources [INFO] [stdout] 236 ~ && !srcs.is_empty() { [INFO] [stdout] 237 | msg.push_str("**Files previously tracked as relevant** (call `record_source` for each that remains relevant — add new findings, omit any that no longer apply):\n"); [INFO] [stdout] ... [INFO] [stdout] 241 | msg.push_str("\n"); [INFO] [stdout] 242 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> src/ai.rs:241:21 [INFO] [stdout] | [INFO] [stdout] 241 | msg.push_str("\n"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `msg.push('\n')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/codebase.rs:365:40 [INFO] [stdout] | [INFO] [stdout] 365 | let glob_pattern = glob_filter.map(|g| Pattern::new(g)).transpose()?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `Pattern::new` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/codebase.rs:376:9 [INFO] [stdout] | [INFO] [stdout] 376 | / if let Ok(canonical) = path.canonicalize() { [INFO] [stdout] 377 | | if !canonical.starts_with(&canonical_root) { [INFO] [stdout] 378 | | continue; [INFO] [stdout] 379 | | } [INFO] [stdout] 380 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 376 ~ if let Ok(canonical) = path.canonicalize() [INFO] [stdout] 377 ~ && !canonical.starts_with(&canonical_root) { [INFO] [stdout] 378 | continue; [INFO] [stdout] 379 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/codebase.rs:385:9 [INFO] [stdout] | [INFO] [stdout] 385 | / if let Some(ref gp) = glob_pattern { [INFO] [stdout] 386 | | if !gp.matches(&rel_str) { [INFO] [stdout] 387 | | continue; [INFO] [stdout] 388 | | } [INFO] [stdout] 389 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 385 ~ if let Some(ref gp) = glob_pattern [INFO] [stdout] 386 ~ && !gp.matches(&rel_str) { [INFO] [stdout] 387 | continue; [INFO] [stdout] 388 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `idx` is used to index `lines` [INFO] [stdout] --> src/codebase.rs:427:28 [INFO] [stdout] | [INFO] [stdout] 427 | for idx in range.start..range.end { [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] 427 - for idx in range.start..range.end { [INFO] [stdout] 427 + for (idx, ) in lines.iter().enumerate().take(range.end).skip(range.start) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/codebase.rs:476:9 [INFO] [stdout] | [INFO] [stdout] 476 | / if let Some(last) = ranges.last_mut() { [INFO] [stdout] 477 | | if start <= last.end { [INFO] [stdout] 478 | | // Overlaps or adjacent — extend [INFO] [stdout] 479 | | last.end = last.end.max(end); [INFO] [stdout] ... | [INFO] [stdout] 482 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 476 ~ if let Some(last) = ranges.last_mut() [INFO] [stdout] 477 ~ && start <= last.end { [INFO] [stdout] 478 | // Overlaps or adjacent — extend [INFO] [stdout] 479 | last.end = last.end.max(end); [INFO] [stdout] 480 | continue; [INFO] [stdout] 481 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/codebase.rs:505:9 [INFO] [stdout] | [INFO] [stdout] 505 | / if let Ok(canonical) = path.canonicalize() { [INFO] [stdout] 506 | | if !canonical.starts_with(&canonical_root) { [INFO] [stdout] 507 | | continue; [INFO] [stdout] 508 | | } [INFO] [stdout] 509 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 505 ~ if let Ok(canonical) = path.canonicalize() [INFO] [stdout] 506 ~ && !canonical.starts_with(&canonical_root) { [INFO] [stdout] 507 | continue; [INFO] [stdout] 508 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/ai.rs:675:16 [INFO] [stdout] | [INFO] [stdout] 675 | let queue: Arc>>> = [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/ai.rs:678:18 [INFO] [stdout] | [INFO] [stdout] 678 | let results: Arc)>>> = [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/ai.rs:715:62 [INFO] [stdout] | [INFO] [stdout] 715 | for (idx, result) in indices.into_iter().zip(group_results.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:629: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] 715 - for (idx, result) in indices.into_iter().zip(group_results.into_iter()) { [INFO] [stdout] 715 + for (idx, result) in indices.into_iter().zip(group_results) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/codebase.rs:71:9 [INFO] [stdout] | [INFO] [stdout] 71 | / if let Ok(canonical) = path.canonicalize() { [INFO] [stdout] 72 | | if !canonical.starts_with(&canonical_root) { continue; } [INFO] [stdout] 73 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 71 ~ if let Ok(canonical) = path.canonicalize() [INFO] [stdout] 72 ~ && !canonical.starts_with(&canonical_root) { continue; } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/codebase.rs:106:9 [INFO] [stdout] | [INFO] [stdout] 106 | / if let Ok(canonical) = path.canonicalize() { [INFO] [stdout] 107 | | if !canonical.starts_with(&canonical_root) { continue; } [INFO] [stdout] 108 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 106 ~ if let Ok(canonical) = path.canonicalize() [INFO] [stdout] 107 ~ && !canonical.starts_with(&canonical_root) { continue; } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/codebase.rs:365:40 [INFO] [stdout] | [INFO] [stdout] 365 | let glob_pattern = glob_filter.map(|g| Pattern::new(g)).transpose()?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `Pattern::new` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/codebase.rs:376:9 [INFO] [stdout] | [INFO] [stdout] 376 | / if let Ok(canonical) = path.canonicalize() { [INFO] [stdout] 377 | | if !canonical.starts_with(&canonical_root) { [INFO] [stdout] 378 | | continue; [INFO] [stdout] 379 | | } [INFO] [stdout] 380 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 376 ~ if let Ok(canonical) = path.canonicalize() [INFO] [stdout] 377 ~ && !canonical.starts_with(&canonical_root) { [INFO] [stdout] 378 | continue; [INFO] [stdout] 379 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/codebase.rs:385:9 [INFO] [stdout] | [INFO] [stdout] 385 | / if let Some(ref gp) = glob_pattern { [INFO] [stdout] 386 | | if !gp.matches(&rel_str) { [INFO] [stdout] 387 | | continue; [INFO] [stdout] 388 | | } [INFO] [stdout] 389 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 385 ~ if let Some(ref gp) = glob_pattern [INFO] [stdout] 386 ~ && !gp.matches(&rel_str) { [INFO] [stdout] 387 | continue; [INFO] [stdout] 388 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `idx` is used to index `lines` [INFO] [stdout] --> src/codebase.rs:427:28 [INFO] [stdout] | [INFO] [stdout] 427 | for idx in range.start..range.end { [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] 427 - for idx in range.start..range.end { [INFO] [stdout] 427 + for (idx, ) in lines.iter().enumerate().take(range.end).skip(range.start) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/codebase.rs:476:9 [INFO] [stdout] | [INFO] [stdout] 476 | / if let Some(last) = ranges.last_mut() { [INFO] [stdout] 477 | | if start <= last.end { [INFO] [stdout] 478 | | // Overlaps or adjacent — extend [INFO] [stdout] 479 | | last.end = last.end.max(end); [INFO] [stdout] ... | [INFO] [stdout] 482 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 476 ~ if let Some(last) = ranges.last_mut() [INFO] [stdout] 477 ~ && start <= last.end { [INFO] [stdout] 478 | // Overlaps or adjacent — extend [INFO] [stdout] 479 | last.end = last.end.max(end); [INFO] [stdout] 480 | continue; [INFO] [stdout] 481 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/codebase.rs:505:9 [INFO] [stdout] | [INFO] [stdout] 505 | / if let Ok(canonical) = path.canonicalize() { [INFO] [stdout] 506 | | if !canonical.starts_with(&canonical_root) { [INFO] [stdout] 507 | | continue; [INFO] [stdout] 508 | | } [INFO] [stdout] 509 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 505 ~ if let Ok(canonical) = path.canonicalize() [INFO] [stdout] 506 ~ && !canonical.starts_with(&canonical_root) { [INFO] [stdout] 507 | continue; [INFO] [stdout] 508 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/copilot/client.rs:73:9 [INFO] [stdout] | [INFO] [stdout] 73 | / if let Some(version) = response.protocol_version { [INFO] [stdout] 74 | | if version != SDK_PROTOCOL_VERSION { [INFO] [stdout] 75 | | tracing::warn!( [INFO] [stdout] 76 | | "Protocol version mismatch: server={}, sdk={}", [INFO] [stdout] ... | [INFO] [stdout] 81 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 73 ~ if let Some(version) = response.protocol_version [INFO] [stdout] 74 ~ && version != SDK_PROTOCOL_VERSION { [INFO] [stdout] 75 | tracing::warn!( [INFO] [stdout] ... [INFO] [stdout] 79 | ); [INFO] [stdout] 80 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant guard [INFO] [stdout] --> src/copilot/session.rs:197:36 [INFO] [stdout] | [INFO] [stdout] 197 | Some(n) if n == "report_intent" => {} // internal, skip [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_guards [INFO] [stdout] = note: `#[warn(clippy::redundant_guards)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 197 - Some(n) if n == "report_intent" => {} // internal, skip [INFO] [stdout] 197 + Some("report_intent") => {} // internal, skip [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant guard [INFO] [stdout] --> src/copilot/session.rs:232:36 [INFO] [stdout] | [INFO] [stdout] 232 | Some(n) if n == "report_intent" => {} [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_guards [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 232 - Some(n) if n == "report_intent" => {} [INFO] [stdout] 232 + Some("report_intent") => {} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/copilot/session.rs:287:49 [INFO] [stdout] | [INFO] [stdout] 287 | ... let error_msg = tool_result.error [INFO] [stdout] | _______________________________________^ [INFO] [stdout] 288 | | ... .unwrap_or_else(|| tool_result.text_result_for_llm); [INFO] [stdout] | |_____________________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] = note: `#[warn(clippy::unnecessary_lazy_evaluations)]` on by default [INFO] [stdout] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 288 - .unwrap_or_else(|| tool_result.text_result_for_llm); [INFO] [stdout] 288 + .unwrap_or(tool_result.text_result_for_llm); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/copilot/session.rs:417:13 [INFO] [stdout] | [INFO] [stdout] 417 | / if event_type == ASSISTANT_MESSAGE { [INFO] [stdout] 418 | | if let Some(content) = event [INFO] [stdout] 419 | | .get("data") [INFO] [stdout] 420 | | .and_then(|d| d.get("content")) [INFO] [stdout] ... | [INFO] [stdout] 426 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 417 ~ if event_type == ASSISTANT_MESSAGE [INFO] [stdout] 418 ~ && let Some(content) = event [INFO] [stdout] 419 | .get("data") [INFO] [stdout] ... [INFO] [stdout] 424 | return Ok(content.to_string()); [INFO] [stdout] 425 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/copilot/session.rs:501:20 [INFO] [stdout] | [INFO] [stdout] 501 | fn relativize_path<'a>(path: &'a str, root: Option<&std::path::Path>) -> Option { [INFO] [stdout] | ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] = note: `#[warn(clippy::needless_lifetimes)]` on by default [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 501 - fn relativize_path<'a>(path: &'a str, root: Option<&std::path::Path>) -> Option { [INFO] [stdout] 501 + fn relativize_path(path: &str, root: Option<&std::path::Path>) -> Option { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/copilot/session.rs:508:5 [INFO] [stdout] | [INFO] [stdout] 508 | / if let Some(root) = root { [INFO] [stdout] 509 | | if let Ok(rel) = p.strip_prefix(root) { [INFO] [stdout] 510 | | let rel_str = rel.to_string_lossy().replace('\\', "/"); [INFO] [stdout] 511 | | return Some(if rel_str.is_empty() { ".".to_string() } else { rel_str }); [INFO] [stdout] 512 | | } [INFO] [stdout] 513 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 508 ~ if let Some(root) = root [INFO] [stdout] 509 ~ && let Ok(rel) = p.strip_prefix(root) { [INFO] [stdout] 510 | let rel_str = rel.to_string_lossy().replace('\\', "/"); [INFO] [stdout] 511 | return Some(if rel_str.is_empty() { ".".to_string() } else { rel_str }); [INFO] [stdout] 512 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/copilot/client.rs:73:9 [INFO] [stdout] | [INFO] [stdout] 73 | / if let Some(version) = response.protocol_version { [INFO] [stdout] 74 | | if version != SDK_PROTOCOL_VERSION { [INFO] [stdout] 75 | | tracing::warn!( [INFO] [stdout] 76 | | "Protocol version mismatch: server={}, sdk={}", [INFO] [stdout] ... | [INFO] [stdout] 81 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 73 ~ if let Some(version) = response.protocol_version [INFO] [stdout] 74 ~ && version != SDK_PROTOCOL_VERSION { [INFO] [stdout] 75 | tracing::warn!( [INFO] [stdout] ... [INFO] [stdout] 79 | ); [INFO] [stdout] 80 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant guard [INFO] [stdout] --> src/copilot/session.rs:197:36 [INFO] [stdout] | [INFO] [stdout] 197 | Some(n) if n == "report_intent" => {} // internal, skip [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_guards [INFO] [stdout] = note: `#[warn(clippy::redundant_guards)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 197 - Some(n) if n == "report_intent" => {} // internal, skip [INFO] [stdout] 197 + Some("report_intent") => {} // internal, skip [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant guard [INFO] [stdout] --> src/copilot/session.rs:232:36 [INFO] [stdout] | [INFO] [stdout] 232 | Some(n) if n == "report_intent" => {} [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_guards [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 232 - Some(n) if n == "report_intent" => {} [INFO] [stdout] 232 + Some("report_intent") => {} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/orchestrator.rs:204:13 [INFO] [stdout] | [INFO] [stdout] 204 | / if matches!(q.staleness, Staleness::Fresh) { [INFO] [stdout] 205 | | if let Some(answer) = existing_answers.get(&q.text) { [INFO] [stdout] 206 | | merged_answers.insert(q.text.clone(), answer.clone()); [INFO] [stdout] 207 | | } [INFO] [stdout] 208 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 204 ~ if matches!(q.staleness, Staleness::Fresh) [INFO] [stdout] 205 ~ && let Some(answer) = existing_answers.get(&q.text) { [INFO] [stdout] 206 | merged_answers.insert(q.text.clone(), answer.clone()); [INFO] [stdout] 207 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/copilot/session.rs:287:49 [INFO] [stdout] | [INFO] [stdout] 287 | ... let error_msg = tool_result.error [INFO] [stdout] | _______________________________________^ [INFO] [stdout] 288 | | ... .unwrap_or_else(|| tool_result.text_result_for_llm); [INFO] [stdout] | |_____________________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] = note: `#[warn(clippy::unnecessary_lazy_evaluations)]` on by default [INFO] [stdout] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 288 - .unwrap_or_else(|| tool_result.text_result_for_llm); [INFO] [stdout] 288 + .unwrap_or(tool_result.text_result_for_llm); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/orchestrator.rs:397:13 [INFO] [stdout] | [INFO] [stdout] 397 | / if let Some(answer) = state::extract_answer(&content, &question.text) { [INFO] [stdout] 398 | | if answer.to_lowercase().contains(&pattern_lower) [INFO] [stdout] 399 | | || question.text.to_lowercase().contains(&pattern_lower) [INFO] [stdout] ... | [INFO] [stdout] 413 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 397 ~ if let Some(answer) = state::extract_answer(&content, &question.text) [INFO] [stdout] 398 ~ && (answer.to_lowercase().contains(&pattern_lower) [INFO] [stdout] 399 ~ || question.text.to_lowercase().contains(&pattern_lower)) [INFO] [stdout] 400 | { [INFO] [stdout] ... [INFO] [stdout] 411 | } [INFO] [stdout] 412 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/copilot/session.rs:417:13 [INFO] [stdout] | [INFO] [stdout] 417 | / if event_type == ASSISTANT_MESSAGE { [INFO] [stdout] 418 | | if let Some(content) = event [INFO] [stdout] 419 | | .get("data") [INFO] [stdout] 420 | | .and_then(|d| d.get("content")) [INFO] [stdout] ... | [INFO] [stdout] 426 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 417 ~ if event_type == ASSISTANT_MESSAGE [INFO] [stdout] 418 ~ && let Some(content) = event [INFO] [stdout] 419 | .get("data") [INFO] [stdout] ... [INFO] [stdout] 424 | return Ok(content.to_string()); [INFO] [stdout] 425 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/copilot/session.rs:501:20 [INFO] [stdout] | [INFO] [stdout] 501 | fn relativize_path<'a>(path: &'a str, root: Option<&std::path::Path>) -> Option { [INFO] [stdout] | ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] = note: `#[warn(clippy::needless_lifetimes)]` on by default [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 501 - fn relativize_path<'a>(path: &'a str, root: Option<&std::path::Path>) -> Option { [INFO] [stdout] 501 + fn relativize_path(path: &str, root: Option<&std::path::Path>) -> Option { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/copilot/session.rs:508:5 [INFO] [stdout] | [INFO] [stdout] 508 | / if let Some(root) = root { [INFO] [stdout] 509 | | if let Ok(rel) = p.strip_prefix(root) { [INFO] [stdout] 510 | | let rel_str = rel.to_string_lossy().replace('\\', "/"); [INFO] [stdout] 511 | | return Some(if rel_str.is_empty() { ".".to_string() } else { rel_str }); [INFO] [stdout] 512 | | } [INFO] [stdout] 513 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 508 ~ if let Some(root) = root [INFO] [stdout] 509 ~ && let Ok(rel) = p.strip_prefix(root) { [INFO] [stdout] 510 | let rel_str = rel.to_string_lossy().replace('\\', "/"); [INFO] [stdout] 511 | return Some(if rel_str.is_empty() { ".".to_string() } else { rel_str }); [INFO] [stdout] 512 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/orchestrator.rs:204:13 [INFO] [stdout] | [INFO] [stdout] 204 | / if matches!(q.staleness, Staleness::Fresh) { [INFO] [stdout] 205 | | if let Some(answer) = existing_answers.get(&q.text) { [INFO] [stdout] 206 | | merged_answers.insert(q.text.clone(), answer.clone()); [INFO] [stdout] 207 | | } [INFO] [stdout] 208 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 204 ~ if matches!(q.staleness, Staleness::Fresh) [INFO] [stdout] 205 ~ && let Some(answer) = existing_answers.get(&q.text) { [INFO] [stdout] 206 | merged_answers.insert(q.text.clone(), answer.clone()); [INFO] [stdout] 207 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/orchestrator.rs:397:13 [INFO] [stdout] | [INFO] [stdout] 397 | / if let Some(answer) = state::extract_answer(&content, &question.text) { [INFO] [stdout] 398 | | if answer.to_lowercase().contains(&pattern_lower) [INFO] [stdout] 399 | | || question.text.to_lowercase().contains(&pattern_lower) [INFO] [stdout] ... | [INFO] [stdout] 413 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 397 ~ if let Some(answer) = state::extract_answer(&content, &question.text) [INFO] [stdout] 398 ~ && (answer.to_lowercase().contains(&pattern_lower) [INFO] [stdout] 399 ~ || question.text.to_lowercase().contains(&pattern_lower)) [INFO] [stdout] 400 | { [INFO] [stdout] ... [INFO] [stdout] 411 | } [INFO] [stdout] 412 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 51.82s [INFO] running `Command { std: "docker" "inspect" "90cb85304556895f86abdd4a65a63a6cd572c013510ea6860c97e0b327fca09a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "90cb85304556895f86abdd4a65a63a6cd572c013510ea6860c97e0b327fca09a", kill_on_drop: false }` [INFO] [stdout] 90cb85304556895f86abdd4a65a63a6cd572c013510ea6860c97e0b327fca09a