[INFO] cloning repository https://github.com/skissue/bouncer [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/skissue/bouncer" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fskissue%2Fbouncer", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fskissue%2Fbouncer'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 4c3377cb01dc9e33e0302ae47a7ed88c6102fe83 [INFO] linting skissue/bouncer against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fskissue%2Fbouncer" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/skissue/bouncer [INFO] finished tweaking git repo https://github.com/skissue/bouncer [INFO] tweaked toml for git repo https://github.com/skissue/bouncer written to /workspace/builds/worker-0-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/skissue/bouncer 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/skissue/bouncer 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 temp-dir v0.1.16 [INFO] [stderr] Downloaded xdg v3.0.0 [INFO] [stderr] Downloaded gettext-rs v0.7.7 [INFO] [stderr] Downloaded toml v1.0.6+spec-1.1.0 [INFO] [stderr] Downloaded wayland-protocols-misc v0.3.11 [INFO] [stderr] Downloaded uds_windows v1.2.0 [INFO] [stderr] Downloaded wayland-sys v0.31.10 [INFO] [stderr] Downloaded wayland-protocols-wlr v0.3.11 [INFO] [stderr] Downloaded wayland-scanner v0.31.9 [INFO] [stderr] Downloaded jni-macros v0.22.2 [INFO] [stderr] Downloaded webbrowser v1.2.0 [INFO] [stderr] Downloaded zune-jpeg v0.5.13 [INFO] [stderr] Downloaded wayland-backend v0.3.14 [INFO] [stderr] Downloaded wayland-client v0.31.13 [INFO] [stderr] Downloaded wayland-protocols-plasma v0.3.11 [INFO] [stderr] Downloaded freedesktop-desktop-entry v0.8.1 [INFO] [stderr] Downloaded jni-sys-macros v0.4.1 [INFO] [stderr] Downloaded jni v0.22.3 [INFO] [stderr] Downloaded wayland-protocols v0.32.11 [INFO] [stderr] Downloaded jni-sys v0.4.1 [INFO] [stderr] Downloaded quick-xml v0.39.2 [INFO] [stderr] Downloaded wayland-cursor v0.31.13 [INFO] [stderr] Downloaded simd_cesu8 v1.1.1 [INFO] [stderr] Downloaded winit v0.30.13 [INFO] [stderr] Downloaded orbclient v0.3.51 [INFO] [stderr] Downloaded gettext-sys v0.26.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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] 513ebd75787db5b65b8559b51d9f5c9af50c737cae69e6c0fcdf8fd04acd7f47 [INFO] running `Command { std: "docker" "start" "-a" "513ebd75787db5b65b8559b51d9f5c9af50c737cae69e6c0fcdf8fd04acd7f47", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "513ebd75787db5b65b8559b51d9f5c9af50c737cae69e6c0fcdf8fd04acd7f47", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "513ebd75787db5b65b8559b51d9f5c9af50c737cae69e6c0fcdf8fd04acd7f47", kill_on_drop: false }` [INFO] [stdout] 513ebd75787db5b65b8559b51d9f5c9af50c737cae69e6c0fcdf8fd04acd7f47 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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] 1ee539836f8d631ed37d4f44de2ed3652f4729a521af7e6d251c184278461354 [INFO] running `Command { std: "docker" "start" "-a" "1ee539836f8d631ed37d4f44de2ed3652f4729a521af7e6d251c184278461354", kill_on_drop: false }` [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling rustix v1.1.4 [INFO] [stderr] Checking linux-raw-sys v0.12.1 [INFO] [stderr] Checking slab v0.4.12 [INFO] [stderr] Compiling memchr v2.8.0 [INFO] [stderr] Compiling libc v0.2.183 [INFO] [stderr] Compiling winnow v0.7.15 [INFO] [stderr] Checking dlib v0.5.3 [INFO] [stderr] Compiling wayland-sys v0.31.10 [INFO] [stderr] Compiling toml_datetime v1.0.0+spec-1.1.0 [INFO] [stderr] Checking tracing-core v0.1.36 [INFO] [stderr] Checking futures-io v0.3.32 [INFO] [stderr] Compiling wayland-client v0.31.13 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Checking event-listener v5.4.1 [INFO] [stderr] Compiling endi v1.1.1 [INFO] [stderr] Checking getrandom v0.2.17 [INFO] [stderr] Checking bytes v1.11.1 [INFO] [stderr] Checking ppv-lite86 v0.2.21 [INFO] [stderr] Checking event-listener-strategy v0.5.4 [INFO] [stderr] Checking futures-lite v2.6.1 [INFO] [stderr] Checking piper v0.2.5 [INFO] [stderr] Compiling nix v0.29.0 [INFO] [stderr] Compiling async-io v2.6.0 [INFO] [stderr] Checking xdg-home v1.3.0 [INFO] [stderr] Checking socket2 v0.6.3 [INFO] [stderr] Checking mio v1.1.1 [INFO] [stderr] Checking async-channel v2.5.0 [INFO] [stderr] Checking async-lock v3.4.2 [INFO] [stderr] Checking async-broadcast v0.7.2 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Checking ordered-stream v0.2.0 [INFO] [stderr] Checking rustix v0.38.44 [INFO] [stderr] Checking getrandom v0.3.4 [INFO] [stderr] Compiling quick-xml v0.39.2 [INFO] [stderr] Checking memmap2 v0.9.10 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Compiling aws-lc-rs v1.16.1 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Checking ahash v0.8.12 [INFO] [stderr] Checking http v1.4.0 [INFO] [stderr] Checking accesskit v0.17.1 [INFO] [stderr] Compiling smithay-client-toolkit v0.19.2 [INFO] [stderr] Checking tokio v1.50.0 [INFO] [stderr] Checking x11-dl v2.21.0 [INFO] [stderr] Checking parking_lot_core v0.9.12 [INFO] [stderr] Checking rustls-pki-types v1.14.0 [INFO] [stderr] Checking parking_lot v0.12.5 [INFO] [stderr] Checking immutable-chunkmap v2.1.2 [INFO] [stderr] Compiling wayland-scanner v0.31.9 [INFO] [stderr] Compiling winit v0.30.13 [INFO] [stderr] Checking aho-corasick v1.1.4 [INFO] [stderr] Compiling rustls v0.23.37 [INFO] [stderr] Compiling jobserver v0.1.34 [INFO] [stderr] Checking blocking v1.6.2 [INFO] [stderr] Checking async-executor v1.14.0 [INFO] [stderr] Checking async-fs v2.2.0 [INFO] [stderr] Compiling cc v1.2.56 [INFO] [stderr] Checking flate2 v1.1.9 [INFO] [stderr] Checking http-body v1.0.1 [INFO] [stderr] Compiling glutin_egl_sys v0.7.1 [INFO] [stderr] Checking accesskit_consumer v0.26.0 [INFO] [stderr] Compiling glutin_glx_sys v0.6.1 [INFO] [stderr] Checking xkbcommon-dl v0.4.2 [INFO] [stderr] Checking epaint_default_fonts v0.31.1 [INFO] [stderr] Checking pxfm v0.1.28 [INFO] [stderr] Checking dpi v0.1.2 [INFO] [stderr] Checking profiling v1.0.17 [INFO] [stderr] Compiling temp-dir v0.1.16 [INFO] [stderr] Compiling glutin v0.32.3 [INFO] [stderr] Compiling glutin-winit v0.5.0 [INFO] [stderr] Checking png v0.18.1 [INFO] [stderr] Checking openssl-probe v0.2.1 [INFO] [stderr] Checking regex-automata v0.4.14 [INFO] [stderr] Checking ipnet v2.12.0 [INFO] [stderr] Checking rustls-native-certs v0.8.3 [INFO] [stderr] Compiling toml_parser v1.0.9+spec-1.1.0 [INFO] [stderr] Checking glow v0.16.0 [INFO] [stderr] Compiling cmake v0.1.57 [INFO] [stderr] Checking serde_json v1.0.149 [INFO] [stderr] Checking http-body-util v0.1.3 [INFO] [stderr] Compiling toml_edit v0.25.4+spec-1.1.0 [INFO] [stderr] Checking serde_spanned v1.0.4 [INFO] [stderr] Checking unicase v2.9.0 [INFO] [stderr] Checking xdg v3.0.0 [INFO] [stderr] Checking toml_writer v1.0.6+spec-1.1.0 [INFO] [stderr] Compiling zvariant_utils v2.1.0 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling wayland-backend v0.3.14 [INFO] [stderr] Compiling aws-lc-sys v0.38.0 [INFO] [stderr] Compiling gettext-sys v0.26.0 [INFO] [stderr] Compiling proc-macro-crate v3.5.0 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling enumflags2_derive v0.7.12 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling yoke-derive v0.8.1 [INFO] [stderr] Compiling bytemuck_derive v1.10.2 [INFO] [stderr] Compiling futures-macro v0.3.32 [INFO] [stderr] Compiling zerovec-derive v0.11.2 [INFO] [stderr] Compiling zvariant_derive v4.2.0 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling zbus_macros v4.4.0 [INFO] [stderr] Compiling serde_repr v0.1.20 [INFO] [stderr] Compiling async-trait v0.1.89 [INFO] [stderr] Checking futures-util v0.3.32 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Checking moxcms v0.8.1 [INFO] [stderr] Checking regex v1.12.3 [INFO] [stderr] Checking bstr v1.12.1 [INFO] [stderr] Checking bytemuck v1.25.0 [INFO] [stderr] Checking locale_config v0.3.0 [INFO] [stderr] Checking toml v1.0.6+spec-1.1.0 [INFO] [stderr] Checking tiny-skia-path v0.11.4 [INFO] [stderr] Checking emath v0.31.1 [INFO] [stderr] Checking thiserror v1.0.69 [INFO] [stderr] Checking ecolor v0.31.1 [INFO] [stderr] Checking tokio-util v0.7.18 [INFO] [stderr] Checking gettext-rs v0.7.7 [INFO] [stderr] Checking tracing v0.1.44 [INFO] [stderr] Checking epaint v0.31.1 [INFO] [stderr] Checking zerofrom v0.1.6 [INFO] [stderr] Checking yoke v0.8.1 [INFO] [stderr] Checking h2 v0.4.13 [INFO] [stderr] Checking tiny-skia v0.11.4 [INFO] [stderr] Checking thiserror v2.0.18 [INFO] [stderr] Checking freedesktop-desktop-entry v0.8.1 [INFO] [stderr] Checking zerovec v0.11.5 [INFO] [stderr] Checking zerotrie v0.2.3 [INFO] [stderr] Checking polling v3.11.0 [INFO] [stderr] Checking gethostname v1.1.0 [INFO] [stderr] Checking x11rb v0.13.2 [INFO] [stderr] Checking calloop v0.13.0 [INFO] [stderr] Checking calloop v0.14.4 [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 egui v0.31.1 [INFO] [stderr] Checking wayland-csd-frame v0.3.0 [INFO] [stderr] Checking serde v1.0.228 [INFO] [stderr] Checking icu_provider v2.1.1 [INFO] [stderr] Checking tower v0.5.3 [INFO] [stderr] Checking enumflags2 v0.7.12 [INFO] [stderr] Checking quick-xml v0.30.0 [INFO] [stderr] Checking wayland-protocols v0.32.11 [INFO] [stderr] Checking zvariant v4.2.0 [INFO] [stderr] Checking wayland-cursor v0.31.13 [INFO] [stderr] Checking calloop-wayland-source v0.3.0 [INFO] [stderr] Checking icu_properties v2.1.2 [INFO] [stderr] Checking icu_normalizer v2.1.1 [INFO] [stderr] Checking calloop-wayland-source v0.4.1 [INFO] [stderr] Checking image v0.25.10 [INFO] [stderr] Checking tower-http v0.6.8 [INFO] [stderr] Checking idna_adapter v1.2.1 [INFO] [stderr] Checking hyper v1.8.1 [INFO] [stderr] Checking idna v1.1.0 [INFO] [stderr] Checking zbus_names v3.0.0 [INFO] [stderr] Checking url v2.5.8 [INFO] [stderr] Checking egui_glow v0.31.1 [INFO] [stderr] Checking webbrowser v1.2.0 [INFO] [stderr] Checking arboard v3.6.1 [INFO] [stderr] Checking zbus_xml v4.0.0 [INFO] [stderr] Checking zbus v4.4.0 [INFO] [stderr] Checking hyper-util v0.1.20 [INFO] [stderr] Checking zbus-lockstep v0.4.4 [INFO] [stderr] Compiling zbus-lockstep-macros v0.4.4 [INFO] [stderr] Checking wayland-protocols-wlr v0.3.11 [INFO] [stderr] Checking wayland-protocols-plasma v0.3.11 [INFO] [stderr] Checking wayland-protocols-experimental v20250721.0.1 [INFO] [stderr] Checking wayland-protocols-misc v0.3.11 [INFO] [stderr] Checking smithay-client-toolkit v0.20.0 [INFO] [stderr] Checking smithay-clipboard v0.7.3 [INFO] [stderr] Checking atspi-common v0.6.0 [INFO] [stderr] Checking sctk-adwaita v0.10.1 [INFO] [stderr] Checking rustls-webpki v0.103.9 [INFO] [stderr] Checking atspi-proxies v0.6.0 [INFO] [stderr] Checking accesskit_atspi_common v0.10.1 [INFO] [stderr] Checking tokio-rustls v0.26.4 [INFO] [stderr] Checking rustls-platform-verifier v0.6.2 [INFO] [stderr] Checking hyper-rustls v0.27.7 [INFO] [stderr] Checking reqwest v0.13.2 [INFO] [stderr] Checking atspi-connection v0.6.0 [INFO] [stderr] Checking atspi v0.22.0 [INFO] [stderr] Checking accesskit_unix v0.13.1 [INFO] [stderr] Checking accesskit_winit v0.23.1 [INFO] [stderr] Checking egui-winit v0.31.1 [INFO] [stderr] Checking eframe v0.31.1 [INFO] [stderr] Checking bouncer v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: field `desktop_id` is never read [INFO] [stdout] --> src/browser.rs:4:9 [INFO] [stdout] | [INFO] [stdout] 3 | pub struct BrowserEntry { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] 4 | pub desktop_id: String, [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/app.rs:67:17 [INFO] [stdout] | [INFO] [stdout] 67 | / if let Some(&(module_idx, _)) = self.offers.get(idx) { [INFO] [stdout] 68 | | if let Ok(new_url) = self.modules[module_idx].transform(&self.url) { [INFO] [stdout] 69 | | self.push_url(new_url); [INFO] [stdout] 70 | | } [INFO] [stdout] 71 | | } [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] 67 ~ if let Some(&(module_idx, _)) = self.offers.get(idx) [INFO] [stdout] 68 ~ && let Ok(new_url) = self.modules[module_idx].transform(&self.url) { [INFO] [stdout] 69 | self.push_url(new_url); [INFO] [stdout] 70 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/browser.rs:53:5 [INFO] [stdout] | [INFO] [stdout] 53 | browsers.sort_by(|a, b| a.name.to_lowercase().cmp(&b.name.to_lowercase())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] = note: `#[warn(clippy::unnecessary_sort_by)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 53 - browsers.sort_by(|a, b| a.name.to_lowercase().cmp(&b.name.to_lowercase())); [INFO] [stdout] 53 + browsers.sort_by_key(|a| a.name.to_lowercase()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/browser.rs:95:9 [INFO] [stdout] | [INFO] [stdout] 95 | / if c == '%' { [INFO] [stdout] 96 | | if let Some(&next) = chars.peek() { [INFO] [stdout] 97 | | match next { [INFO] [stdout] 98 | | 'i' | 'c' | 'k' | 'd' | 'D' | 'n' | 'N' | 'v' | 'm' => { [INFO] [stdout] ... | [INFO] [stdout] 110 | | } [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] 95 ~ if c == '%' [INFO] [stdout] 96 ~ && let Some(&next) = chars.peek() { [INFO] [stdout] 97 | match next { [INFO] [stdout] ... [INFO] [stdout] 108 | } [INFO] [stdout] 109 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/config.rs:47:17 [INFO] [stdout] | [INFO] [stdout] 47 | / if let Some(parent) = path.parent() { [INFO] [stdout] 48 | | if let Err(e) = std::fs::create_dir_all(parent) { [INFO] [stdout] 49 | | eprintln!("Warning: failed to create config directory {}: {}", parent.display(), e); [INFO] [stdout] 50 | | return Config::default(); [INFO] [stdout] 51 | | } [INFO] [stdout] 52 | | } [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] 47 ~ if let Some(parent) = path.parent() [INFO] [stdout] 48 ~ && let Err(e) = std::fs::create_dir_all(parent) { [INFO] [stdout] 49 | eprintln!("Warning: failed to create config directory {}: {}", parent.display(), e); [INFO] [stdout] 50 | return Config::default(); [INFO] [stdout] 51 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/module/tracking_cleaner/rules.rs:80:25 [INFO] [stdout] | [INFO] [stdout] 80 | .filter_map(|p| compile_provider(p)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `compile_provider` [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/module/tracking_cleaner/rules.rs:111:13 [INFO] [stdout] | [INFO] [stdout] 111 | / if let Some(caps) = redir.captures(&result) { [INFO] [stdout] 112 | | if let Some(target) = caps.get(1) { [INFO] [stdout] 113 | | let decoded = url_decode(target.as_str()); [INFO] [stdout] 114 | | result = decoded; [INFO] [stdout] ... | [INFO] [stdout] 117 | | } [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] 111 ~ if let Some(caps) = redir.captures(&result) [INFO] [stdout] 112 ~ && let Some(target) = caps.get(1) { [INFO] [stdout] 113 | let decoded = url_decode(target.as_str()); [INFO] [stdout] 114 | result = decoded; [INFO] [stdout] 115 | return clean_url(&result, providers); [INFO] [stdout] 116 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: stripping a prefix manually [INFO] [stdout] --> src/module/tracking_cleaner/rules.rs:151:30 [INFO] [stdout] | [INFO] [stdout] 151 | new_url.push_str(&rest[1..]); [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the prefix was tested here [INFO] [stdout] --> src/module/tracking_cleaner/rules.rs:150:9 [INFO] [stdout] | [INFO] [stdout] 150 | if rest.starts_with('&') { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_strip [INFO] [stdout] = note: `#[warn(clippy::manual_strip)]` on by default [INFO] [stdout] help: try using the `strip_prefix` method [INFO] [stdout] | [INFO] [stdout] 150 ~ if let Some() = rest.strip_prefix('&') { [INFO] [stdout] 151 ~ new_url.push_str(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/module/tracking_cleaner/rules.rs:167:9 [INFO] [stdout] | [INFO] [stdout] 167 | / if bytes[i] == b'%' && i + 2 < bytes.len() { [INFO] [stdout] 168 | | if let Ok(hex) = u8::from_str_radix( [INFO] [stdout] 169 | | std::str::from_utf8(&bytes[i + 1..i + 3]).unwrap_or(""), [INFO] [stdout] 170 | | 16, [INFO] [stdout] ... | [INFO] [stdout] 176 | | } [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] 167 ~ if bytes[i] == b'%' && i + 2 < bytes.len() [INFO] [stdout] 168 ~ && let Ok(hex) = u8::from_str_radix( [INFO] [stdout] 169 | std::str::from_utf8(&bytes[i + 1..i + 3]).unwrap_or(""), [INFO] [stdout] ... [INFO] [stdout] 174 | continue; [INFO] [stdout] 175 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/module/unshorten.rs:19:9 [INFO] [stdout] | [INFO] [stdout] 19 | / if let Ok(parsed) = url::Url::parse(url) { [INFO] [stdout] 20 | | if let Some(host) = parsed.host_str() { [INFO] [stdout] 21 | | return SHORT_DOMAINS.iter().any(|d| host == *d); [INFO] [stdout] 22 | | } [INFO] [stdout] 23 | | } [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] 19 ~ if let Ok(parsed) = url::Url::parse(url) [INFO] [stdout] 20 ~ && let Some(host) = parsed.host_str() { [INFO] [stdout] 21 | return SHORT_DOMAINS.iter().any(|d| host == *d); [INFO] [stdout] 22 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `contains()` instead of `iter().any()` is more efficient [INFO] [stdout] --> src/module/unshorten.rs:21:24 [INFO] [stdout] | [INFO] [stdout] 21 | return SHORT_DOMAINS.iter().any(|d| host == *d); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `SHORT_DOMAINS.contains(&host)` [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: field `desktop_id` is never read [INFO] [stdout] --> src/browser.rs:4:9 [INFO] [stdout] | [INFO] [stdout] 3 | pub struct BrowserEntry { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] 4 | pub desktop_id: String, [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/app.rs:67:17 [INFO] [stdout] | [INFO] [stdout] 67 | / if let Some(&(module_idx, _)) = self.offers.get(idx) { [INFO] [stdout] 68 | | if let Ok(new_url) = self.modules[module_idx].transform(&self.url) { [INFO] [stdout] 69 | | self.push_url(new_url); [INFO] [stdout] 70 | | } [INFO] [stdout] 71 | | } [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] 67 ~ if let Some(&(module_idx, _)) = self.offers.get(idx) [INFO] [stdout] 68 ~ && let Ok(new_url) = self.modules[module_idx].transform(&self.url) { [INFO] [stdout] 69 | self.push_url(new_url); [INFO] [stdout] 70 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/browser.rs:53:5 [INFO] [stdout] | [INFO] [stdout] 53 | browsers.sort_by(|a, b| a.name.to_lowercase().cmp(&b.name.to_lowercase())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] = note: `#[warn(clippy::unnecessary_sort_by)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 53 - browsers.sort_by(|a, b| a.name.to_lowercase().cmp(&b.name.to_lowercase())); [INFO] [stdout] 53 + browsers.sort_by_key(|a| a.name.to_lowercase()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/browser.rs:95:9 [INFO] [stdout] | [INFO] [stdout] 95 | / if c == '%' { [INFO] [stdout] 96 | | if let Some(&next) = chars.peek() { [INFO] [stdout] 97 | | match next { [INFO] [stdout] 98 | | 'i' | 'c' | 'k' | 'd' | 'D' | 'n' | 'N' | 'v' | 'm' => { [INFO] [stdout] ... | [INFO] [stdout] 110 | | } [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] 95 ~ if c == '%' [INFO] [stdout] 96 ~ && let Some(&next) = chars.peek() { [INFO] [stdout] 97 | match next { [INFO] [stdout] ... [INFO] [stdout] 108 | } [INFO] [stdout] 109 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/config.rs:47:17 [INFO] [stdout] | [INFO] [stdout] 47 | / if let Some(parent) = path.parent() { [INFO] [stdout] 48 | | if let Err(e) = std::fs::create_dir_all(parent) { [INFO] [stdout] 49 | | eprintln!("Warning: failed to create config directory {}: {}", parent.display(), e); [INFO] [stdout] 50 | | return Config::default(); [INFO] [stdout] 51 | | } [INFO] [stdout] 52 | | } [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] 47 ~ if let Some(parent) = path.parent() [INFO] [stdout] 48 ~ && let Err(e) = std::fs::create_dir_all(parent) { [INFO] [stdout] 49 | eprintln!("Warning: failed to create config directory {}: {}", parent.display(), e); [INFO] [stdout] 50 | return Config::default(); [INFO] [stdout] 51 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/module/tracking_cleaner/rules.rs:80:25 [INFO] [stdout] | [INFO] [stdout] 80 | .filter_map(|p| compile_provider(p)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `compile_provider` [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/module/tracking_cleaner/rules.rs:111:13 [INFO] [stdout] | [INFO] [stdout] 111 | / if let Some(caps) = redir.captures(&result) { [INFO] [stdout] 112 | | if let Some(target) = caps.get(1) { [INFO] [stdout] 113 | | let decoded = url_decode(target.as_str()); [INFO] [stdout] 114 | | result = decoded; [INFO] [stdout] ... | [INFO] [stdout] 117 | | } [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] 111 ~ if let Some(caps) = redir.captures(&result) [INFO] [stdout] 112 ~ && let Some(target) = caps.get(1) { [INFO] [stdout] 113 | let decoded = url_decode(target.as_str()); [INFO] [stdout] 114 | result = decoded; [INFO] [stdout] 115 | return clean_url(&result, providers); [INFO] [stdout] 116 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: stripping a prefix manually [INFO] [stdout] --> src/module/tracking_cleaner/rules.rs:151:30 [INFO] [stdout] | [INFO] [stdout] 151 | new_url.push_str(&rest[1..]); [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the prefix was tested here [INFO] [stdout] --> src/module/tracking_cleaner/rules.rs:150:9 [INFO] [stdout] | [INFO] [stdout] 150 | if rest.starts_with('&') { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_strip [INFO] [stdout] = note: `#[warn(clippy::manual_strip)]` on by default [INFO] [stdout] help: try using the `strip_prefix` method [INFO] [stdout] | [INFO] [stdout] 150 ~ if let Some() = rest.strip_prefix('&') { [INFO] [stdout] 151 ~ new_url.push_str(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/module/tracking_cleaner/rules.rs:167:9 [INFO] [stdout] | [INFO] [stdout] 167 | / if bytes[i] == b'%' && i + 2 < bytes.len() { [INFO] [stdout] 168 | | if let Ok(hex) = u8::from_str_radix( [INFO] [stdout] 169 | | std::str::from_utf8(&bytes[i + 1..i + 3]).unwrap_or(""), [INFO] [stdout] 170 | | 16, [INFO] [stdout] ... | [INFO] [stdout] 176 | | } [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] 167 ~ if bytes[i] == b'%' && i + 2 < bytes.len() [INFO] [stdout] 168 ~ && let Ok(hex) = u8::from_str_radix( [INFO] [stdout] 169 | std::str::from_utf8(&bytes[i + 1..i + 3]).unwrap_or(""), [INFO] [stdout] ... [INFO] [stdout] 174 | continue; [INFO] [stdout] 175 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/module/unshorten.rs:19:9 [INFO] [stdout] | [INFO] [stdout] 19 | / if let Ok(parsed) = url::Url::parse(url) { [INFO] [stdout] 20 | | if let Some(host) = parsed.host_str() { [INFO] [stdout] 21 | | return SHORT_DOMAINS.iter().any(|d| host == *d); [INFO] [stdout] 22 | | } [INFO] [stdout] 23 | | } [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] 19 ~ if let Ok(parsed) = url::Url::parse(url) [INFO] [stdout] 20 ~ && let Some(host) = parsed.host_str() { [INFO] [stdout] 21 | return SHORT_DOMAINS.iter().any(|d| host == *d); [INFO] [stdout] 22 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `contains()` instead of `iter().any()` is more efficient [INFO] [stdout] --> src/module/unshorten.rs:21:24 [INFO] [stdout] | [INFO] [stdout] 21 | return SHORT_DOMAINS.iter().any(|d| host == *d); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `SHORT_DOMAINS.contains(&host)` [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] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 44s [INFO] running `Command { std: "docker" "inspect" "1ee539836f8d631ed37d4f44de2ed3652f4729a521af7e6d251c184278461354", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "1ee539836f8d631ed37d4f44de2ed3652f4729a521af7e6d251c184278461354", kill_on_drop: false }` [INFO] [stdout] 1ee539836f8d631ed37d4f44de2ed3652f4729a521af7e6d251c184278461354