[INFO] cloning repository https://github.com/cecilia-sanare/protontweaks [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/cecilia-sanare/protontweaks" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcecilia-sanare%2Fprotontweaks", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcecilia-sanare%2Fprotontweaks'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 2adf239575a7fb93f1c3dd70dfa1bf13c5b9a378 [INFO] linting cecilia-sanare/protontweaks against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcecilia-sanare%2Fprotontweaks" "/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/cecilia-sanare/protontweaks [INFO] finished tweaking git repo https://github.com/cecilia-sanare/protontweaks [INFO] tweaked toml for git repo https://github.com/cecilia-sanare/protontweaks written to /workspace/builds/worker-0-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/cecilia-sanare/protontweaks 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/cecilia-sanare/protontweaks 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] Blocking waiting for file lock on package cache [INFO] [stderr] Updating crates.io index [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded tokio-macros v2.4.0 [INFO] [stderr] Downloaded unicode-ident v1.0.13 [INFO] [stderr] Downloaded quote v1.0.37 [INFO] [stderr] Downloaded num_cpus v1.16.0 [INFO] [stderr] Downloaded gl_generator v0.14.0 [INFO] [stderr] Downloaded windows-targets v0.48.5 [INFO] [stderr] Downloaded sync_wrapper v0.1.2 [INFO] [stderr] Downloaded clap_lex v0.7.2 [INFO] [stderr] Downloaded hermit-abi v0.4.0 [INFO] [stderr] Downloaded async-channel v2.3.1 [INFO] [stderr] Downloaded event-listener-strategy v0.5.2 [INFO] [stderr] Downloaded native-tls v0.2.12 [INFO] [stderr] Downloaded blocking v1.6.1 [INFO] [stderr] Downloaded polling v3.7.4 [INFO] [stderr] Downloaded pest_meta v2.7.14 [INFO] [stderr] Downloaded async-io v2.4.0 [INFO] [stderr] Downloaded base64 v0.21.7 [INFO] [stderr] Downloaded mio v0.8.11 [INFO] [stderr] Downloaded pest v2.7.14 [INFO] [stderr] Downloaded wgpu-hal v0.19.5 [INFO] [stderr] Downloaded clap_builder v4.5.20 [INFO] [stderr] Downloaded cli_prompts_rs v0.3.0 [INFO] [stderr] Downloaded object v0.36.5 [INFO] [stderr] Downloaded chrono v0.4.38 [INFO] [stderr] Downloaded wgpu-core v0.19.4 [INFO] [stderr] Downloaded bstr v1.10.0 [INFO] [stderr] Downloaded openssl v0.10.68 [INFO] [stderr] Downloaded rustix v0.38.39 [INFO] [stderr] Downloaded icu_properties_data v1.5.0 [INFO] [stderr] Downloaded hyper v0.14.31 [INFO] [stderr] Downloaded ndk-sys v0.5.0+25.2.9519653 [INFO] [stderr] Downloaded windows_aarch64_gnullvm v0.48.5 [INFO] [stderr] Downloaded windows_x86_64_gnullvm v0.48.5 [INFO] [stderr] Downloaded reqwest v0.11.27 [INFO] [stderr] Downloaded naga v0.19.2 [INFO] [stderr] Downloaded ash v0.37.3+1.3.251 [INFO] [stderr] Downloaded glow v0.13.1 [INFO] [stderr] Downloaded web-sys v0.3.72 [INFO] [stderr] Downloaded regex-automata v0.4.8 [INFO] [stderr] Downloaded tokio-util v0.7.12 [INFO] [stderr] Downloaded crossbeam-channel v0.5.13 [INFO] [stderr] Downloaded openssl-sys v0.9.104 [INFO] [stderr] Downloaded icu_normalizer_data v1.5.0 [INFO] [stderr] Downloaded url v2.5.3 [INFO] [stderr] Downloaded syn v2.0.87 [INFO] [stderr] Downloaded windows_aarch64_msvc v0.48.5 [INFO] [stderr] Downloaded tokio v1.41.1 [INFO] [stderr] Downloaded libc v0.2.162 [INFO] [stderr] Downloaded windows_i686_msvc v0.48.5 [INFO] [stderr] Downloaded tracing-core v0.1.32 [INFO] [stderr] Downloaded tracing v0.1.40 [INFO] [stderr] Downloaded icu_locid_transform_data v1.5.0 [INFO] [stderr] Downloaded async-signal v0.2.10 [INFO] [stderr] Downloaded async-task v4.7.1 [INFO] [stderr] Downloaded event-listener v5.3.1 [INFO] [stderr] Downloaded clap_derive v4.5.18 [INFO] [stderr] Downloaded clap v4.5.20 [INFO] [stderr] Downloaded encode_unicode v0.3.6 [INFO] [stderr] Downloaded console v0.15.8 [INFO] [stderr] Downloaded pest_derive v2.7.14 [INFO] [stderr] Downloaded keyvalues-serde v0.2.1 [INFO] [stderr] Downloaded notify v6.1.1 [INFO] [stderr] Downloaded httparse v1.9.5 [INFO] [stderr] Downloaded schannel v0.1.26 [INFO] [stderr] Downloaded windows_x86_64_gnu v0.48.5 [INFO] [stderr] Downloaded zerocopy v0.7.35 [INFO] [stderr] Downloaded quick-xml v0.32.0 [INFO] [stderr] Downloaded futures-lite v2.5.0 [INFO] [stderr] Downloaded async-process v2.3.0 [INFO] [stderr] Downloaded iana-time-zone v0.1.61 [INFO] [stderr] Downloaded anstyle-wincon v3.0.6 [INFO] [stderr] Downloaded colored v2.1.0 [INFO] [stderr] Downloaded pest_generator v2.7.14 [INFO] [stderr] Downloaded keyvalues-parser v0.2.0 [INFO] [stderr] Downloaded windows-sys v0.48.0 [INFO] [stderr] Downloaded inotify v0.9.6 [INFO] [stderr] Downloaded windows_x86_64_msvc v0.48.5 [INFO] [stderr] Downloaded windows_i686_gnu v0.48.5 [INFO] [stderr] Downloaded tempfile v3.14.0 [INFO] [stderr] Downloaded notify-debouncer-full v0.3.2 [INFO] [stderr] Downloaded os_info v3.8.2 [INFO] [stderr] Downloaded owo-colors v4.1.0 [INFO] [stderr] Downloaded ipnet v2.10.1 [INFO] [stderr] Downloaded rustls-pemfile v1.0.4 [INFO] [stderr] Downloaded security-framework-sys v2.12.1 [INFO] [stderr] Downloaded litemap v0.7.3 [INFO] [stderr] Downloaded yoke v0.7.4 [INFO] [stderr] Downloaded winreg v0.50.0 [INFO] [stderr] Downloaded windows-core v0.52.0 [INFO] [stderr] Downloaded gpu-allocator v0.25.0 [INFO] [stderr] Downloaded wgpu v0.19.4 [INFO] [stderr] Downloaded serde_json v1.0.132 [INFO] [stderr] Downloaded hashbrown v0.15.1 [INFO] [stderr] Downloaded libloading v0.7.4 [INFO] [stderr] Downloaded time v0.3.36 [INFO] [stderr] Downloaded piper v0.2.4 [INFO] [stderr] Downloaded supports-unicode v2.1.0 [INFO] [stderr] Downloaded kqueue v1.0.8 [INFO] [stderr] Downloaded wasm-bindgen-futures v0.4.45 [INFO] [stderr] Downloaded bumpalo v3.16.0 [INFO] [stderr] Downloaded linux-raw-sys v0.4.14 [INFO] [stderr] Downloaded plist v1.7.0 [INFO] [stderr] Downloaded mio v1.0.2 [INFO] [stderr] Downloaded file-id v0.2.2 [INFO] [stderr] Downloaded widestring v1.1.0 [INFO] [stderr] Downloaded cc v1.1.37 [INFO] [stderr] Downloaded indexmap v2.6.0 [INFO] [stderr] Downloaded serde_derive v1.0.214 [INFO] [stderr] Downloaded serde v1.0.214 [INFO] [stderr] Downloaded wgpu-types v0.19.2 [INFO] [stderr] Downloaded ignore v0.4.23 [INFO] [stderr] Downloaded xml-rs v0.8.23 [INFO] [stderr] Downloaded miniz_oxide v0.8.0 [INFO] [stderr] Downloaded bytes v1.8.0 [INFO] [stderr] Downloaded fsevent-sys v4.1.0 [INFO] [stderr] Downloaded kqueue-sys v1.0.4 [INFO] [stderr] Downloaded is-terminal v0.4.13 [INFO] [stderr] Downloaded pretty_env_logger v0.5.0 [INFO] [stderr] Downloaded system-configuration v0.5.1 [INFO] [stderr] Downloaded zerocopy-derive v0.7.35 [INFO] [stderr] Downloaded ahash v0.8.11 [INFO] [stderr] Downloaded allocator-api2 v0.2.19 [INFO] [stderr] Downloaded hassle-rs v0.11.0 [INFO] [stderr] Downloaded parking_lot_core v0.9.10 [INFO] [stderr] Downloaded smallvec v1.13.2 [INFO] [stderr] Downloaded js-sys v0.3.72 [INFO] [stderr] Downloaded ryu v1.0.18 [INFO] [stderr] Downloaded once_cell v1.20.2 [INFO] [stderr] Downloaded bitflags v2.6.0 [INFO] [stderr] Downloaded typenum v1.17.0 [INFO] [stderr] Downloaded proc-macro2 v1.0.89 [INFO] [stderr] Downloaded system-configuration-sys v0.5.0 [INFO] [stderr] Downloaded fastrand v2.2.0 [INFO] [stderr] Downloaded yoke-derive v0.7.4 [INFO] [stderr] Downloaded zerofrom-derive v0.1.4 [INFO] [stderr] Downloaded zerofrom v0.1.4 [INFO] [stderr] Downloaded cfg_aliases v0.1.1 [INFO] [stderr] Downloaded glutin_wgl_sys v0.5.0 [INFO] [stderr] Downloaded gpu-alloc-types v0.3.0 [INFO] [stderr] Downloaded com_macros_support v0.6.0 [INFO] [stderr] Downloaded libloading v0.8.5 [INFO] [stderr] Downloaded spirv v0.3.0+sdk-1.3.268.0 [INFO] [stderr] Downloaded lock_api v0.4.12 [INFO] [stderr] Downloaded parking_lot v0.12.3 [INFO] [stderr] Downloaded range-alloc v0.1.3 [INFO] [stderr] Downloaded raw-window-handle v0.6.2 [INFO] [stderr] Downloaded wasm-bindgen-backend v0.2.95 [INFO] [stderr] Downloaded wasm-bindgen-macro v0.2.95 [INFO] [stderr] Downloaded wasm-bindgen v0.2.95 [INFO] [stderr] Downloaded protontweaks-api v0.4.2 [INFO] [stderr] Downloaded crossbeam-utils v0.8.20 [INFO] [stderr] Downloaded globset v0.4.15 [INFO] [stderr] Downloaded log v0.4.22 [INFO] [stderr] Downloaded metal v0.27.0 [INFO] [stderr] Downloaded thiserror-impl v1.0.68 [INFO] [stderr] Downloaded thiserror v1.0.68 [INFO] [stderr] Downloaded deranged v0.3.11 [INFO] [stderr] Downloaded time-macros v0.2.18 [INFO] [stderr] Downloaded either v1.13.0 [INFO] [stderr] Downloaded service-manager v0.6.2 [INFO] [stderr] Downloaded async-trait v0.1.83 [INFO] [stderr] Downloaded sha2 v0.10.8 [INFO] [stderr] Downloaded sha256 v1.5.0 [INFO] [stderr] Downloaded socket2 v0.5.7 [INFO] [stderr] Downloaded d3d12 v0.19.0 [INFO] [stderr] Downloaded presser v0.3.1 [INFO] [stderr] Downloaded gpu-descriptor-types v0.1.2 [INFO] [stderr] Downloaded gpu-descriptor v0.2.4 [INFO] [stderr] Downloaded com_macros v0.6.0 [INFO] [stderr] Downloaded com v0.6.0 [INFO] [stderr] Downloaded pkg-config v0.3.31 [INFO] [stderr] Downloaded khronos-egl v6.0.0 [INFO] [stderr] Downloaded core-graphics-types v0.1.3 [INFO] [stderr] Downloaded foreign-types-macros v0.2.3 [INFO] [stderr] Downloaded foreign-types-shared v0.3.1 [INFO] [stderr] Downloaded foreign-types v0.5.0 [INFO] [stderr] Downloaded hexf-parse v0.2.1 [INFO] [stderr] Downloaded objc_exception v0.1.2 [INFO] [stderr] Downloaded profiling v1.0.16 [INFO] [stderr] Downloaded renderdoc-sys v1.1.0 [INFO] [stderr] Downloaded wasm-bindgen-shared v0.2.95 [INFO] [stderr] Downloaded crossbeam-deque v0.8.5 [INFO] [stderr] Downloaded redox_syscall v0.5.7 [INFO] [stderr] Downloaded errno v0.3.9 [INFO] [stderr] Downloaded cpufeatures v0.2.14 [INFO] [stderr] Downloaded hermit-abi v0.3.9 [INFO] [stderr] Downloaded pin-project-lite v0.2.15 [INFO] [stderr] Downloaded gpu-alloc v0.6.0 [INFO] [stderr] Downloaded wasm-bindgen-macro-support v0.2.95 [INFO] [stderr] Downloaded libredox v0.1.3 [INFO] [stderr] Downloaded itoa v1.0.11 [INFO] [stderr] Downloaded time-core v0.1.2 [INFO] [stderr] Downloaded home v0.5.9 [INFO] [stderr] Downloaded rust_search v2.1.0 [INFO] [stderr] Downloaded equivalent v1.0.1 [INFO] [stderr] Downloaded windows v0.52.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] 123f6d2ededee508bfa73e8efbb715eb688608e176fa7870bc6594fc939b3c27 [INFO] running `Command { std: "docker" "start" "-a" "123f6d2ededee508bfa73e8efbb715eb688608e176fa7870bc6594fc939b3c27", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "123f6d2ededee508bfa73e8efbb715eb688608e176fa7870bc6594fc939b3c27", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "123f6d2ededee508bfa73e8efbb715eb688608e176fa7870bc6594fc939b3c27", kill_on_drop: false }` [INFO] [stdout] 123f6d2ededee508bfa73e8efbb715eb688608e176fa7870bc6594fc939b3c27 [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] 0d247d2222488477d340a2175900bb8439c2e4a8ee9ac548fb79fc9dd371b98d [INFO] running `Command { std: "docker" "start" "-a" "0d247d2222488477d340a2175900bb8439c2e4a8ee9ac548fb79fc9dd371b98d", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.89 [INFO] [stderr] Compiling unicode-ident v1.0.13 [INFO] [stderr] Compiling libc v0.2.162 [INFO] [stderr] Compiling autocfg v1.4.0 [INFO] [stderr] Checking memchr v2.7.4 [INFO] [stderr] Checking bitflags v2.6.0 [INFO] [stderr] Checking pin-project-lite v0.2.15 [INFO] [stderr] Checking once_cell v1.20.2 [INFO] [stderr] Checking log v0.4.22 [INFO] [stderr] Compiling crossbeam-utils v0.8.20 [INFO] [stderr] Compiling version_check v0.9.5 [INFO] [stderr] Compiling thiserror v1.0.68 [INFO] [stderr] Checking futures-core v0.3.31 [INFO] [stderr] Checking stable_deref_trait v1.2.0 [INFO] [stderr] Checking hashbrown v0.15.1 [INFO] [stderr] Checking smallvec v1.13.2 [INFO] [stderr] Compiling shlex v1.3.0 [INFO] [stderr] Checking futures-io v0.3.31 [INFO] [stderr] Checking itoa v1.0.11 [INFO] [stderr] Checking equivalent v1.0.1 [INFO] [stderr] Compiling pkg-config v0.3.31 [INFO] [stderr] Compiling cc v1.1.37 [INFO] [stderr] Compiling vcpkg v0.2.15 [INFO] [stderr] Checking bytes v1.8.0 [INFO] [stderr] Checking tracing-core v0.1.32 [INFO] [stderr] Checking futures-sink v0.3.31 [INFO] [stderr] Checking litemap v0.7.3 [INFO] [stderr] Compiling serde v1.0.214 [INFO] [stderr] Compiling cfg_aliases v0.1.1 [INFO] [stderr] Checking writeable v0.5.5 [INFO] [stderr] Compiling slab v0.4.9 [INFO] [stderr] Checking futures-channel v0.3.31 [INFO] [stderr] Compiling lock_api v0.4.12 [INFO] [stderr] Compiling ahash v0.8.11 [INFO] [stderr] Checking parking v2.2.1 [INFO] [stderr] Compiling typenum v1.17.0 [INFO] [stderr] Compiling rustix v0.38.39 [INFO] [stderr] Checking unicode-width v0.1.14 [INFO] [stderr] Compiling parking_lot_core v0.9.10 [INFO] [stderr] Checking termcolor v1.4.1 [INFO] [stderr] Checking futures-task v0.3.31 [INFO] [stderr] Checking icu_locid_transform_data v1.5.0 [INFO] [stderr] Checking indexmap v2.6.0 [INFO] [stderr] Checking concurrent-queue v2.5.0 [INFO] [stderr] Checking aho-corasick v1.1.3 [INFO] [stderr] Checking tracing v0.1.40 [INFO] [stderr] Compiling quote v1.0.37 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling generic-array v0.14.7 [INFO] [stderr] Checking icu_properties_data v1.5.0 [INFO] [stderr] Compiling openssl v0.10.68 [INFO] [stderr] Checking regex-syntax v0.8.5 [INFO] [stderr] Checking scopeguard v1.2.0 [INFO] [stderr] Checking linux-raw-sys v0.4.14 [INFO] [stderr] Checking zerocopy v0.7.35 [INFO] [stderr] Checking http v0.2.12 [INFO] [stderr] Checking socket2 v0.5.7 [INFO] [stderr] Checking mio v1.0.2 [INFO] [stderr] Compiling syn v2.0.87 [INFO] [stderr] Checking event-listener v5.3.1 [INFO] [stderr] Compiling khronos-egl v6.0.0 [INFO] [stderr] Checking utf8_iter v1.0.4 [INFO] [stderr] Checking bit-vec v0.6.3 [INFO] [stderr] Checking utf16_iter v1.0.5 [INFO] [stderr] Compiling httparse v1.9.5 [INFO] [stderr] Compiling ash v0.37.3+1.3.251 [INFO] [stderr] Checking icu_normalizer_data v1.5.0 [INFO] [stderr] Compiling native-tls v0.2.12 [INFO] [stderr] Compiling ucd-trie v0.1.7 [INFO] [stderr] Checking write16 v1.0.0 [INFO] [stderr] Checking allocator-api2 v0.2.19 [INFO] [stderr] Checking event-listener-strategy v0.5.2 [INFO] [stderr] Checking parking_lot v0.12.3 [INFO] [stderr] Checking bit-set v0.5.3 [INFO] [stderr] Checking codespan-reporting v0.11.1 [INFO] [stderr] Compiling wgpu-hal v0.19.5 [INFO] [stderr] Checking gpu-descriptor-types v0.1.2 [INFO] [stderr] Checking gpu-alloc-types v0.3.0 [INFO] [stderr] Checking spirv v0.3.0+sdk-1.3.268.0 [INFO] [stderr] Checking libloading v0.8.5 [INFO] [stderr] Checking libloading v0.7.4 [INFO] [stderr] Checking hexf-parse v0.2.1 [INFO] [stderr] Checking unicode-xid v0.2.6 [INFO] [stderr] Checking same-file v1.0.6 [INFO] [stderr] Checking try-lock v0.2.5 [INFO] [stderr] Checking rustc-hash v1.1.0 [INFO] [stderr] Checking hashbrown v0.14.5 [INFO] [stderr] Checking percent-encoding v2.3.1 [INFO] [stderr] Checking openssl-probe v0.1.5 [INFO] [stderr] Checking want v0.3.1 [INFO] [stderr] Checking form_urlencoded v1.2.1 [INFO] [stderr] Checking walkdir v2.5.0 [INFO] [stderr] Checking gpu-alloc v0.6.0 [INFO] [stderr] Checking http-body v0.4.6 [INFO] [stderr] Checking is-terminal v0.4.13 [INFO] [stderr] Compiling wgpu-core v0.19.4 [INFO] [stderr] Checking wgpu-types v0.19.2 [INFO] [stderr] Compiling openssl-sys v0.9.104 [INFO] [stderr] Checking tower-service v0.3.3 [INFO] [stderr] Checking raw-window-handle v0.6.2 [INFO] [stderr] Checking arrayvec v0.7.6 [INFO] [stderr] Checking profiling v1.0.16 [INFO] [stderr] Checking utf8parse v0.2.2 [INFO] [stderr] Checking glow v0.13.1 [INFO] [stderr] Checking fastrand v2.2.0 [INFO] [stderr] Compiling serde_json v1.0.132 [INFO] [stderr] Checking httpdate v1.0.3 [INFO] [stderr] Checking ryu v1.0.18 [INFO] [stderr] Checking renderdoc-sys v1.1.0 [INFO] [stderr] Checking powerfmt v0.2.0 [INFO] [stderr] Checking anstyle-parse v0.2.6 [INFO] [stderr] Checking block-buffer v0.10.4 [INFO] [stderr] Checking crypto-common v0.1.6 [INFO] [stderr] Checking regex-automata v0.4.8 [INFO] [stderr] Checking futures-lite v2.5.0 [INFO] [stderr] Checking async-lock v3.4.0 [INFO] [stderr] Checking inotify-sys v0.1.5 [INFO] [stderr] Checking dirs-sys v0.3.7 [INFO] [stderr] Checking crossbeam-epoch v0.9.18 [INFO] [stderr] Checking bstr v1.10.0 [INFO] [stderr] Checking deranged v0.3.11 [INFO] [stderr] Compiling wgpu v0.19.4 [INFO] [stderr] Checking gpu-descriptor v0.2.4 [INFO] [stderr] Compiling iana-time-zone v0.1.61 [INFO] [stderr] Checking anstyle-query v1.1.2 [INFO] [stderr] Checking base64 v0.21.7 [INFO] [stderr] Checking is_terminal_polyfill v1.70.1 [INFO] [stderr] Checking time-core v0.1.2 [INFO] [stderr] Checking anstyle v1.0.10 [INFO] [stderr] Checking lazy_static v1.5.0 [INFO] [stderr] Checking num-conv v0.1.0 [INFO] [stderr] Checking colorchoice v1.0.3 [INFO] [stderr] Checking bitflags v1.3.2 [INFO] [stderr] Checking anstream v0.6.18 [INFO] [stderr] Checking inotify v0.9.6 [INFO] [stderr] Checking rustls-pemfile v1.0.4 [INFO] [stderr] Compiling chrono v0.4.38 [INFO] [stderr] Checking dirs v4.0.0 [INFO] [stderr] Checking crossbeam-deque v0.8.5 [INFO] [stderr] Checking digest v0.10.7 [INFO] [stderr] Checking signal-hook-registry v1.4.2 [INFO] [stderr] Checking filetime v0.2.25 [INFO] [stderr] Checking mio v0.8.11 [INFO] [stderr] Checking crossbeam-channel v0.5.13 [INFO] [stderr] Checking quick-xml v0.32.0 [INFO] [stderr] Checking encoding_rs v0.8.35 [INFO] [stderr] Checking either v1.13.0 [INFO] [stderr] Compiling owo-colors v4.1.0 [INFO] [stderr] Checking clap_lex v0.7.2 [INFO] [stderr] Checking cpufeatures v0.2.14 [INFO] [stderr] Checking strsim v0.11.1 [INFO] [stderr] Checking mime v0.3.17 [INFO] [stderr] Checking base64 v0.22.1 [INFO] [stderr] Checking static_assertions v1.1.0 [INFO] [stderr] Checking ipnet v2.10.1 [INFO] [stderr] Checking sync_wrapper v0.1.2 [INFO] [stderr] Compiling heck v0.5.0 [INFO] [stderr] Checking humantime v2.1.0 [INFO] [stderr] Checking home v0.5.9 [INFO] [stderr] Checking notify v6.1.1 [INFO] [stderr] Checking sha2 v0.10.8 [INFO] [stderr] Checking colored v2.1.0 [INFO] [stderr] Checking clap_builder v4.5.20 [INFO] [stderr] Checking console v0.15.8 [INFO] [stderr] Checking supports-unicode v2.1.0 [INFO] [stderr] Checking async-channel v2.3.1 [INFO] [stderr] Checking num_cpus v1.16.0 [INFO] [stderr] Checking xml-rs v0.8.23 [INFO] [stderr] Checking strsim v0.10.0 [INFO] [stderr] Checking time v0.3.36 [INFO] [stderr] Checking hex v0.4.3 [INFO] [stderr] Checking file-id v0.2.2 [INFO] [stderr] Checking async-task v4.7.1 [INFO] [stderr] Checking cli_prompts_rs v0.3.0 [INFO] [stderr] Checking notify-debouncer-full v0.3.2 [INFO] [stderr] Compiling protontweaks v0.8.2 (/opt/rustwide/workdir) [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> build.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 18 | "https://api.protontweaks.com/v4" [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stdout] = note: `#[warn(clippy::print_literal)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 17 - "cargo:rustc-env=PROTONTWEAKS_API={}", [INFO] [stdout] 18 - "https://api.protontweaks.com/v4" [INFO] [stdout] 17 + "cargo:rustc-env=PROTONTWEAKS_API=https://api.protontweaks.com/v4" [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking polling v3.7.4 [INFO] [stderr] Checking which v4.4.2 [INFO] [stderr] Checking async-io v2.4.0 [INFO] [stderr] Checking regex v1.11.1 [INFO] [stderr] Checking globset v0.4.15 [INFO] [stderr] Checking ignore v0.4.23 [INFO] [stderr] Checking env_logger v0.10.2 [INFO] [stderr] Checking async-signal v0.2.10 [INFO] [stderr] Checking async-process v2.3.0 [INFO] [stderr] Checking rust_search v2.1.0 [INFO] [stderr] Checking pretty_env_logger v0.5.0 [INFO] [stderr] Compiling synstructure v0.13.1 [INFO] [stderr] Compiling zerofrom-derive v0.1.4 [INFO] [stderr] Compiling yoke-derive v0.7.4 [INFO] [stderr] Compiling thiserror-impl v1.0.68 [INFO] [stderr] Compiling zerovec-derive v0.10.3 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling tokio-macros v2.4.0 [INFO] [stderr] Compiling icu_provider_macros v1.5.0 [INFO] [stderr] Compiling serde_derive v1.0.214 [INFO] [stderr] Compiling futures-macro v0.3.31 [INFO] [stderr] Compiling openssl-macros v0.1.1 [INFO] [stderr] Compiling async-trait v0.1.83 [INFO] [stderr] Compiling clap_derive v4.5.18 [INFO] [stderr] Checking tokio v1.41.1 [INFO] [stderr] Checking futures-util v0.3.31 [INFO] [stderr] Compiling pest v2.7.14 [INFO] [stderr] Checking zerofrom v0.1.4 [INFO] [stderr] Checking naga v0.19.2 [INFO] [stderr] Checking yoke v0.7.4 [INFO] [stderr] Checking zerovec v0.10.4 [INFO] [stderr] Checking clap v4.5.20 [INFO] [stderr] Compiling pest_meta v2.7.14 [INFO] [stderr] Checking tinystr v0.7.6 [INFO] [stderr] Checking icu_collections v1.5.0 [INFO] [stderr] Checking icu_locid v1.5.0 [INFO] [stderr] Compiling pest_generator v2.7.14 [INFO] [stderr] Checking icu_provider v1.5.0 [INFO] [stderr] Checking icu_locid_transform v1.5.0 [INFO] [stderr] Compiling pest_derive v2.7.14 [INFO] [stderr] Checking futures-executor v0.3.31 [INFO] [stderr] Checking serde_urlencoded v0.7.1 [INFO] [stderr] Checking plist v1.7.0 [INFO] [stderr] Checking os_info v3.8.2 [INFO] [stderr] Checking futures v0.3.31 [INFO] [stderr] Checking keyvalues-parser v0.2.0 [INFO] [stderr] Checking keyvalues-serde v0.2.1 [INFO] [stderr] Checking icu_properties v1.5.1 [INFO] [stderr] Checking tokio-util v0.7.12 [INFO] [stderr] Checking tokio-native-tls v0.3.1 [INFO] [stderr] Checking sha256 v1.5.0 [INFO] [stderr] Checking service-manager v0.6.2 [INFO] [stderr] Checking h2 v0.3.26 [INFO] [stderr] Checking icu_normalizer v1.5.0 [INFO] [stderr] Checking idna_adapter v1.2.0 [INFO] [stderr] Checking idna v1.0.3 [INFO] [stderr] Checking url v2.5.3 [INFO] [stderr] Checking hyper v0.14.31 [INFO] [stderr] Checking hyper-tls v0.5.0 [INFO] [stderr] Checking reqwest v0.11.27 [INFO] [stderr] Checking protontweaks-api v0.4.2 [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/apps/mod.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | return Ok((tweaks_applied, tweaks.tricks.len().try_into().unwrap())); [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] 18 - return Ok((tweaks_applied, tweaks.tricks.len().try_into().unwrap())); [INFO] [stdout] 18 + Ok((tweaks_applied, tweaks.tricks.len().try_into().unwrap())) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/apps/mod.rs:10:8 [INFO] [stdout] | [INFO] [stdout] 10 | if tweaks.tricks.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `tweaks.tricks.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::env::Args` [INFO] [stdout] --> src/commands/run.rs:32:9 [INFO] [stdout] | [INFO] [stdout] 32 | / std::env::args() [INFO] [stdout] 33 | | .into_iter() [INFO] [stdout] | |________________________^ help: consider removing `.into_iter()`: `std::env::args()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/apps/mod.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | return Ok((tweaks_applied, tweaks.tricks.len().try_into().unwrap())); [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] 18 - return Ok((tweaks_applied, tweaks.tricks.len().try_into().unwrap())); [INFO] [stdout] 18 + Ok((tweaks_applied, tweaks.tricks.len().try_into().unwrap())) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/commands/run.rs:132:5 [INFO] [stdout] | [INFO] [stdout] 132 | return Ok((command[0].clone(), command[1..].to_vec(), app, tweaks)); [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] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 132 - return Ok((command[0].clone(), command[1..].to_vec(), app, tweaks)); [INFO] [stdout] 132 + Ok((command[0].clone(), command[1..].to_vec(), app, tweaks)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/apps/mod.rs:10:8 [INFO] [stdout] | [INFO] [stdout] 10 | if tweaks.tricks.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `tweaks.tricks.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/commands/run.rs:127:12 [INFO] [stdout] | [INFO] [stdout] 127 | if tweaks.args.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!tweaks.args.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/commands/setup.rs:14:13 [INFO] [stdout] | [INFO] [stdout] 14 | "[service] ->", [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stdout] = note: `#[warn(clippy::print_literal)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 13 - "{} {}", [INFO] [stdout] 14 - "[service] ->", [INFO] [stdout] 13 + "[service] -> {}", [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/commands/setup.rs:60:16 [INFO] [stdout] | [INFO] [stdout] 60 | .outro(format!("Protontweaks setup successfully!").as_str()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Protontweaks setup successfully!".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: literal with an empty format string [INFO] [stdout] --> src/commands/uninstall.rs:14:13 [INFO] [stdout] | [INFO] [stdout] 14 | "[service] ->", [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 13 - "{} {}", [INFO] [stdout] 14 - "[service] ->", [INFO] [stdout] 13 + "[service] -> {}", [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/commands/uninstall.rs:18:24 [INFO] [stdout] | [INFO] [stdout] 18 | println!("{}", "[service] -> removing..."); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 18 - println!("{}", "[service] -> removing..."); [INFO] [stdout] 18 + println!("[service] -> removing..."); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/commands/uninstall.rs:23:20 [INFO] [stdout] | [INFO] [stdout] 23 | println!("{}", "[configs] -> cleaning up..."); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 23 - println!("{}", "[configs] -> cleaning up..."); [INFO] [stdout] 23 + println!("[configs] -> cleaning up..."); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/commands/watch.rs:57:5 [INFO] [stdout] | [INFO] [stdout] 57 | / return Box::new(move |launch_options| { [INFO] [stdout] 58 | | let launch_options = launch_options.unwrap_or_default(); [INFO] [stdout] 59 | | [INFO] [stdout] 60 | | let command = "protontweaks %command%"; [INFO] [stdout] ... | [INFO] [stdout] 78 | | launch_options + " " + command [INFO] [stdout] 79 | | }); [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] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 57 ~ Box::new(move |launch_options| { [INFO] [stdout] 58 + let launch_options = launch_options.unwrap_or_default(); [INFO] [stdout] 59 + [INFO] [stdout] 60 + let command = "protontweaks %command%"; [INFO] [stdout] 61 + [INFO] [stdout] 62 + // If our command has already been added then just return the original value [INFO] [stdout] 63 + if launch_options.contains(command) { [INFO] [stdout] 64 + return launch_options; [INFO] [stdout] 65 + } [INFO] [stdout] 66 + [INFO] [stdout] 67 + // If %command% has already been added, but protontweaks hasn't prefix it with protontweaks [INFO] [stdout] 68 + if launch_options.contains("%command%") { [INFO] [stdout] 69 + return launch_options.replace("%command%", command); [INFO] [stdout] 70 + } [INFO] [stdout] 71 + [INFO] [stdout] 72 + // If launch options is empty then just return our command [INFO] [stdout] 73 + if launch_options.trim() == "" { [INFO] [stdout] 74 + return command.to_string(); [INFO] [stdout] 75 + } [INFO] [stdout] 76 + [INFO] [stdout] 77 + // Otherwise append our command as a fallback [INFO] [stdout] 78 + launch_options + " " + command [INFO] [stdout] 79 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::env::Args` [INFO] [stdout] --> src/commands/run.rs:32:9 [INFO] [stdout] | [INFO] [stdout] 32 | / std::env::args() [INFO] [stdout] 33 | | .into_iter() [INFO] [stdout] | |________________________^ help: consider removing `.into_iter()`: `std::env::args()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/commands/run.rs:132:5 [INFO] [stdout] | [INFO] [stdout] 132 | return Ok((command[0].clone(), command[1..].to_vec(), app, tweaks)); [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] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 132 - return Ok((command[0].clone(), command[1..].to_vec(), app, tweaks)); [INFO] [stdout] 132 + Ok((command[0].clone(), command[1..].to_vec(), app, tweaks)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/commands/run.rs:127:12 [INFO] [stdout] | [INFO] [stdout] 127 | if tweaks.args.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!tweaks.args.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `if let` since only the `Some` variant of the iterator element is used [INFO] [stdout] --> src/config.rs:48:9 [INFO] [stdout] | [INFO] [stdout] 48 | / for path in paths { [INFO] [stdout] 49 | | if let Some(path) = path { [INFO] [stdout] 50 | | return Ok(path); [INFO] [stdout] 51 | | } [INFO] [stdout] 52 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] help: try `.flatten()` and remove the `if let` statement in the for loop [INFO] [stdout] --> src/config.rs:49:13 [INFO] [stdout] | [INFO] [stdout] 49 | / if let Some(path) = path { [INFO] [stdout] 50 | | return Ok(path); [INFO] [stdout] 51 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_flatten [INFO] [stdout] = note: `#[warn(clippy::manual_flatten)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 48 ~ for path in paths.into_iter().flatten() { [INFO] [stdout] 49 + return Ok(path); [INFO] [stdout] 50 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `filter(..).map(..)` can be simplified as `filter_map(..)` [INFO] [stdout] --> src/config.rs:66:14 [INFO] [stdout] | [INFO] [stdout] 66 | .filter(|x| x.is_some()) [INFO] [stdout] | ______________^ [INFO] [stdout] 67 | | .map(|x| x.clone().unwrap()) [INFO] [stdout] | |________________________________________^ help: try: `filter_map(|x| x.clone())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_filter_map [INFO] [stdout] = note: `#[warn(clippy::manual_filter_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/commands/setup.rs:14:13 [INFO] [stdout] | [INFO] [stdout] 14 | "[service] ->", [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stdout] = note: `#[warn(clippy::print_literal)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 13 - "{} {}", [INFO] [stdout] 14 - "[service] ->", [INFO] [stdout] 13 + "[service] -> {}", [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/config.rs:108:25 [INFO] [stdout] | [INFO] [stdout] 108 | if fs::metadata(&path).is_ok() { [INFO] [stdout] | ^^^^^ help: change this to: `path` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/config.rs:109:49 [INFO] [stdout] | [INFO] [stdout] 109 | let raw_config = fs::read_to_string(&path).map_err(|e| e.to_string())?; [INFO] [stdout] | ^^^^^ help: change this to: `path` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/commands/setup.rs:60:16 [INFO] [stdout] | [INFO] [stdout] 60 | .outro(format!("Protontweaks setup successfully!").as_str()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Protontweaks setup successfully!".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: the borrowed expression implements the required traits [INFO] [stdout] --> src/config.rs:123:25 [INFO] [stdout] | [INFO] [stdout] 123 | if fs::metadata(&path).is_ok() && fs::remove_file(&path).is_ok() { [INFO] [stdout] | ^^^^^ help: change this to: `path` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/config.rs:123:59 [INFO] [stdout] | [INFO] [stdout] 123 | if fs::metadata(&path).is_ok() && fs::remove_file(&path).is_ok() { [INFO] [stdout] | ^^^^^ help: change this to: `path` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/commands/uninstall.rs:14:13 [INFO] [stdout] | [INFO] [stdout] 14 | "[service] ->", [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 13 - "{} {}", [INFO] [stdout] 14 - "[service] ->", [INFO] [stdout] 13 + "[service] -> {}", [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: file opened with `create`, but `truncate` behavior not defined [INFO] [stdout] --> src/config.rs:168:14 [INFO] [stdout] | [INFO] [stdout] 168 | .create(true) [INFO] [stdout] | ^^^^^^^^^^^^- help: add: `.truncate(true)` [INFO] [stdout] | [INFO] [stdout] = help: if you intend to overwrite an existing file entirely, call `.truncate(true)` [INFO] [stdout] = help: if you instead know that you may want to keep some parts of the old file, call `.truncate(false)` [INFO] [stdout] = help: alternatively, use `.append(true)` to append to the file instead of overwriting it [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_open_options [INFO] [stdout] = note: `#[warn(clippy::suspicious_open_options)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/commands/uninstall.rs:18:24 [INFO] [stdout] | [INFO] [stdout] 18 | println!("{}", "[service] -> removing..."); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 18 - println!("{}", "[service] -> removing..."); [INFO] [stdout] 18 + println!("[service] -> removing..."); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/config.rs:170:19 [INFO] [stdout] | [INFO] [stdout] 170 | .open(&path) [INFO] [stdout] | ^^^^^ help: change this to: `path` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/commands/uninstall.rs:23:20 [INFO] [stdout] | [INFO] [stdout] 23 | println!("{}", "[configs] -> cleaning up..."); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 23 - println!("{}", "[configs] -> cleaning up..."); [INFO] [stdout] 23 + println!("[configs] -> cleaning up..."); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: re-implementing `PartialEq::ne` is unnecessary [INFO] [stdout] --> src/config.rs:197:5 [INFO] [stdout] | [INFO] [stdout] 197 | fn ne(&self, other: &Self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_ne_impl [INFO] [stdout] = note: `#[warn(clippy::partialeq_ne_impl)]` 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/utils/command.rs:41:43 [INFO] [stdout] | [INFO] [stdout] 41 | let Some(command_args) = shlex::split(&command) else { [INFO] [stdout] | ^^^^^^^^ help: change this to: `command` [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 `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/utils/commands/protontricks/install.rs:11:58 [INFO] [stdout] | [INFO] [stdout] 11 | let args = args.iter().cloned().chain(components.into_iter().cloned()); [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] = note: `#[warn(clippy::into_iter_on_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/commands/watch.rs:57:5 [INFO] [stdout] | [INFO] [stdout] 57 | / return Box::new(move |launch_options| { [INFO] [stdout] 58 | | let launch_options = launch_options.unwrap_or_default(); [INFO] [stdout] 59 | | [INFO] [stdout] 60 | | let command = "protontweaks %command%"; [INFO] [stdout] ... | [INFO] [stdout] 78 | | launch_options + " " + command [INFO] [stdout] 79 | | }); [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] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 57 ~ Box::new(move |launch_options| { [INFO] [stdout] 58 + let launch_options = launch_options.unwrap_or_default(); [INFO] [stdout] 59 + [INFO] [stdout] 60 + let command = "protontweaks %command%"; [INFO] [stdout] 61 + [INFO] [stdout] 62 + // If our command has already been added then just return the original value [INFO] [stdout] 63 + if launch_options.contains(command) { [INFO] [stdout] 64 + return launch_options; [INFO] [stdout] 65 + } [INFO] [stdout] 66 + [INFO] [stdout] 67 + // If %command% has already been added, but protontweaks hasn't prefix it with protontweaks [INFO] [stdout] 68 + if launch_options.contains("%command%") { [INFO] [stdout] 69 + return launch_options.replace("%command%", command); [INFO] [stdout] 70 + } [INFO] [stdout] 71 + [INFO] [stdout] 72 + // If launch options is empty then just return our command [INFO] [stdout] 73 + if launch_options.trim() == "" { [INFO] [stdout] 74 + return command.to_string(); [INFO] [stdout] 75 + } [INFO] [stdout] 76 + [INFO] [stdout] 77 + // Otherwise append our command as a fallback [INFO] [stdout] 78 + launch_options + " " + command [INFO] [stdout] 79 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/utils/commands/protontricks/mod.rs:19:9 [INFO] [stdout] | [INFO] [stdout] 19 | return Err("Please install 'protontricks'!".to_string()); [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] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 19 - return Err("Please install 'protontricks'!".to_string()); [INFO] [stdout] 19 + Err("Please install 'protontricks'!".to_string()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `if let` since only the `Some` variant of the iterator element is used [INFO] [stdout] --> src/config.rs:48:9 [INFO] [stdout] | [INFO] [stdout] 48 | / for path in paths { [INFO] [stdout] 49 | | if let Some(path) = path { [INFO] [stdout] 50 | | return Ok(path); [INFO] [stdout] 51 | | } [INFO] [stdout] 52 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] help: try `.flatten()` and remove the `if let` statement in the for loop [INFO] [stdout] --> src/config.rs:49:13 [INFO] [stdout] | [INFO] [stdout] 49 | / if let Some(path) = path { [INFO] [stdout] 50 | | return Ok(path); [INFO] [stdout] 51 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_flatten [INFO] [stdout] = note: `#[warn(clippy::manual_flatten)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 48 ~ for path in paths.into_iter().flatten() { [INFO] [stdout] 49 + return Ok(path); [INFO] [stdout] 50 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `filter(..).map(..)` can be simplified as `filter_map(..)` [INFO] [stdout] --> src/config.rs:66:14 [INFO] [stdout] | [INFO] [stdout] 66 | .filter(|x| x.is_some()) [INFO] [stdout] | ______________^ [INFO] [stdout] 67 | | .map(|x| x.clone().unwrap()) [INFO] [stdout] | |________________________________________^ help: try: `filter_map(|x| x.clone())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_filter_map [INFO] [stdout] = note: `#[warn(clippy::manual_filter_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_err()` [INFO] [stdout] --> src/utils/service.rs:56:12 [INFO] [stdout] | [INFO] [stdout] 56 | if let Err(_) = manager.uninstall(ServiceUninstallCtx { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern_matching)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 56 ~ if manager.uninstall(ServiceUninstallCtx { [INFO] [stdout] 57 + label: label.clone(), [INFO] [stdout] 58 ~ }).is_err() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Steam` [INFO] [stdout] --> src/utils/steam/mod.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | / pub fn new() -> Self { [INFO] [stdout] 13 | | Steam { [INFO] [stdout] 14 | | localconfig: Steam::discover_localconfig(), [INFO] [stdout] 15 | | } [INFO] [stdout] 16 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 11 + impl Default for Steam { [INFO] [stdout] 12 + fn default() -> Self { [INFO] [stdout] 13 + Self::new() [INFO] [stdout] 14 + } [INFO] [stdout] 15 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/config.rs:108:25 [INFO] [stdout] | [INFO] [stdout] 108 | if fs::metadata(&path).is_ok() { [INFO] [stdout] | ^^^^^ help: change this to: `path` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/config.rs:109:49 [INFO] [stdout] | [INFO] [stdout] 109 | let raw_config = fs::read_to_string(&path).map_err(|e| e.to_string())?; [INFO] [stdout] | ^^^^^ help: change this to: `path` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/utils/steam/mod.rs:37:12 [INFO] [stdout] | [INFO] [stdout] 37 | if search.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `search.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/utils/steam/mod.rs:46:9 [INFO] [stdout] | [INFO] [stdout] 46 | return sha256::digest(&bytes); [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] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 46 - return sha256::digest(&bytes); [INFO] [stdout] 46 + sha256::digest(&bytes) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/config.rs:123:25 [INFO] [stdout] | [INFO] [stdout] 123 | if fs::metadata(&path).is_ok() && fs::remove_file(&path).is_ok() { [INFO] [stdout] | ^^^^^ help: change this to: `path` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/config.rs:123:59 [INFO] [stdout] | [INFO] [stdout] 123 | if fs::metadata(&path).is_ok() && fs::remove_file(&path).is_ok() { [INFO] [stdout] | ^^^^^ help: change this to: `path` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/utils/steam/mod.rs:75:9 [INFO] [stdout] | [INFO] [stdout] 75 | return Some(app_ids); [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] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 75 - return Some(app_ids); [INFO] [stdout] 75 + Some(app_ids) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `vdf [INFO] [stdout] .value [INFO] [stdout] .get_obj()? [INFO] [stdout] .get("Software")? [INFO] [stdout] .get(0)? [INFO] [stdout] .get_obj()? [INFO] [stdout] .get("Valve")? [INFO] [stdout] .get(0)? [INFO] [stdout] .get_obj()? [INFO] [stdout] .get("Steam")? [INFO] [stdout] .get(0)? [INFO] [stdout] .get_obj()? [INFO] [stdout] .get("apps")?.get(0)` [INFO] [stdout] --> src/utils/steam/mod.rs:53:20 [INFO] [stdout] | [INFO] [stdout] 53 | let apps = vdf [INFO] [stdout] | ____________________^ [INFO] [stdout] 54 | | .value [INFO] [stdout] 55 | | .get_obj()? [INFO] [stdout] 56 | | .get("Software")? [INFO] [stdout] ... | [INFO] [stdout] 65 | | .get("apps")? [INFO] [stdout] 66 | | .get(0)? [INFO] [stdout] | |___________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 53 ~ let apps = vdf [INFO] [stdout] 54 + .value [INFO] [stdout] 55 + .get_obj()? [INFO] [stdout] 56 + .get("Software")? [INFO] [stdout] 57 + .get(0)? [INFO] [stdout] 58 + .get_obj()? [INFO] [stdout] 59 + .get("Valve")? [INFO] [stdout] 60 + .get(0)? [INFO] [stdout] 61 + .get_obj()? [INFO] [stdout] 62 + .get("Steam")? [INFO] [stdout] 63 + .get(0)? [INFO] [stdout] 64 + .get_obj()? [INFO] [stdout] 65 ~ .get("apps")?.first()? [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `vdf [INFO] [stdout] .value [INFO] [stdout] .get_obj()? [INFO] [stdout] .get("Software")? [INFO] [stdout] .get(0)? [INFO] [stdout] .get_obj()? [INFO] [stdout] .get("Valve")? [INFO] [stdout] .get(0)? [INFO] [stdout] .get_obj()? [INFO] [stdout] .get("Steam")?.get(0)` [INFO] [stdout] --> src/utils/steam/mod.rs:53:20 [INFO] [stdout] | [INFO] [stdout] 53 | let apps = vdf [INFO] [stdout] | ____________________^ [INFO] [stdout] 54 | | .value [INFO] [stdout] 55 | | .get_obj()? [INFO] [stdout] 56 | | .get("Software")? [INFO] [stdout] ... | [INFO] [stdout] 62 | | .get("Steam")? [INFO] [stdout] 63 | | .get(0)? [INFO] [stdout] | |___________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 53 ~ let apps = vdf [INFO] [stdout] 54 + .value [INFO] [stdout] 55 + .get_obj()? [INFO] [stdout] 56 + .get("Software")? [INFO] [stdout] 57 + .get(0)? [INFO] [stdout] 58 + .get_obj()? [INFO] [stdout] 59 + .get("Valve")? [INFO] [stdout] 60 + .get(0)? [INFO] [stdout] 61 + .get_obj()? [INFO] [stdout] 62 ~ .get("Steam")?.first()? [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `vdf [INFO] [stdout] .value [INFO] [stdout] .get_obj()? [INFO] [stdout] .get("Software")? [INFO] [stdout] .get(0)? [INFO] [stdout] .get_obj()? [INFO] [stdout] .get("Valve")?.get(0)` [INFO] [stdout] --> src/utils/steam/mod.rs:53:20 [INFO] [stdout] | [INFO] [stdout] 53 | let apps = vdf [INFO] [stdout] | ____________________^ [INFO] [stdout] 54 | | .value [INFO] [stdout] 55 | | .get_obj()? [INFO] [stdout] 56 | | .get("Software")? [INFO] [stdout] ... | [INFO] [stdout] 59 | | .get("Valve")? [INFO] [stdout] 60 | | .get(0)? [INFO] [stdout] | |___________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 53 ~ let apps = vdf [INFO] [stdout] 54 + .value [INFO] [stdout] 55 + .get_obj()? [INFO] [stdout] 56 + .get("Software")? [INFO] [stdout] 57 + .get(0)? [INFO] [stdout] 58 + .get_obj()? [INFO] [stdout] 59 ~ .get("Valve")?.first()? [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `vdf [INFO] [stdout] .value [INFO] [stdout] .get_obj()? [INFO] [stdout] .get("Software")?.get(0)` [INFO] [stdout] --> src/utils/steam/mod.rs:53:20 [INFO] [stdout] | [INFO] [stdout] 53 | let apps = vdf [INFO] [stdout] | ____________________^ [INFO] [stdout] 54 | | .value [INFO] [stdout] 55 | | .get_obj()? [INFO] [stdout] 56 | | .get("Software")? [INFO] [stdout] 57 | | .get(0)? [INFO] [stdout] | |___________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 53 ~ let apps = vdf [INFO] [stdout] 54 + .value [INFO] [stdout] 55 + .get_obj()? [INFO] [stdout] 56 ~ .get("Software")?.first()? [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: file opened with `create`, but `truncate` behavior not defined [INFO] [stdout] --> src/config.rs:168:14 [INFO] [stdout] | [INFO] [stdout] 168 | .create(true) [INFO] [stdout] | ^^^^^^^^^^^^- help: add: `.truncate(true)` [INFO] [stdout] | [INFO] [stdout] = help: if you intend to overwrite an existing file entirely, call `.truncate(true)` [INFO] [stdout] = help: if you instead know that you may want to keep some parts of the old file, call `.truncate(false)` [INFO] [stdout] = help: alternatively, use `.append(true)` to append to the file instead of overwriting it [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_open_options [INFO] [stdout] = note: `#[warn(clippy::suspicious_open_options)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/config.rs:170:19 [INFO] [stdout] | [INFO] [stdout] 170 | .open(&path) [INFO] [stdout] | ^^^^^ help: change this to: `path` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: re-implementing `PartialEq::ne` is unnecessary [INFO] [stdout] --> src/config.rs:197:5 [INFO] [stdout] | [INFO] [stdout] 197 | fn ne(&self, other: &Self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_ne_impl [INFO] [stdout] = note: `#[warn(clippy::partialeq_ne_impl)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/config.rs:64:38 [INFO] [stdout] | [INFO] [stdout] 64 | let mut paths: Vec = vec![Config::xdg(), Config::home()] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use an array directly: `[Config::xdg(), Config::home()]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] = note: `#[warn(clippy::useless_vec)]` 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/utils/command.rs:41:43 [INFO] [stdout] | [INFO] [stdout] 41 | let Some(command_args) = shlex::split(&command) else { [INFO] [stdout] | ^^^^^^^^ help: change this to: `command` [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 `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/utils/commands/protontricks/install.rs:11:58 [INFO] [stdout] | [INFO] [stdout] 11 | let args = args.iter().cloned().chain(components.into_iter().cloned()); [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] = note: `#[warn(clippy::into_iter_on_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/utils/commands/protontricks/mod.rs:19:9 [INFO] [stdout] | [INFO] [stdout] 19 | return Err("Please install 'protontricks'!".to_string()); [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] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 19 - return Err("Please install 'protontricks'!".to_string()); [INFO] [stdout] 19 + Err("Please install 'protontricks'!".to_string()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/utils/commands/protontricks/mod.rs:41:13 [INFO] [stdout] | [INFO] [stdout] 41 | !env::var("CI").is_ok() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `env::var("CI").is_err()` [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 boolean expression can be simplified [INFO] [stdout] --> src/utils/commands/protontricks/mod.rs:47:56 [INFO] [stdout] | [INFO] [stdout] 47 | assert_eq!(Protontricks::is_installed().await, !env::var("CI").is_ok()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `env::var("CI").is_err()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_err()` [INFO] [stdout] --> src/utils/service.rs:56:12 [INFO] [stdout] | [INFO] [stdout] 56 | if let Err(_) = manager.uninstall(ServiceUninstallCtx { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern_matching)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 56 ~ if manager.uninstall(ServiceUninstallCtx { [INFO] [stdout] 57 + label: label.clone(), [INFO] [stdout] 58 ~ }).is_err() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Steam` [INFO] [stdout] --> src/utils/steam/mod.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | / pub fn new() -> Self { [INFO] [stdout] 13 | | Steam { [INFO] [stdout] 14 | | localconfig: Steam::discover_localconfig(), [INFO] [stdout] 15 | | } [INFO] [stdout] 16 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 11 + impl Default for Steam { [INFO] [stdout] 12 + fn default() -> Self { [INFO] [stdout] 13 + Self::new() [INFO] [stdout] 14 + } [INFO] [stdout] 15 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/utils/steam/mod.rs:37:12 [INFO] [stdout] | [INFO] [stdout] 37 | if search.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `search.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/utils/steam/mod.rs:46:9 [INFO] [stdout] | [INFO] [stdout] 46 | return sha256::digest(&bytes); [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] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 46 - return sha256::digest(&bytes); [INFO] [stdout] 46 + sha256::digest(&bytes) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/utils/steam/mod.rs:75:9 [INFO] [stdout] | [INFO] [stdout] 75 | return Some(app_ids); [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] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 75 - return Some(app_ids); [INFO] [stdout] 75 + Some(app_ids) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `vdf [INFO] [stdout] .value [INFO] [stdout] .get_obj()? [INFO] [stdout] .get("Software")? [INFO] [stdout] .get(0)? [INFO] [stdout] .get_obj()? [INFO] [stdout] .get("Valve")? [INFO] [stdout] .get(0)? [INFO] [stdout] .get_obj()? [INFO] [stdout] .get("Steam")? [INFO] [stdout] .get(0)? [INFO] [stdout] .get_obj()? [INFO] [stdout] .get("apps")?.get(0)` [INFO] [stdout] --> src/utils/steam/mod.rs:53:20 [INFO] [stdout] | [INFO] [stdout] 53 | let apps = vdf [INFO] [stdout] | ____________________^ [INFO] [stdout] 54 | | .value [INFO] [stdout] 55 | | .get_obj()? [INFO] [stdout] 56 | | .get("Software")? [INFO] [stdout] ... | [INFO] [stdout] 65 | | .get("apps")? [INFO] [stdout] 66 | | .get(0)? [INFO] [stdout] | |___________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 53 ~ let apps = vdf [INFO] [stdout] 54 + .value [INFO] [stdout] 55 + .get_obj()? [INFO] [stdout] 56 + .get("Software")? [INFO] [stdout] 57 + .get(0)? [INFO] [stdout] 58 + .get_obj()? [INFO] [stdout] 59 + .get("Valve")? [INFO] [stdout] 60 + .get(0)? [INFO] [stdout] 61 + .get_obj()? [INFO] [stdout] 62 + .get("Steam")? [INFO] [stdout] 63 + .get(0)? [INFO] [stdout] 64 + .get_obj()? [INFO] [stdout] 65 ~ .get("apps")?.first()? [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `vdf [INFO] [stdout] .value [INFO] [stdout] .get_obj()? [INFO] [stdout] .get("Software")? [INFO] [stdout] .get(0)? [INFO] [stdout] .get_obj()? [INFO] [stdout] .get("Valve")? [INFO] [stdout] .get(0)? [INFO] [stdout] .get_obj()? [INFO] [stdout] .get("Steam")?.get(0)` [INFO] [stdout] --> src/utils/steam/mod.rs:53:20 [INFO] [stdout] | [INFO] [stdout] 53 | let apps = vdf [INFO] [stdout] | ____________________^ [INFO] [stdout] 54 | | .value [INFO] [stdout] 55 | | .get_obj()? [INFO] [stdout] 56 | | .get("Software")? [INFO] [stdout] ... | [INFO] [stdout] 62 | | .get("Steam")? [INFO] [stdout] 63 | | .get(0)? [INFO] [stdout] | |___________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 53 ~ let apps = vdf [INFO] [stdout] 54 + .value [INFO] [stdout] 55 + .get_obj()? [INFO] [stdout] 56 + .get("Software")? [INFO] [stdout] 57 + .get(0)? [INFO] [stdout] 58 + .get_obj()? [INFO] [stdout] 59 + .get("Valve")? [INFO] [stdout] 60 + .get(0)? [INFO] [stdout] 61 + .get_obj()? [INFO] [stdout] 62 ~ .get("Steam")?.first()? [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `vdf [INFO] [stdout] .value [INFO] [stdout] .get_obj()? [INFO] [stdout] .get("Software")? [INFO] [stdout] .get(0)? [INFO] [stdout] .get_obj()? [INFO] [stdout] .get("Valve")?.get(0)` [INFO] [stdout] --> src/utils/steam/mod.rs:53:20 [INFO] [stdout] | [INFO] [stdout] 53 | let apps = vdf [INFO] [stdout] | ____________________^ [INFO] [stdout] 54 | | .value [INFO] [stdout] 55 | | .get_obj()? [INFO] [stdout] 56 | | .get("Software")? [INFO] [stdout] ... | [INFO] [stdout] 59 | | .get("Valve")? [INFO] [stdout] 60 | | .get(0)? [INFO] [stdout] | |___________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 53 ~ let apps = vdf [INFO] [stdout] 54 + .value [INFO] [stdout] 55 + .get_obj()? [INFO] [stdout] 56 + .get("Software")? [INFO] [stdout] 57 + .get(0)? [INFO] [stdout] 58 + .get_obj()? [INFO] [stdout] 59 ~ .get("Valve")?.first()? [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `vdf [INFO] [stdout] .value [INFO] [stdout] .get_obj()? [INFO] [stdout] .get("Software")?.get(0)` [INFO] [stdout] --> src/utils/steam/mod.rs:53:20 [INFO] [stdout] | [INFO] [stdout] 53 | let apps = vdf [INFO] [stdout] | ____________________^ [INFO] [stdout] 54 | | .value [INFO] [stdout] 55 | | .get_obj()? [INFO] [stdout] 56 | | .get("Software")? [INFO] [stdout] 57 | | .get(0)? [INFO] [stdout] | |___________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 53 ~ let apps = vdf [INFO] [stdout] 54 + .value [INFO] [stdout] 55 + .get_obj()? [INFO] [stdout] 56 ~ .get("Software")?.first()? [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/commands/run.rs:190:28 [INFO] [stdout] | [INFO] [stdout] 190 | let command_args = vec![ [INFO] [stdout] | ____________________________^ [INFO] [stdout] 191 | | "~/.local/share/Steam/ubuntu12_32/reaper", [INFO] [stdout] 192 | | "SteamLaunch", [INFO] [stdout] 193 | | "AppId=644930", [INFO] [stdout] ... | [INFO] [stdout] 202 | | "'/home/ceci/.local/share/Steam/steamapps/common/They Are Billions/TheyAreBillions.exe'" [INFO] [stdout] 203 | | ].iter_mut().map(|x| x.to_string()).collect::>(); [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] = note: `#[warn(clippy::useless_vec)]` on by default [INFO] [stdout] help: you can use an array directly [INFO] [stdout] | [INFO] [stdout] 190 ~ let command_args = ["~/.local/share/Steam/ubuntu12_32/reaper", [INFO] [stdout] 191 + "SteamLaunch", [INFO] [stdout] 192 + "AppId=644930", [INFO] [stdout] 193 + "--", [INFO] [stdout] 194 + "/home/ceci/.local/share/Steam/ubuntu12_32/steam-launch-wrapper", [INFO] [stdout] 195 + "--", [INFO] [stdout] 196 + "'/home/ceci/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper'/_v2-entry-point", [INFO] [stdout] 197 + "--verb=waitforexitandrun", [INFO] [stdout] 198 + "--", [INFO] [stdout] 199 + "'/home/ceci/.local/share/Steam/steamapps/common/Proton 9.0 (Beta)'/proton", [INFO] [stdout] 200 + "waitforexitandrun", [INFO] [stdout] 201 ~ "'/home/ceci/.local/share/Steam/steamapps/common/They Are Billions/TheyAreBillions.exe'"].iter_mut().map(|x| x.to_string()).collect::>(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/config.rs:64:38 [INFO] [stdout] | [INFO] [stdout] 64 | let mut paths: Vec = vec![Config::xdg(), Config::home()] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use an array directly: `[Config::xdg(), Config::home()]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 04s [INFO] running `Command { std: "docker" "inspect" "0d247d2222488477d340a2175900bb8439c2e4a8ee9ac548fb79fc9dd371b98d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "0d247d2222488477d340a2175900bb8439c2e4a8ee9ac548fb79fc9dd371b98d", kill_on_drop: false }` [INFO] [stdout] 0d247d2222488477d340a2175900bb8439c2e4a8ee9ac548fb79fc9dd371b98d