[INFO] cloning repository https://github.com/Detteee/bilistream [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Detteee/bilistream" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FDetteee%2Fbilistream", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FDetteee%2Fbilistream'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] c1b901ebc1a81e99d1c2cf009295200174c7ee55 [INFO] linting Detteee/bilistream/c1b901ebc1a81e99d1c2cf009295200174c7ee55 against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FDetteee%2Fbilistream" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/Detteee/bilistream [INFO] finished tweaking git repo https://github.com/Detteee/bilistream [INFO] tweaked toml for git repo https://github.com/Detteee/bilistream written to /workspace/builds/worker-5-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/Detteee/bilistream 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] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Locking 668 packages to latest compatible versions [INFO] [stderr] Adding cookie_store v0.16.2 (available: v0.22.1) [INFO] [stderr] Adding generic-array v0.14.7 (available: v0.14.9) [INFO] [stderr] Adding ksni v0.2.2 (available: v0.3.3) [INFO] [stderr] Adding matchit v0.8.4 (available: v0.8.6) [INFO] [stderr] Adding qrcode v0.12.0 (available: v0.14.1) [INFO] [stderr] Adding reqwest v0.11.27 (available: v0.13.2) [INFO] [stderr] Adding reqwest-middleware v0.2.5 (available: v0.5.1) [INFO] [stderr] Adding reqwest-retry v0.3.0 (available: v0.9.1) [INFO] [stderr] Adding tokio-tungstenite v0.20.1 (available: v0.28.0) [INFO] [stderr] Adding toml v0.8.2 (available: v0.8.23) [INFO] [stderr] Adding toml_datetime v0.6.3 (available: v0.6.11) [INFO] [stderr] Adding toml_edit v0.20.2 (available: v0.20.7) [INFO] [stderr] Adding tower v0.4.13 (available: v0.5.3) [INFO] [stderr] Adding tower-http v0.5.2 (available: v0.6.8) [INFO] [stderr] Adding trayicon v0.1.5 (available: v0.4.0) [INFO] [stderr] Adding unicode-width v0.1.14 (available: v0.2.2) [INFO] [stderr] Adding zip v0.6.6 (available: v8.2.0) [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded embed-resource v3.0.7 [INFO] [stderr] Downloaded serde_with_macros v3.18.0 [INFO] [stderr] Downloaded os_pipe v1.2.3 [INFO] [stderr] Downloaded trayicon v0.1.5 [INFO] [stderr] Downloaded reqwest-retry v0.3.0 [INFO] [stderr] Downloaded retry-policies v0.2.1 [INFO] [stderr] Downloaded checked_int_cast v1.0.0 [INFO] [stderr] Downloaded filetime_creation v0.2.0 [INFO] [stderr] Downloaded dbus-codegen v0.9.1 [INFO] [stderr] Downloaded dbus-tree v0.9.2 [INFO] [stderr] Downloaded eserde v0.1.7 [INFO] [stderr] Downloaded clap_complete v4.6.0 [INFO] [stderr] Downloaded tauri-plugin-shell v2.3.5 [INFO] [stderr] Downloaded ksni v0.2.2 [INFO] [stderr] Downloaded riven v2.78.0 [INFO] [stderr] Downloaded dbus v0.9.10 [INFO] [stderr] Downloaded dom_query v0.25.1 [INFO] [stderr] Downloaded serde_with v3.18.0 [INFO] [stderr] Downloaded wry v0.54.3 [INFO] [stderr] Downloaded qrcode v0.12.0 [INFO] [stderr] Downloaded tinyvec v1.11.0 [INFO] [stderr] Downloaded nt-time v0.8.1 [INFO] [stderr] Downloaded selectors v0.35.0 [INFO] [stderr] Downloaded lzma-rust v0.1.7 [INFO] [stderr] Downloaded eserde_derive v0.1.7 [INFO] [stderr] Downloaded openssl v0.10.76 [INFO] [stderr] Downloaded memo-map v0.3.3 [INFO] [stderr] Downloaded bit-set v0.6.0 [INFO] [stderr] Downloaded sevenz-rust v0.6.1 [INFO] [stderr] Downloaded libdbus-sys v0.2.7 [INFO] [stderr] Downloaded openssl-src v300.5.5+3.5.5 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 16db796b9c0e965c6ad5ba6c847e51aa49ffdac9d2acd2d889938ee87c035ae5 [INFO] running `Command { std: "docker" "start" "-a" "16db796b9c0e965c6ad5ba6c847e51aa49ffdac9d2acd2d889938ee87c035ae5", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "16db796b9c0e965c6ad5ba6c847e51aa49ffdac9d2acd2d889938ee87c035ae5", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "16db796b9c0e965c6ad5ba6c847e51aa49ffdac9d2acd2d889938ee87c035ae5", kill_on_drop: false }` [INFO] [stdout] 16db796b9c0e965c6ad5ba6c847e51aa49ffdac9d2acd2d889938ee87c035ae5 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 919a0cd2d21291f4f99f7c0bb41c72a815ac88a8f7a41c34f62ab512d8d9173a [INFO] running `Command { std: "docker" "start" "-a" "919a0cd2d21291f4f99f7c0bb41c72a815ac88a8f7a41c34f62ab512d8d9173a", kill_on_drop: false }` [INFO] [stderr] Compiling smallvec v1.15.1 [INFO] [stderr] Compiling target-lexicon v0.12.16 [INFO] [stderr] Compiling version-compare v0.2.1 [INFO] [stderr] Compiling proc-macro2 v1.0.106 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling libc v0.2.183 [INFO] [stderr] Compiling zerocopy v0.8.42 [INFO] [stderr] Checking futures-channel v0.3.32 [INFO] [stderr] Checking futures-task v0.3.32 [INFO] [stderr] Checking futures-io v0.3.32 [INFO] [stderr] Checking bitflags v2.11.0 [INFO] [stderr] Compiling stable_deref_trait v1.2.1 [INFO] [stderr] Checking errno v0.3.14 [INFO] [stderr] Compiling anyhow v1.0.102 [INFO] [stderr] Compiling getrandom v0.1.16 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Checking signal-hook-registry v1.4.8 [INFO] [stderr] Compiling erased-serde v0.4.10 [INFO] [stderr] Checking deranged v0.5.8 [INFO] [stderr] Compiling time-macros v0.2.27 [INFO] [stderr] Checking parking_lot_core v0.9.12 [INFO] [stderr] Compiling phf_shared v0.8.0 [INFO] [stderr] Checking tracing-core v0.1.36 [INFO] [stderr] Checking simd-adler32 v0.3.8 [INFO] [stderr] Compiling once_cell v1.21.4 [INFO] [stderr] Compiling proc-macro-hack v0.5.20+deprecated [INFO] [stderr] Compiling phf_shared v0.10.0 [INFO] [stderr] Compiling new_debug_unreachable v1.0.6 [INFO] [stderr] Compiling byteorder v1.5.0 [INFO] [stderr] Checking parking_lot v0.12.5 [INFO] [stderr] Compiling getrandom v0.4.2 [INFO] [stderr] Checking miniz_oxide v0.8.9 [INFO] [stderr] Compiling winnow v0.7.15 [INFO] [stderr] Compiling gio v0.18.4 [INFO] [stderr] Compiling quote v1.0.45 [INFO] [stderr] Compiling precomputed-hash v0.1.1 [INFO] [stderr] Compiling mac v0.1.1 [INFO] [stderr] Compiling utf-8 v0.7.6 [INFO] [stderr] Compiling toml_writer v1.0.6+spec-1.1.0 [INFO] [stderr] Compiling futf v0.1.5 [INFO] [stderr] Compiling percent-encoding v2.3.2 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling cfg-expr v0.15.8 [INFO] [stderr] Compiling syn v1.0.109 [INFO] [stderr] Checking flate2 v1.1.9 [INFO] [stderr] Compiling dtoa v1.0.11 [INFO] [stderr] Compiling form_urlencoded v1.2.2 [INFO] [stderr] Compiling tendril v0.4.3 [INFO] [stderr] Compiling dtoa-short v0.3.5 [INFO] [stderr] Compiling aho-corasick v1.1.4 [INFO] [stderr] Compiling jobserver v0.1.34 [INFO] [stderr] Compiling getrandom v0.2.17 [INFO] [stderr] Compiling proc-macro-error-attr v1.0.4 [INFO] [stderr] Compiling indexmap v1.9.3 [INFO] [stderr] Compiling cc v1.2.57 [INFO] [stderr] Compiling rand_core v0.6.4 [INFO] [stderr] Compiling camino v1.2.2 [INFO] [stderr] Compiling rand_core v0.5.1 [INFO] [stderr] Checking time v0.3.47 [INFO] [stderr] Compiling alloc-no-stdlib v2.0.4 [INFO] [stderr] Compiling unic-common v0.9.0 [INFO] [stderr] Compiling nodrop v0.1.14 [INFO] [stderr] Compiling matches v0.1.10 [INFO] [stderr] Compiling regex-syntax v0.8.10 [INFO] [stderr] Compiling unic-char-range v0.9.0 [INFO] [stderr] Compiling servo_arc v0.2.0 [INFO] [stderr] Compiling alloc-stdlib v0.2.2 [INFO] [stderr] Compiling unic-char-property v0.9.0 [INFO] [stderr] Compiling unic-ucd-version v0.9.0 [INFO] [stderr] Compiling rand_pcg v0.2.1 [INFO] [stderr] Compiling fxhash v0.2.1 [INFO] [stderr] Compiling phf v0.8.0 [INFO] [stderr] Compiling typeid v1.0.3 [INFO] [stderr] Checking http v0.2.12 [INFO] [stderr] Compiling schemars v0.8.22 [INFO] [stderr] Compiling openssl v0.10.76 [INFO] [stderr] Compiling unic-ucd-ident v0.9.0 [INFO] [stderr] Compiling brotli-decompressor v5.0.0 [INFO] [stderr] Compiling memoffset v0.9.1 [INFO] [stderr] Compiling libdbus-sys v0.2.7 [INFO] [stderr] Compiling dyn-clone v1.0.20 [INFO] [stderr] Compiling native-tls v0.2.18 [INFO] [stderr] Compiling http v1.4.0 [INFO] [stderr] Checking indexmap v2.13.0 [INFO] [stderr] Compiling walkdir v2.5.0 [INFO] [stderr] Checking tinyvec v1.11.0 [INFO] [stderr] Compiling glob v0.3.3 [INFO] [stderr] Compiling semver v1.0.27 [INFO] [stderr] Compiling serde_spanned v1.0.4 [INFO] [stderr] Compiling toml_datetime v0.7.5+spec-1.1.0 [INFO] [stderr] Compiling uuid v1.22.0 [INFO] [stderr] Compiling rustc_version v0.4.1 [INFO] [stderr] Compiling openssl-src v300.5.5+3.5.5 [INFO] [stderr] Compiling toml_parser v1.0.9+spec-1.1.0 [INFO] [stderr] Compiling brotli v8.0.2 [INFO] [stderr] Checking unicode-normalization v0.1.25 [INFO] [stderr] Compiling gtk v0.18.2 [INFO] [stderr] Compiling cfb v0.7.3 [INFO] [stderr] Compiling field-offset v0.3.6 [INFO] [stderr] Compiling rustls v0.21.12 [INFO] [stderr] Compiling toml v0.9.12+spec-1.1.0 [INFO] [stderr] Checking regex-automata v0.4.14 [INFO] [stderr] Compiling mime_guess v2.0.5 [INFO] [stderr] Compiling serde-untagged v0.1.9 [INFO] [stderr] Checking http-body v0.4.6 [INFO] [stderr] Compiling openssl-sys v0.9.112 [INFO] [stderr] Compiling ring v0.17.14 [INFO] [stderr] Checking socket2 v0.5.10 [INFO] [stderr] Compiling cookie v0.17.0 [INFO] [stderr] Checking psl-types v2.0.11 [INFO] [stderr] Compiling zstd-sys v2.0.16+zstd.1.5.7 [INFO] [stderr] Compiling infer v0.19.0 [INFO] [stderr] Compiling option-ext v0.2.0 [INFO] [stderr] Compiling unicode-width v0.1.14 [INFO] [stderr] Checking compression-codecs v0.4.37 [INFO] [stderr] Compiling dirs-sys v0.5.0 [INFO] [stderr] Compiling textwrap v0.11.0 [INFO] [stderr] Checking idna v0.3.0 [INFO] [stderr] Compiling atty v0.2.14 [INFO] [stderr] Compiling x11 v2.21.0 [INFO] [stderr] Compiling vec_map v0.8.2 [INFO] [stderr] Compiling strsim v0.8.0 [INFO] [stderr] Compiling ansi_term v0.12.1 [INFO] [stderr] Checking bytemuck v1.25.0 [INFO] [stderr] Compiling embed-resource v3.0.7 [INFO] [stderr] Compiling ppv-lite86 v0.2.21 [INFO] [stderr] Checking anstyle-parse v1.0.0 [INFO] [stderr] Compiling clap v2.34.0 [INFO] [stderr] Compiling dbus v0.9.10 [INFO] [stderr] Compiling dirs v6.0.0 [INFO] [stderr] Compiling tauri-winres v0.3.5 [INFO] [stderr] Compiling bzip2-sys v0.1.13+1.0.8 [INFO] [stderr] Compiling num-rational v0.3.2 [INFO] [stderr] Checking webpki-roots v0.25.4 [INFO] [stderr] Compiling rand_chacha v0.3.1 [INFO] [stderr] Compiling rand_chacha v0.2.2 [INFO] [stderr] Compiling adler2 v2.0.1 [INFO] [stderr] Checking colorchoice v1.0.5 [INFO] [stderr] Compiling zstd-safe v5.0.2+zstd.1.5.2 [INFO] [stderr] Checking anstyle v1.0.14 [INFO] [stderr] Compiling xml-rs v0.8.28 [INFO] [stderr] Checking chrono v0.4.44 [INFO] [stderr] Compiling rand v0.8.5 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling darling_core v0.23.0 [INFO] [stderr] Compiling proc-macro-error v1.0.4 [INFO] [stderr] Compiling rand v0.7.3 [INFO] [stderr] Compiling serde_derive_internals v0.29.1 [INFO] [stderr] Compiling phf_generator v0.11.3 [INFO] [stderr] Compiling string_cache_codegen v0.5.4 [INFO] [stderr] Compiling phf_codegen v0.11.3 [INFO] [stderr] Compiling phf_generator v0.10.0 [INFO] [stderr] Checking regex v1.12.3 [INFO] [stderr] Checking anstream v1.0.0 [INFO] [stderr] Compiling markup5ever v0.14.1 [INFO] [stderr] Compiling phf_generator v0.8.0 [INFO] [stderr] Compiling phf_codegen v0.8.0 [INFO] [stderr] Checking inout v0.1.4 [INFO] [stderr] Compiling selectors v0.24.0 [INFO] [stderr] Compiling crc32fast v1.5.0 [INFO] [stderr] Checking is-docker v0.2.0 [INFO] [stderr] Compiling cookie v0.18.1 [INFO] [stderr] Compiling dbus-codegen v0.9.1 [INFO] [stderr] Compiling x11-dl v2.21.0 [INFO] [stderr] Checking base64ct v1.8.3 [INFO] [stderr] Compiling phf_macros v0.10.0 [INFO] [stderr] Compiling cssparser v0.29.6 [INFO] [stderr] Checking clap_lex v1.1.0 [INFO] [stderr] Checking sync_wrapper v1.0.2 [INFO] [stderr] Checking password-hash v0.4.2 [INFO] [stderr] Checking clap_builder v4.6.0 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling yoke-derive v0.8.1 [INFO] [stderr] Compiling zerovec-derive v0.11.2 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling futures-macro v0.3.32 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling tokio-macros v2.6.1 [INFO] [stderr] Checking zerofrom v0.1.6 [INFO] [stderr] Compiling phf_macros v0.11.3 [INFO] [stderr] Compiling darling_macro v0.23.0 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Checking futures-util v0.3.32 [INFO] [stderr] Compiling phf v0.10.1 [INFO] [stderr] Compiling ctor v0.2.9 [INFO] [stderr] Checking yoke v0.8.1 [INFO] [stderr] Compiling cssparser-macros v0.6.1 [INFO] [stderr] Checking tokio v1.50.0 [INFO] [stderr] Compiling darling v0.23.0 [INFO] [stderr] Checking zerovec v0.11.5 [INFO] [stderr] Checking zerotrie v0.2.3 [INFO] [stderr] Compiling serde_with_macros v3.18.0 [INFO] [stderr] Compiling derive_more v0.99.20 [INFO] [stderr] Compiling phf v0.11.3 [INFO] [stderr] Checking thiserror v1.0.69 [INFO] [stderr] Checking tinystr v0.8.2 [INFO] [stderr] Checking potential_utf v0.1.4 [INFO] [stderr] Compiling match_token v0.1.0 [INFO] [stderr] Checking icu_collections v2.1.1 [INFO] [stderr] Compiling openssl-macros v0.1.1 [INFO] [stderr] Checking icu_locale_core v2.1.1 [INFO] [stderr] Compiling schemars_derive v0.8.22 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Checking sct v0.7.1 [INFO] [stderr] Checking rustls-webpki v0.101.7 [INFO] [stderr] Compiling serde_repr v0.1.20 [INFO] [stderr] Compiling ksni v0.2.2 [INFO] [stderr] Compiling serde_with v3.18.0 [INFO] [stderr] Compiling async-trait v0.1.89 [INFO] [stderr] Compiling clap_derive v4.6.0 [INFO] [stderr] Checking icu_provider v2.1.1 [INFO] [stderr] Checking tracing v0.1.44 [INFO] [stderr] Checking icu_properties v2.1.2 [INFO] [stderr] Checking icu_normalizer v2.1.1 [INFO] [stderr] Checking phf_shared v0.11.3 [INFO] [stderr] Checking is-wsl v0.4.0 [INFO] [stderr] Checking cipher v0.4.4 [INFO] [stderr] Checking crossbeam-channel v0.5.15 [INFO] [stderr] Checking num-iter v0.1.45 [INFO] [stderr] Checking futures-executor v0.3.32 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Checking idna_adapter v1.2.1 [INFO] [stderr] Compiling fdeflate v0.3.7 [INFO] [stderr] Checking futures v0.3.32 [INFO] [stderr] Checking task-local-extensions v0.1.4 [INFO] [stderr] Checking sha2 v0.10.9 [INFO] [stderr] Checking idna v1.1.0 [INFO] [stderr] Checking hmac v0.12.1 [INFO] [stderr] Checking publicsuffix v2.3.0 [INFO] [stderr] Checking raw-window-handle v0.6.2 [INFO] [stderr] Checking pathdiff v0.2.3 [INFO] [stderr] Checking open v5.3.3 [INFO] [stderr] Checking url v2.5.8 [INFO] [stderr] Checking serde_urlencoded v0.7.1 [INFO] [stderr] Checking dpi v0.1.2 [INFO] [stderr] Checking jsonptr v0.6.3 [INFO] [stderr] Checking pbkdf2 v0.11.0 [INFO] [stderr] Compiling png v0.17.16 [INFO] [stderr] Checking image v0.23.14 [INFO] [stderr] Checking idna v0.2.3 [INFO] [stderr] Compiling toml_datetime v0.6.3 [INFO] [stderr] Compiling serde_spanned v0.6.9 [INFO] [stderr] Compiling string_cache v0.8.9 [INFO] [stderr] Compiling toml_edit v0.20.2 [INFO] [stderr] Compiling toml_edit v0.19.15 [INFO] [stderr] Compiling cargo-platform v0.1.9 [INFO] [stderr] Checking tokio-util v0.7.18 [INFO] [stderr] Compiling cargo_metadata v0.19.2 [INFO] [stderr] Checking tokio-rustls v0.24.1 [INFO] [stderr] Checking cookie_store v0.20.0 [INFO] [stderr] Compiling json-patch v3.0.1 [INFO] [stderr] Checking h2 v0.3.27 [INFO] [stderr] Checking async-compression v0.4.41 [INFO] [stderr] Compiling cargo_toml v0.22.3 [INFO] [stderr] Checking hyper v1.8.1 [INFO] [stderr] Checking dbus-tree v0.9.2 [INFO] [stderr] Checking clap v4.6.0 [INFO] [stderr] Checking urlpattern v0.3.0 [INFO] [stderr] Checking tower v0.5.3 [INFO] [stderr] Compiling digest v0.10.7 [INFO] [stderr] Checking aes v0.8.4 [INFO] [stderr] Compiling html5ever v0.29.1 [INFO] [stderr] Checking hyper-util v0.1.20 [INFO] [stderr] Checking cookie v0.16.2 [INFO] [stderr] Checking bzip2 v0.4.4 [INFO] [stderr] Checking axum-core v0.5.6 [INFO] [stderr] Compiling proc-macro-crate v1.3.1 [INFO] [stderr] Compiling dlopen2_derive v0.4.3 [INFO] [stderr] Compiling strum_macros v0.20.1 [INFO] [stderr] Compiling toml v0.8.2 [INFO] [stderr] Compiling proc-macro-crate v2.0.2 [INFO] [stderr] Compiling kuchikiki v0.8.8-speedreader [INFO] [stderr] Compiling system-deps v6.2.2 [INFO] [stderr] Checking retry-policies v0.2.1 [INFO] [stderr] Compiling tauri-utils v2.8.3 [INFO] [stderr] Checking tracing-log v0.2.0 [INFO] [stderr] Checking libloading v0.7.4 [INFO] [stderr] Compiling gtk3-macros v0.18.2 [INFO] [stderr] Compiling num_enum_derive v0.5.11 [INFO] [stderr] Checking thread_local v1.1.9 [INFO] [stderr] Checking nu-ansi-term v0.50.3 [INFO] [stderr] Compiling signal-hook v0.3.18 [INFO] [stderr] Checking constant_time_eq v0.1.5 [INFO] [stderr] Checking memo-map v0.3.3 [INFO] [stderr] Checking smawk v0.3.2 [INFO] [stderr] Checking unsafe-libyaml v0.2.11 [INFO] [stderr] Checking checked_int_cast v1.0.0 [INFO] [stderr] Checking dunce v1.0.5 [INFO] [stderr] Compiling wry v0.54.3 [INFO] [stderr] Compiling tauri-runtime v2.10.1 [INFO] [stderr] Checking unicode-linebreak v0.1.5 [INFO] [stderr] Checking strum v0.20.0 [INFO] [stderr] Checking qrcode v0.12.0 [INFO] [stderr] Compiling glib-sys v0.18.1 [INFO] [stderr] Compiling gobject-sys v0.18.0 [INFO] [stderr] Compiling gio-sys v0.18.1 [INFO] [stderr] Compiling gdk-sys v0.18.2 [INFO] [stderr] Compiling gdk-pixbuf-sys v0.18.0 [INFO] [stderr] Compiling cairo-sys-rs v0.18.2 [INFO] [stderr] Compiling pango-sys v0.18.0 [INFO] [stderr] Compiling glib-macros v0.18.5 [INFO] [stderr] Compiling atk-sys v0.18.2 [INFO] [stderr] Compiling gtk-sys v0.18.2 [INFO] [stderr] Compiling javascriptcore-rs-sys v1.1.1 [INFO] [stderr] Compiling soup3-sys v0.5.0 [INFO] [stderr] Compiling webkit2gtk-sys v2.0.2 [INFO] [stderr] Compiling gdkx11-sys v0.18.2 [INFO] [stderr] Checking num_enum v0.5.11 [INFO] [stderr] Checking axum v0.8.8 [INFO] [stderr] Checking serde_yaml v0.9.34+deprecated [INFO] [stderr] Checking textwrap v0.16.2 [INFO] [stderr] Checking keyboard-types v0.7.0 [INFO] [stderr] Checking tracing-subscriber v0.3.23 [INFO] [stderr] Checking tower-http v0.5.2 [INFO] [stderr] Checking dlopen2 v0.8.2 [INFO] [stderr] Checking cookie_store v0.16.2 [INFO] [stderr] Checking hyper v0.14.32 [INFO] [stderr] Checking clap_complete v4.6.0 [INFO] [stderr] Compiling ico v0.5.0 [INFO] [stderr] Checking zstd v0.11.2+zstd.1.5.2 [INFO] [stderr] Checking tower v0.4.13 [INFO] [stderr] Compiling base64 v0.22.1 [INFO] [stderr] Compiling tauri-runtime-wry v2.10.1 [INFO] [stderr] Checking pxfm v0.1.28 [INFO] [stderr] Checking zip v0.6.6 [INFO] [stderr] Compiling getrandom v0.3.4 [INFO] [stderr] Checking png v0.18.1 [INFO] [stderr] Compiling serialize-to-javascript-impl v0.1.2 [INFO] [stderr] Checking os_pipe v1.2.3 [INFO] [stderr] Checking byteorder-lite v0.1.0 [INFO] [stderr] Checking sigchld v0.2.4 [INFO] [stderr] Checking heck v0.5.0 [INFO] [stderr] Checking shared_child v1.1.1 [INFO] [stderr] Checking serialize-to-javascript v0.1.2 [INFO] [stderr] Checking gdkwayland-sys v0.18.2 [INFO] [stderr] Checking glib v0.18.5 [INFO] [stderr] Checking hyper-rustls v0.24.2 [INFO] [stderr] Checking libappindicator-sys v0.9.0 [INFO] [stderr] Checking moxcms v0.8.1 [INFO] [stderr] Checking image v0.25.10 [INFO] [stderr] Checking cairo-rs v0.18.5 [INFO] [stderr] Checking atk v0.18.2 [INFO] [stderr] Checking javascriptcore-rs v1.1.2 [INFO] [stderr] Compiling tauri-build v2.5.6 [INFO] [stderr] Compiling tauri-plugin v2.5.4 [INFO] [stderr] Compiling tauri-codegen v2.5.5 [INFO] [stderr] Compiling tauri v2.10.3 [INFO] [stderr] Compiling tauri-plugin-shell v2.3.5 [INFO] [stderr] Compiling tauri-macros v2.5.5 [INFO] [stderr] Compiling bilistream-tauri v0.5.0 (/opt/rustwide/workdir/src-tauri) [INFO] [stderr] Checking pango v0.18.3 [INFO] [stderr] Checking gdk-pixbuf v0.18.5 [INFO] [stderr] Checking soup3 v0.5.0 [INFO] [stderr] Checking gdk v0.18.2 [INFO] [stderr] Checking gdkx11 v0.18.2 [INFO] [stderr] Checking tokio-native-tls v0.3.1 [INFO] [stderr] Checking tungstenite v0.20.1 [INFO] [stderr] Checking hyper-tls v0.5.0 [INFO] [stderr] Checking reqwest v0.11.27 [INFO] [stderr] Checking tokio-tungstenite v0.20.1 [INFO] [stderr] Checking reqwest-middleware v0.2.5 [INFO] [stderr] Checking riven v2.78.0 [INFO] [stderr] Checking reqwest-retry v0.3.0 [INFO] [stderr] Checking bilistream v0.5.0 (/opt/rustwide/workdir) [INFO] [stderr] Checking webkit2gtk v2.0.2 [INFO] [stderr] Checking muda v0.17.1 [INFO] [stderr] Checking libappindicator v0.9.0 [INFO] [stderr] Checking tao v0.34.6 [INFO] [stderr] Checking tray-icon v0.21.3 [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/plugins/bilibili.rs:115:19 [INFO] [stdout] | [INFO] [stdout] 115 | let wbi_img = nav_data [INFO] [stdout] | ___________________^ [INFO] [stdout] 116 | | .get("data") [INFO] [stdout] 117 | | .and_then(|d| d.get("wbi_img")) [INFO] [stdout] 118 | | .ok_or_else(|| "Missing wbi_img in nav response")?; [INFO] [stdout] | |_________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] = note: `#[warn(clippy::unnecessary_lazy_evaluations)]` on by default [INFO] [stdout] help: use `ok_or` instead [INFO] [stdout] | [INFO] [stdout] 118 - .ok_or_else(|| "Missing wbi_img in nav response")?; [INFO] [stdout] 118 + .ok_or("Missing wbi_img in nav response")?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/plugins/bilibili.rs:120:19 [INFO] [stdout] | [INFO] [stdout] 120 | let img_url = wbi_img [INFO] [stdout] | ___________________^ [INFO] [stdout] 121 | | .get("img_url") [INFO] [stdout] 122 | | .and_then(|v| v.as_str()) [INFO] [stdout] 123 | | .ok_or_else(|| "Missing img_url in wbi_img")?; [INFO] [stdout] | |____________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] help: use `ok_or` instead [INFO] [stdout] | [INFO] [stdout] 123 - .ok_or_else(|| "Missing img_url in wbi_img")?; [INFO] [stdout] 123 + .ok_or("Missing img_url in wbi_img")?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/plugins/bilibili.rs:125:19 [INFO] [stdout] | [INFO] [stdout] 125 | let sub_url = wbi_img [INFO] [stdout] | ___________________^ [INFO] [stdout] 126 | | .get("sub_url") [INFO] [stdout] 127 | | .and_then(|v| v.as_str()) [INFO] [stdout] 128 | | .ok_or_else(|| "Missing sub_url in wbi_img")?; [INFO] [stdout] | |____________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] help: use `ok_or` instead [INFO] [stdout] | [INFO] [stdout] 128 - .ok_or_else(|| "Missing sub_url in wbi_img")?; [INFO] [stdout] 128 + .ok_or("Missing sub_url in wbi_img")?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> src/plugins/bilibili.rs:130:19 [INFO] [stdout] | [INFO] [stdout] 130 | let img_key = img_url [INFO] [stdout] | ___________________^ [INFO] [stdout] 131 | | .split('/') [INFO] [stdout] 132 | | .last() [INFO] [stdout] | |_______________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] = note: `#[warn(clippy::double_ended_iterator_last)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 132 - .last() [INFO] [stdout] 132 + .next_back() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> src/plugins/bilibili.rs:137:19 [INFO] [stdout] | [INFO] [stdout] 137 | let sub_key = sub_url [INFO] [stdout] | ___________________^ [INFO] [stdout] 138 | | .split('/') [INFO] [stdout] 139 | | .last() [INFO] [stdout] | |_______________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 139 - .last() [INFO] [stdout] 139 + .next_back() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/plugins/bilibili.rs:232:14 [INFO] [stdout] | [INFO] [stdout] 232 | .get(&format!( [INFO] [stdout] | ______________^ [INFO] [stdout] 233 | | "https://api.live.bilibili.com/room/v1/Room/get_info?{}", [INFO] [stdout] 234 | | query_string [INFO] [stdout] 235 | | )) [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 232 ~ .get(format!( [INFO] [stdout] 233 + "https://api.live.bilibili.com/room/v1/Room/get_info?{}", [INFO] [stdout] 234 + query_string [INFO] [stdout] 235 ~ )) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Credential` [INFO] [stdout] --> src/plugins/bilibili.rs:822:5 [INFO] [stdout] | [INFO] [stdout] 822 | / pub fn new() -> Self { [INFO] [stdout] 823 | | let mut headers = reqwest::header::HeaderMap::new(); [INFO] [stdout] 824 | | headers.insert( [INFO] [stdout] 825 | | "Referer", [INFO] [stdout] ... | [INFO] [stdout] 828 | | Self(StatefulClient::new(headers)) [INFO] [stdout] 829 | | } [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] 821 + impl Default for Credential { [INFO] [stdout] 822 + fn default() -> Self { [INFO] [stdout] 823 + Self::new() [INFO] [stdout] 824 + } [INFO] [stdout] 825 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/plugins/bilibili.rs:115:19 [INFO] [stdout] | [INFO] [stdout] 115 | let wbi_img = nav_data [INFO] [stdout] | ___________________^ [INFO] [stdout] 116 | | .get("data") [INFO] [stdout] 117 | | .and_then(|d| d.get("wbi_img")) [INFO] [stdout] 118 | | .ok_or_else(|| "Missing wbi_img in nav response")?; [INFO] [stdout] | |_________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] = note: `#[warn(clippy::unnecessary_lazy_evaluations)]` on by default [INFO] [stdout] help: use `ok_or` instead [INFO] [stdout] | [INFO] [stdout] 118 - .ok_or_else(|| "Missing wbi_img in nav response")?; [INFO] [stdout] 118 + .ok_or("Missing wbi_img in nav response")?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/plugins/bilibili.rs:120:19 [INFO] [stdout] | [INFO] [stdout] 120 | let img_url = wbi_img [INFO] [stdout] | ___________________^ [INFO] [stdout] 121 | | .get("img_url") [INFO] [stdout] 122 | | .and_then(|v| v.as_str()) [INFO] [stdout] 123 | | .ok_or_else(|| "Missing img_url in wbi_img")?; [INFO] [stdout] | |____________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] help: use `ok_or` instead [INFO] [stdout] | [INFO] [stdout] 123 - .ok_or_else(|| "Missing img_url in wbi_img")?; [INFO] [stdout] 123 + .ok_or("Missing img_url in wbi_img")?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/plugins/bilibili.rs:125:19 [INFO] [stdout] | [INFO] [stdout] 125 | let sub_url = wbi_img [INFO] [stdout] | ___________________^ [INFO] [stdout] 126 | | .get("sub_url") [INFO] [stdout] 127 | | .and_then(|v| v.as_str()) [INFO] [stdout] 128 | | .ok_or_else(|| "Missing sub_url in wbi_img")?; [INFO] [stdout] | |____________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] help: use `ok_or` instead [INFO] [stdout] | [INFO] [stdout] 128 - .ok_or_else(|| "Missing sub_url in wbi_img")?; [INFO] [stdout] 128 + .ok_or("Missing sub_url in wbi_img")?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> src/plugins/bilibili.rs:130:19 [INFO] [stdout] | [INFO] [stdout] 130 | let img_key = img_url [INFO] [stdout] | ___________________^ [INFO] [stdout] 131 | | .split('/') [INFO] [stdout] 132 | | .last() [INFO] [stdout] | |_______________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] = note: `#[warn(clippy::double_ended_iterator_last)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 132 - .last() [INFO] [stdout] 132 + .next_back() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> src/plugins/bilibili.rs:137:19 [INFO] [stdout] | [INFO] [stdout] 137 | let sub_key = sub_url [INFO] [stdout] | ___________________^ [INFO] [stdout] 138 | | .split('/') [INFO] [stdout] 139 | | .last() [INFO] [stdout] | |_______________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 139 - .last() [INFO] [stdout] 139 + .next_back() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/plugins/bilibili.rs:232:14 [INFO] [stdout] | [INFO] [stdout] 232 | .get(&format!( [INFO] [stdout] | ______________^ [INFO] [stdout] 233 | | "https://api.live.bilibili.com/room/v1/Room/get_info?{}", [INFO] [stdout] 234 | | query_string [INFO] [stdout] 235 | | )) [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 232 ~ .get(format!( [INFO] [stdout] 233 + "https://api.live.bilibili.com/room/v1/Room/get_info?{}", [INFO] [stdout] 234 + query_string [INFO] [stdout] 235 ~ )) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/plugins/danmaku.rs:263:22 [INFO] [stdout] | [INFO] [stdout] 263 | .map_err(|e| io::Error::new(io::ErrorKind::Other, e))?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] = note: `#[warn(clippy::io_other_error)]` on by default [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 263 - .map_err(|e| io::Error::new(io::ErrorKind::Other, e))?; [INFO] [stdout] 263 + .map_err(|e| io::Error::other(e))?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/plugins/danmaku.rs:668:17 [INFO] [stdout] | [INFO] [stdout] 668 | return; [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] 667 ~ let _ = bilibili::send_danmaku(&cfg, &format!("错误:更新配置时出错 {}", e)).await; [INFO] [stdout] 668 | } [INFO] [stdout] 669 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of left operand [INFO] [stdout] --> src/plugins/danmaku.rs:493:32 [INFO] [stdout] | [INFO] [stdout] 493 | ... || &config.youtube.channel_name != channel_name.as_deref().unwrap() [INFO] [stdout] | ----------------------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: use the left value directly: `config.youtube.channel_name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] = note: `#[warn(clippy::op_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of left operand [INFO] [stdout] --> src/plugins/danmaku.rs:497:32 [INFO] [stdout] | [INFO] [stdout] 497 | ... || &config.twitch.channel_name != channel_name.as_deref().unwrap() [INFO] [stdout] | ---------------------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: use the left value directly: `config.twitch.channel_name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Credential` [INFO] [stdout] --> src/plugins/bilibili.rs:822:5 [INFO] [stdout] | [INFO] [stdout] 822 | / pub fn new() -> Self { [INFO] [stdout] 823 | | let mut headers = reqwest::header::HeaderMap::new(); [INFO] [stdout] 824 | | headers.insert( [INFO] [stdout] 825 | | "Referer", [INFO] [stdout] ... | [INFO] [stdout] 828 | | Self(StatefulClient::new(headers)) [INFO] [stdout] 829 | | } [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] 821 + impl Default for Credential { [INFO] [stdout] 822 + fn default() -> Self { [INFO] [stdout] 823 + Self::new() [INFO] [stdout] 824 + } [INFO] [stdout] 825 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/plugins/danmaku.rs:636:13 [INFO] [stdout] | [INFO] [stdout] 636 | &channel_id_str, [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `channel_id_str` [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 can be `std::io::Error::other(_)` [INFO] [stdout] --> src/plugins/danmaku.rs:263:22 [INFO] [stdout] | [INFO] [stdout] 263 | .map_err(|e| io::Error::new(io::ErrorKind::Other, e))?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] = note: `#[warn(clippy::io_other_error)]` on by default [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 263 - .map_err(|e| io::Error::new(io::ErrorKind::Other, e))?; [INFO] [stdout] 263 + .map_err(|e| io::Error::other(e))?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/plugins/danmaku.rs:668:17 [INFO] [stdout] | [INFO] [stdout] 668 | return; [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] 667 ~ let _ = bilibili::send_danmaku(&cfg, &format!("错误:更新配置时出错 {}", e)).await; [INFO] [stdout] 668 | } [INFO] [stdout] 669 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/plugins/danmaku_client.rs:178:29 [INFO] [stdout] | [INFO] [stdout] 178 | / ... if last_activity.elapsed() > connection_timeout { [INFO] [stdout] 179 | | ... warn!("Connection timeout - no activity for {:?}", connection_timeout); [INFO] [stdout] 180 | | ... break; [INFO] [stdout] 181 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 176 ~ Err(_) [INFO] [stdout] 177 | // Timeout occurred - check if connection is still alive [INFO] [stdout] 178 ~ if last_activity.elapsed() > connection_timeout => { [INFO] [stdout] 179 | warn!("Connection timeout - no activity for {:?}", connection_timeout); [INFO] [stdout] 180 | break; [INFO] [stdout] 181 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> src/plugins/danmaku_client.rs:294:23 [INFO] [stdout] | [INFO] [stdout] 294 | let img_key = img_url [INFO] [stdout] | _______________________^ [INFO] [stdout] 295 | | .split('/') [INFO] [stdout] 296 | | .last() [INFO] [stdout] | |___________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 296 - .last() [INFO] [stdout] 296 + .next_back() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> src/plugins/danmaku_client.rs:300:23 [INFO] [stdout] | [INFO] [stdout] 300 | let sub_key = sub_url [INFO] [stdout] | _______________________^ [INFO] [stdout] 301 | | .split('/') [INFO] [stdout] 302 | | .last() [INFO] [stdout] | |___________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 302 - .last() [INFO] [stdout] 302 + .next_back() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of left operand [INFO] [stdout] --> src/plugins/danmaku.rs:493:32 [INFO] [stdout] | [INFO] [stdout] 493 | ... || &config.youtube.channel_name != channel_name.as_deref().unwrap() [INFO] [stdout] | ----------------------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: use the left value directly: `config.youtube.channel_name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] = note: `#[warn(clippy::op_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of left operand [INFO] [stdout] --> src/plugins/danmaku.rs:497:32 [INFO] [stdout] | [INFO] [stdout] 497 | ... || &config.twitch.channel_name != channel_name.as_deref().unwrap() [INFO] [stdout] | ---------------------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: use the left value directly: `config.twitch.channel_name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/plugins/danmaku_client.rs:370:18 [INFO] [stdout] | [INFO] [stdout] 370 | .get(&format!( [INFO] [stdout] | __________________^ [INFO] [stdout] 371 | | "https://api.live.bilibili.com/xlive/web-room/v1/index/getDanmuInfo?{}", [INFO] [stdout] 372 | | query_string [INFO] [stdout] 373 | | )) [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 370 ~ .get(format!( [INFO] [stdout] 371 + "https://api.live.bilibili.com/xlive/web-room/v1/index/getDanmuInfo?{}", [INFO] [stdout] 372 + query_string [INFO] [stdout] 373 ~ )) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `u.get(0)` [INFO] [stdout] --> src/plugins/danmaku_client.rs:561:47 [INFO] [stdout] | [INFO] [stdout] 561 | ... .and_then(|u| u.get(0)) [INFO] [stdout] | ^^^^^^^^ help: try: `u.first()` [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] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/plugins/danmaku.rs:636:13 [INFO] [stdout] | [INFO] [stdout] 636 | &channel_id_str, [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `channel_id_str` [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 `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/plugins/danmaku_client.rs:178:29 [INFO] [stdout] | [INFO] [stdout] 178 | / ... if last_activity.elapsed() > connection_timeout { [INFO] [stdout] 179 | | ... warn!("Connection timeout - no activity for {:?}", connection_timeout); [INFO] [stdout] 180 | | ... break; [INFO] [stdout] 181 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 176 ~ Err(_) [INFO] [stdout] 177 | // Timeout occurred - check if connection is still alive [INFO] [stdout] 178 ~ if last_activity.elapsed() > connection_timeout => { [INFO] [stdout] 179 | warn!("Connection timeout - no activity for {:?}", connection_timeout); [INFO] [stdout] 180 | break; [INFO] [stdout] 181 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> src/plugins/danmaku_client.rs:294:23 [INFO] [stdout] | [INFO] [stdout] 294 | let img_key = img_url [INFO] [stdout] | _______________________^ [INFO] [stdout] 295 | | .split('/') [INFO] [stdout] 296 | | .last() [INFO] [stdout] | |___________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 296 - .last() [INFO] [stdout] 296 + .next_back() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> src/plugins/danmaku_client.rs:300:23 [INFO] [stdout] | [INFO] [stdout] 300 | let sub_key = sub_url [INFO] [stdout] | _______________________^ [INFO] [stdout] 301 | | .split('/') [INFO] [stdout] 302 | | .last() [INFO] [stdout] | |___________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 302 - .last() [INFO] [stdout] 302 + .next_back() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/plugins/danmaku_client.rs:370:18 [INFO] [stdout] | [INFO] [stdout] 370 | .get(&format!( [INFO] [stdout] | __________________^ [INFO] [stdout] 371 | | "https://api.live.bilibili.com/xlive/web-room/v1/index/getDanmuInfo?{}", [INFO] [stdout] 372 | | query_string [INFO] [stdout] 373 | | )) [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 370 ~ .get(format!( [INFO] [stdout] 371 + "https://api.live.bilibili.com/xlive/web-room/v1/index/getDanmuInfo?{}", [INFO] [stdout] 372 + query_string [INFO] [stdout] 373 ~ )) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `u.get(0)` [INFO] [stdout] --> src/plugins/danmaku_client.rs:561:47 [INFO] [stdout] | [INFO] [stdout] 561 | ... .and_then(|u| u.get(0)) [INFO] [stdout] | ^^^^^^^^ help: try: `u.first()` [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] [INFO] [stdout] [INFO] [stdout] warning: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/plugins/youtube.rs:113:9 [INFO] [stdout] | [INFO] [stdout] 113 | Ok(get_youtube_status(&self.channel_id).await?) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] = note: `#[warn(clippy::needless_question_mark)]` on by default [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 113 - Ok(get_youtube_status(&self.channel_id).await?) [INFO] [stdout] 113 + get_youtube_status(&self.channel_id).await [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> src/plugins/youtube.rs:444:21 [INFO] [stdout] | [INFO] [stdout] 444 | let title = title_str [INFO] [stdout] | _____________________^ [INFO] [stdout] 445 | | .lines() [INFO] [stdout] 446 | | .filter(|line| { [INFO] [stdout] 447 | | !line.trim().is_empty() [INFO] [stdout] ... | [INFO] [stdout] 450 | | }) [INFO] [stdout] 451 | | .last() [INFO] [stdout] | |___________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 451 - .last() [INFO] [stdout] 451 + .next_back() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/updater.rs:75:6 [INFO] [stdout] | [INFO] [stdout] 75 | ) -> Result<(Option, Option, Option), Box> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&PathBuf` instead of `&Path` involves a new object where a slice will do [INFO] [stdout] --> src/updater.rs:310:18 [INFO] [stdout] | [INFO] [stdout] 310 | install_dir: &PathBuf, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 310 - install_dir: &PathBuf, [INFO] [stdout] 310 + install_dir: &Path, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/plugins/youtube.rs:113:9 [INFO] [stdout] | [INFO] [stdout] 113 | Ok(get_youtube_status(&self.channel_id).await?) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] = note: `#[warn(clippy::needless_question_mark)]` on by default [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 113 - Ok(get_youtube_status(&self.channel_id).await?) [INFO] [stdout] 113 + get_youtube_status(&self.channel_id).await [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> src/plugins/youtube.rs:444:21 [INFO] [stdout] | [INFO] [stdout] 444 | let title = title_str [INFO] [stdout] | _____________________^ [INFO] [stdout] 445 | | .lines() [INFO] [stdout] 446 | | .filter(|line| { [INFO] [stdout] 447 | | !line.trim().is_empty() [INFO] [stdout] ... | [INFO] [stdout] 450 | | }) [INFO] [stdout] 451 | | .last() [INFO] [stdout] | |___________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 451 - .last() [INFO] [stdout] 451 + .next_back() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/updater.rs:75:6 [INFO] [stdout] | [INFO] [stdout] 75 | ) -> Result<(Option, Option, Option), Box> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stdout] --> src/webui/api.rs:1350:28 [INFO] [stdout] | [INFO] [stdout] 1350 | if let Ok(_) = std::fs::write(&restart_script, script_content) { [INFO] [stdout] | -------^^^^^-------------------------------------------------- help: try: `if std::fs::write(&restart_script, script_content).is_ok()` [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] [INFO] [stdout] [INFO] [stdout] warning: writing `&PathBuf` instead of `&Path` involves a new object where a slice will do [INFO] [stdout] --> src/updater.rs:310:18 [INFO] [stdout] | [INFO] [stdout] 310 | install_dir: &PathBuf, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 310 - install_dir: &PathBuf, [INFO] [stdout] 310 + install_dir: &Path, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stdout] --> src/webui/api.rs:1350:28 [INFO] [stdout] | [INFO] [stdout] 1350 | if let Ok(_) = std::fs::write(&restart_script, script_content) { [INFO] [stdout] | -------^^^^^-------------------------------------------------- help: try: `if std::fs::write(&restart_script, script_content).is_ok()` [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] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/main.rs:32:1 [INFO] [stdout] | [INFO] [stdout] 32 | use textwrap; [INFO] [stdout] | ^^^^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] = note: `#[warn(clippy::single_component_path_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/main.rs:32:1 [INFO] [stdout] | [INFO] [stdout] 32 | use textwrap; [INFO] [stdout] | ^^^^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] = note: `#[warn(clippy::single_component_path_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/main.rs:45:24 [INFO] [stdout] | [INFO] [stdout] 45 | static LAST_COLLISION: Mutex, i32, Box)>> = Mutex::new(None); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `yot_area` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:403:47 [INFO] [stdout] | [INFO] [stdout] 402 | if yot_area.is_some() && title.is_some() { [INFO] [stdout] | ------------------ the check is happening here [INFO] [stdout] 403 | title = Some(format!("{} {}", yot_area.unwrap(), title.unwrap())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `scheduled_start` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:836:30 [INFO] [stdout] | [INFO] [stdout] 831 | if scheduled_start.is_some() { [INFO] [stdout] | ---------------------------- help: try: `if let Some() = scheduled_start` [INFO] [stdout] ... [INFO] [stdout] 836 | Some(scheduled_start.unwrap()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `yt_title` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:837:31 [INFO] [stdout] | [INFO] [stdout] 832 | if yt_title.is_some() { [INFO] [stdout] | --------------------- help: try: `if let Some() = yt_title` [INFO] [stdout] ... [INFO] [stdout] 837 | Some(&yt_title.unwrap()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/main.rs:171:17 [INFO] [stdout] | [INFO] [stdout] 171 | / if scheduled_start.is_some() { [INFO] [stdout] 172 | | if scheduled_start.unwrap() [INFO] [stdout] 173 | | > Local::now() + Duration::from_secs(2 * 24 * 60 * 60) [INFO] [stdout] ... | [INFO] [stdout] 177 | | } [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] 171 ~ if scheduled_start.is_some() [INFO] [stdout] 172 ~ && scheduled_start.unwrap() [INFO] [stdout] 173 | > Local::now() + Duration::from_secs(2 * 24 * 60 * 60) [INFO] [stdout] 174 | { [INFO] [stdout] 175 | scheduled_start = None; [INFO] [stdout] 176 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/main.rs:410:20 [INFO] [stdout] | [INFO] [stdout] 410 | if puuid != "" { [INFO] [stdout] | ^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!puuid.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] = note: `#[warn(clippy::comparison_to_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/main.rs:418:27 [INFO] [stdout] | [INFO] [stdout] 418 | .find(|k| title.as_ref().map_or(false, |t| t.contains(k.as_str()))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 418 - .find(|k| title.as_ref().map_or(false, |t| t.contains(k.as_str()))) [INFO] [stdout] 418 + .find(|k| title.as_ref().is_some_and(|t| t.contains(k.as_str()))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/main.rs:45:24 [INFO] [stdout] | [INFO] [stdout] 45 | static LAST_COLLISION: Mutex, i32, Box)>> = Mutex::new(None); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `yot_area` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:403:47 [INFO] [stdout] | [INFO] [stdout] 402 | if yot_area.is_some() && title.is_some() { [INFO] [stdout] | ------------------ the check is happening here [INFO] [stdout] 403 | title = Some(format!("{} {}", yot_area.unwrap(), title.unwrap())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `scheduled_start` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:836:30 [INFO] [stdout] | [INFO] [stdout] 831 | if scheduled_start.is_some() { [INFO] [stdout] | ---------------------------- help: try: `if let Some() = scheduled_start` [INFO] [stdout] ... [INFO] [stdout] 836 | Some(scheduled_start.unwrap()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `yt_title` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:837:31 [INFO] [stdout] | [INFO] [stdout] 832 | if yt_title.is_some() { [INFO] [stdout] | --------------------- help: try: `if let Some() = yt_title` [INFO] [stdout] ... [INFO] [stdout] 837 | Some(&yt_title.unwrap()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/main.rs:171:17 [INFO] [stdout] | [INFO] [stdout] 171 | / if scheduled_start.is_some() { [INFO] [stdout] 172 | | if scheduled_start.unwrap() [INFO] [stdout] 173 | | > Local::now() + Duration::from_secs(2 * 24 * 60 * 60) [INFO] [stdout] ... | [INFO] [stdout] 177 | | } [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] 171 ~ if scheduled_start.is_some() [INFO] [stdout] 172 ~ && scheduled_start.unwrap() [INFO] [stdout] 173 | > Local::now() + Duration::from_secs(2 * 24 * 60 * 60) [INFO] [stdout] 174 | { [INFO] [stdout] 175 | scheduled_start = None; [INFO] [stdout] 176 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/main.rs:410:20 [INFO] [stdout] | [INFO] [stdout] 410 | if puuid != "" { [INFO] [stdout] | ^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!puuid.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] = note: `#[warn(clippy::comparison_to_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/main.rs:418:27 [INFO] [stdout] | [INFO] [stdout] 418 | .find(|k| title.as_ref().map_or(false, |t| t.contains(k.as_str()))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 418 - .find(|k| title.as_ref().map_or(false, |t| t.contains(k.as_str()))) [INFO] [stdout] 418 + .find(|k| title.as_ref().is_some_and(|t| t.contains(k.as_str()))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/main.rs:956:9 [INFO] [stdout] | [INFO] [stdout] 956 | format!("YT: 监听已关闭") [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"YT: 监听已关闭".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: useless use of `format!` [INFO] [stdout] --> src/main.rs:972:9 [INFO] [stdout] | [INFO] [stdout] 972 | format!("TW: 监听已关闭") [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"TW: 监听已关闭".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `start_time` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:1082:25 [INFO] [stdout] | [INFO] [stdout] 1073 | if start_time.is_some() { [INFO] [stdout] | ----------------------- help: try: `if let Some() = start_time` [INFO] [stdout] ... [INFO] [stdout] 1082 | start_time.unwrap().format("%Y-%m-%d %H:%M:%S"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `topic` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:1146:25 [INFO] [stdout] | [INFO] [stdout] 1142 | if topic.is_some() { [INFO] [stdout] | ------------------ help: try: `if let Some() = topic` [INFO] [stdout] ... [INFO] [stdout] 1146 | topic.unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `start_time` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:1166:25 [INFO] [stdout] | [INFO] [stdout] 1157 | if start_time.is_some() { [INFO] [stdout] | ----------------------- help: try: `if let Some() = start_time` [INFO] [stdout] ... [INFO] [stdout] 1166 | start_time.unwrap().format("%Y-%m-%d %H:%M:%S"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `game_data` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:1287:53 [INFO] [stdout] | [INFO] [stdout] 1286 | if game_data.is_some() { [INFO] [stdout] | ---------------------- help: try: `if let Some() = game_data` [INFO] [stdout] 1287 | let riot_ids: Vec = game_data [INFO] [stdout] | _____________________________________________________^ [INFO] [stdout] 1288 | | .unwrap() [INFO] [stdout] | |_____________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:1342:21 [INFO] [stdout] | [INFO] [stdout] 1342 | return; [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] 1341 - if !rt.block_on(ffmpeg::is_ffmpeg_running()) { [INFO] [stdout] 1342 - return; [INFO] [stdout] 1341 + if !rt.block_on(ffmpeg::is_ffmpeg_running()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `area_name` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:1361:17 [INFO] [stdout] | [INFO] [stdout] 1358 | if area_name.is_some() && to_area_name.is_some() { [INFO] [stdout] | ------------------- the check is happening here [INFO] [stdout] ... [INFO] [stdout] 1361 | area_name.unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `to_area_name` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:1362:17 [INFO] [stdout] | [INFO] [stdout] 1358 | if area_name.is_some() && to_area_name.is_some() { [INFO] [stdout] | ---------------------- the check is happening here [INFO] [stdout] ... [INFO] [stdout] 1362 | to_area_name.unwrap() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `MutexGuard` is held across an await point [INFO] [stdout] --> src/main.rs:1551:9 [INFO] [stdout] | [INFO] [stdout] 1551 | let mut last_collision = LAST_COLLISION.lock().unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling `await` [INFO] [stdout] note: these are all the await points this lock is held through [INFO] [stdout] --> src/main.rs:1579:14 [INFO] [stdout] | [INFO] [stdout] 1579 | .await [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1584 | tokio::time::sleep(Duration::from_secs(2)).await; [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1594 | .await [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1599 | tokio::time::sleep(Duration::from_secs(2)).await; [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1604 | tokio::time::sleep(Duration::from_secs(2)).await; [INFO] [stdout] | ^^^^^ [INFO] [stdout] 1605 | if let Err(e) = send_danmaku(&cfg, "撞车:可使用弹幕指令进行换台").await [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1610 | tokio::time::sleep(Duration::from_secs(30)).await; [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1653 | .await [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1657 | tokio::time::sleep(Duration::from_secs(2)).await; [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1662 | tokio::time::sleep(Duration::from_secs(2)).await; [INFO] [stdout] | ^^^^^ [INFO] [stdout] 1663 | if let Err(e) = send_danmaku(&cfg, "撞车:可使用弹幕指令进行换台").await [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1668 | tokio::time::sleep(Duration::from_secs(30)).await; [INFO] [stdout] | ^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#await_holding_lock [INFO] [stdout] = note: `#[warn(clippy::await_holding_lock)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `yt_collision` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:1553:22 [INFO] [stdout] | [INFO] [stdout] 1552 | if yt_collision.is_some() && tw_collision.is_some() { [INFO] [stdout] | ---------------------- the check is happening here [INFO] [stdout] 1553 | let yt_col = yt_collision.as_ref().unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `yt_collision` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:1574:21 [INFO] [stdout] | [INFO] [stdout] 1552 | if yt_collision.is_some() && tw_collision.is_some() { [INFO] [stdout] | ---------------------- the check is happening here [INFO] [stdout] ... [INFO] [stdout] 1574 | yt_collision.as_ref().unwrap().0, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `yt_collision` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:1575:21 [INFO] [stdout] | [INFO] [stdout] 1552 | if yt_collision.is_some() && tw_collision.is_some() { [INFO] [stdout] | ---------------------- the check is happening here [INFO] [stdout] ... [INFO] [stdout] 1575 | yt_collision.as_ref().unwrap().1, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `yt_collision` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:1576:21 [INFO] [stdout] | [INFO] [stdout] 1552 | if yt_collision.is_some() && tw_collision.is_some() { [INFO] [stdout] | ---------------------- the check is happening here [INFO] [stdout] ... [INFO] [stdout] 1576 | yt_collision.as_ref().unwrap().2, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `yt_collision` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:1583:16 [INFO] [stdout] | [INFO] [stdout] 1552 | if yt_collision.is_some() && tw_collision.is_some() { [INFO] [stdout] | ---------------------- the check is happening here [INFO] [stdout] ... [INFO] [stdout] 1583 | if yt_collision.as_ref().unwrap().0 != tw_collision.as_ref().unwrap().0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `tw_collision` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:1583:52 [INFO] [stdout] | [INFO] [stdout] 1552 | if yt_collision.is_some() && tw_collision.is_some() { [INFO] [stdout] | ---------------------- the check is happening here [INFO] [stdout] ... [INFO] [stdout] 1583 | if yt_collision.as_ref().unwrap().0 != tw_collision.as_ref().unwrap().0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `tw_collision` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:1589:25 [INFO] [stdout] | [INFO] [stdout] 1552 | if yt_collision.is_some() && tw_collision.is_some() { [INFO] [stdout] | ---------------------- the check is happening here [INFO] [stdout] ... [INFO] [stdout] 1589 | tw_collision.as_ref().unwrap().0, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `tw_collision` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:1590:25 [INFO] [stdout] | [INFO] [stdout] 1552 | if yt_collision.is_some() && tw_collision.is_some() { [INFO] [stdout] | ---------------------- the check is happening here [INFO] [stdout] ... [INFO] [stdout] 1590 | tw_collision.as_ref().unwrap().1, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `tw_collision` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:1591:25 [INFO] [stdout] | [INFO] [stdout] 1552 | if yt_collision.is_some() && tw_collision.is_some() { [INFO] [stdout] | ---------------------- the check is happening here [INFO] [stdout] ... [INFO] [stdout] 1591 | tw_collision.as_ref().unwrap().2, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `platform` after checking its variant with `is_none` [INFO] [stdout] --> src/main.rs:2311:33 [INFO] [stdout] | [INFO] [stdout] 2308 | if platform.is_none() { [INFO] [stdout] | --------------------- help: try: `if let Some() = platform` [INFO] [stdout] ... [INFO] [stdout] 2311 | start_live(Some(platform.unwrap())).await?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `current_area_name` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:2365:29 [INFO] [stdout] | [INFO] [stdout] 2362 | if current_area_name.is_some() && area_name.is_some() { [INFO] [stdout] | --------------------------- the check is happening here [INFO] [stdout] ... [INFO] [stdout] 2365 | current_area_name.unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `area_name` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:2366:29 [INFO] [stdout] | [INFO] [stdout] 2362 | if current_area_name.is_some() && area_name.is_some() { [INFO] [stdout] | ------------------- the check is happening here [INFO] [stdout] ... [INFO] [stdout] 2366 | area_name.unwrap() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/main.rs:956:9 [INFO] [stdout] | [INFO] [stdout] 956 | format!("YT: 监听已关闭") [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"YT: 监听已关闭".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: useless use of `format!` [INFO] [stdout] --> src/main.rs:972:9 [INFO] [stdout] | [INFO] [stdout] 972 | format!("TW: 监听已关闭") [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"TW: 监听已关闭".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `start_time` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:1082:25 [INFO] [stdout] | [INFO] [stdout] 1073 | if start_time.is_some() { [INFO] [stdout] | ----------------------- help: try: `if let Some() = start_time` [INFO] [stdout] ... [INFO] [stdout] 1082 | start_time.unwrap().format("%Y-%m-%d %H:%M:%S"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `topic` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:1146:25 [INFO] [stdout] | [INFO] [stdout] 1142 | if topic.is_some() { [INFO] [stdout] | ------------------ help: try: `if let Some() = topic` [INFO] [stdout] ... [INFO] [stdout] 1146 | topic.unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `start_time` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:1166:25 [INFO] [stdout] | [INFO] [stdout] 1157 | if start_time.is_some() { [INFO] [stdout] | ----------------------- help: try: `if let Some() = start_time` [INFO] [stdout] ... [INFO] [stdout] 1166 | start_time.unwrap().format("%Y-%m-%d %H:%M:%S"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `game_data` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:1287:53 [INFO] [stdout] | [INFO] [stdout] 1286 | if game_data.is_some() { [INFO] [stdout] | ---------------------- help: try: `if let Some() = game_data` [INFO] [stdout] 1287 | let riot_ids: Vec = game_data [INFO] [stdout] | _____________________________________________________^ [INFO] [stdout] 1288 | | .unwrap() [INFO] [stdout] | |_____________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:1342:21 [INFO] [stdout] | [INFO] [stdout] 1342 | return; [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] 1341 - if !rt.block_on(ffmpeg::is_ffmpeg_running()) { [INFO] [stdout] 1342 - return; [INFO] [stdout] 1341 + if !rt.block_on(ffmpeg::is_ffmpeg_running()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `area_name` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:1361:17 [INFO] [stdout] | [INFO] [stdout] 1358 | if area_name.is_some() && to_area_name.is_some() { [INFO] [stdout] | ------------------- the check is happening here [INFO] [stdout] ... [INFO] [stdout] 1361 | area_name.unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `to_area_name` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:1362:17 [INFO] [stdout] | [INFO] [stdout] 1358 | if area_name.is_some() && to_area_name.is_some() { [INFO] [stdout] | ---------------------- the check is happening here [INFO] [stdout] ... [INFO] [stdout] 1362 | to_area_name.unwrap() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `MutexGuard` is held across an await point [INFO] [stdout] --> src/main.rs:1551:9 [INFO] [stdout] | [INFO] [stdout] 1551 | let mut last_collision = LAST_COLLISION.lock().unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider using an async-aware `Mutex` type or ensuring the `MutexGuard` is dropped before calling `await` [INFO] [stdout] note: these are all the await points this lock is held through [INFO] [stdout] --> src/main.rs:1579:14 [INFO] [stdout] | [INFO] [stdout] 1579 | .await [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1584 | tokio::time::sleep(Duration::from_secs(2)).await; [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1594 | .await [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1599 | tokio::time::sleep(Duration::from_secs(2)).await; [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1604 | tokio::time::sleep(Duration::from_secs(2)).await; [INFO] [stdout] | ^^^^^ [INFO] [stdout] 1605 | if let Err(e) = send_danmaku(&cfg, "撞车:可使用弹幕指令进行换台").await [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1610 | tokio::time::sleep(Duration::from_secs(30)).await; [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1653 | .await [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1657 | tokio::time::sleep(Duration::from_secs(2)).await; [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1662 | tokio::time::sleep(Duration::from_secs(2)).await; [INFO] [stdout] | ^^^^^ [INFO] [stdout] 1663 | if let Err(e) = send_danmaku(&cfg, "撞车:可使用弹幕指令进行换台").await [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1668 | tokio::time::sleep(Duration::from_secs(30)).await; [INFO] [stdout] | ^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#await_holding_lock [INFO] [stdout] = note: `#[warn(clippy::await_holding_lock)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `yt_collision` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:1553:22 [INFO] [stdout] | [INFO] [stdout] 1552 | if yt_collision.is_some() && tw_collision.is_some() { [INFO] [stdout] | ---------------------- the check is happening here [INFO] [stdout] 1553 | let yt_col = yt_collision.as_ref().unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `yt_collision` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:1574:21 [INFO] [stdout] | [INFO] [stdout] 1552 | if yt_collision.is_some() && tw_collision.is_some() { [INFO] [stdout] | ---------------------- the check is happening here [INFO] [stdout] ... [INFO] [stdout] 1574 | yt_collision.as_ref().unwrap().0, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `yt_collision` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:1575:21 [INFO] [stdout] | [INFO] [stdout] 1552 | if yt_collision.is_some() && tw_collision.is_some() { [INFO] [stdout] | ---------------------- the check is happening here [INFO] [stdout] ... [INFO] [stdout] 1575 | yt_collision.as_ref().unwrap().1, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `yt_collision` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:1576:21 [INFO] [stdout] | [INFO] [stdout] 1552 | if yt_collision.is_some() && tw_collision.is_some() { [INFO] [stdout] | ---------------------- the check is happening here [INFO] [stdout] ... [INFO] [stdout] 1576 | yt_collision.as_ref().unwrap().2, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `yt_collision` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:1583:16 [INFO] [stdout] | [INFO] [stdout] 1552 | if yt_collision.is_some() && tw_collision.is_some() { [INFO] [stdout] | ---------------------- the check is happening here [INFO] [stdout] ... [INFO] [stdout] 1583 | if yt_collision.as_ref().unwrap().0 != tw_collision.as_ref().unwrap().0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `tw_collision` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:1583:52 [INFO] [stdout] | [INFO] [stdout] 1552 | if yt_collision.is_some() && tw_collision.is_some() { [INFO] [stdout] | ---------------------- the check is happening here [INFO] [stdout] ... [INFO] [stdout] 1583 | if yt_collision.as_ref().unwrap().0 != tw_collision.as_ref().unwrap().0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `tw_collision` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:1589:25 [INFO] [stdout] | [INFO] [stdout] 1552 | if yt_collision.is_some() && tw_collision.is_some() { [INFO] [stdout] | ---------------------- the check is happening here [INFO] [stdout] ... [INFO] [stdout] 1589 | tw_collision.as_ref().unwrap().0, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `tw_collision` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:1590:25 [INFO] [stdout] | [INFO] [stdout] 1552 | if yt_collision.is_some() && tw_collision.is_some() { [INFO] [stdout] | ---------------------- the check is happening here [INFO] [stdout] ... [INFO] [stdout] 1590 | tw_collision.as_ref().unwrap().1, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `tw_collision` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:1591:25 [INFO] [stdout] | [INFO] [stdout] 1552 | if yt_collision.is_some() && tw_collision.is_some() { [INFO] [stdout] | ---------------------- the check is happening here [INFO] [stdout] ... [INFO] [stdout] 1591 | tw_collision.as_ref().unwrap().2, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `platform` after checking its variant with `is_none` [INFO] [stdout] --> src/main.rs:2311:33 [INFO] [stdout] | [INFO] [stdout] 2308 | if platform.is_none() { [INFO] [stdout] | --------------------- help: try: `if let Some() = platform` [INFO] [stdout] ... [INFO] [stdout] 2311 | start_live(Some(platform.unwrap())).await?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `current_area_name` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:2365:29 [INFO] [stdout] | [INFO] [stdout] 2362 | if current_area_name.is_some() && area_name.is_some() { [INFO] [stdout] | --------------------------- the check is happening here [INFO] [stdout] ... [INFO] [stdout] 2365 | current_area_name.unwrap(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `area_name` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:2366:29 [INFO] [stdout] | [INFO] [stdout] 2362 | if current_area_name.is_some() && area_name.is_some() { [INFO] [stdout] | ------------------- the check is happening here [INFO] [stdout] ... [INFO] [stdout] 2366 | area_name.unwrap() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 4m 22s [INFO] running `Command { std: "docker" "inspect" "919a0cd2d21291f4f99f7c0bb41c72a815ac88a8f7a41c34f62ab512d8d9173a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "919a0cd2d21291f4f99f7c0bb41c72a815ac88a8f7a41c34f62ab512d8d9173a", kill_on_drop: false }` [INFO] [stdout] 919a0cd2d21291f4f99f7c0bb41c72a815ac88a8f7a41c34f62ab512d8d9173a