[INFO] cloning repository https://github.com/DOLLook/looklapi-rs
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/DOLLook/looklapi-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FDOLLook%2Flooklapi-rs", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FDOLLook%2Flooklapi-rs'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 281bfbcc93dfa2a0bf514e27148ba38fbea54849
[INFO] checking DOLLook/looklapi-rs against master#61cc47e367d7be91e13bcd01e4e96e0e233d4f6d for pr-133502-21
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FDOLLook%2Flooklapi-rs" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/DOLLook/looklapi-rs
[INFO] finished tweaking git repo https://github.com/DOLLook/looklapi-rs
[INFO] tweaked toml for git repo https://github.com/DOLLook/looklapi-rs written to /workspace/builds/worker-3-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/DOLLook/looklapi-rs on toolchain 61cc47e367d7be91e13bcd01e4e96e0e233d4f6d
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+61cc47e367d7be91e13bcd01e4e96e0e233d4f6d" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/DOLLook/looklapi-rs already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+61cc47e367d7be91e13bcd01e4e96e0e233d4f6d" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded critical-section v1.2.0
[INFO] [stderr]   Downloaded wasm-bindgen-macro v0.2.106
[INFO] [stderr]   Downloaded wasm-bindgen v0.2.106
[INFO] [stderr]   Downloaded smart-default v0.7.1
[INFO] [stderr]   Downloaded quote v1.0.43
[INFO] [stderr]   Downloaded wasm-bindgen-shared v0.2.106
[INFO] [stderr]   Downloaded proc-macro2 v1.0.105
[INFO] [stderr]   Downloaded amq-protocol-types v8.3.1
[INFO] [stderr]   Downloaded async-global-executor v3.1.0
[INFO] [stderr]   Downloaded amq-protocol-tcp v8.3.1
[INFO] [stderr]   Downloaded amq-protocol-uri v8.3.1
[INFO] [stderr]   Downloaded from-attr v0.1.3
[INFO] [stderr]   Downloaded cookie-factory v0.3.3
[INFO] [stderr]   Downloaded serde-untagged v0.1.9
[INFO] [stderr]   Downloaded time-core v0.1.7
[INFO] [stderr]   Downloaded zune-core v0.5.0
[INFO] [stderr]   Downloaded multer v3.1.0
[INFO] [stderr]   Downloaded axum-core v0.5.6
[INFO] [stderr]   Downloaded toml v0.9.11+spec-1.1.0
[INFO] [stderr]   Downloaded bytemuck v1.24.0
[INFO] [stderr]   Downloaded ron v0.12.0
[INFO] [stderr]   Downloaded winnow v0.7.14
[INFO] [stderr]   Downloaded axum v0.8.8
[INFO] [stderr]   Downloaded pest v2.8.5
[INFO] [stderr]   Downloaded fontdue v0.7.3
[INFO] [stderr]   Downloaded serde_with v3.16.1
[INFO] [stderr]   Downloaded cms v0.2.3
[INFO] [stderr]   Downloaded time v0.3.45
[INFO] [stderr]   Downloaded moka v0.12.12
[INFO] [stderr]   Downloaded aws-lc-rs v1.15.2
[INFO] [stderr]   Downloaded zerocopy v0.8.33
[INFO] [stderr]   Downloaded webpki-roots v1.0.5
[INFO] [stderr]   Downloaded redis v1.0.2
[INFO] [stderr]   Downloaded tracing-subscriber v0.3.22
[INFO] [stderr]   Downloaded webpki-root-certs v1.0.5
[INFO] [stderr]   Downloaded ureq v3.1.4
[INFO] [stderr]   Downloaded mongodb v3.5.0
[INFO] [stderr]   Downloaded hickory-proto v0.25.2
[INFO] [stderr]   Downloaded hashbrown v0.13.2
[INFO] [stderr]   Downloaded x509-cert v0.2.5
[INFO] [stderr]   Downloaded x509-parser v0.17.0
[INFO] [stderr]   Downloaded portable-atomic v1.13.0
[INFO] [stderr]   Downloaded ttf-parser v0.15.2
[INFO] [stderr]   Downloaded der-parser v10.0.0
[INFO] [stderr]   Downloaded asn1-rs v0.7.1
[INFO] [stderr]   Downloaded lapin v3.7.2
[INFO] [stderr]   Downloaded bson v2.15.0
[INFO] [stderr]   Downloaded hyper-util v0.1.19
[INFO] [stderr]   Downloaded yaml-rust2 v0.10.4
[INFO] [stderr]   Downloaded web-sys v0.3.83
[INFO] [stderr]   Downloaded zune-jpeg v0.5.8
[INFO] [stderr]   Downloaded zerocopy-derive v0.8.33
[INFO] [stderr]   Downloaded rustls-webpki v0.103.8
[INFO] [stderr]   Downloaded cc v1.2.52
[INFO] [stderr]   Downloaded pkcs12 v0.1.0
[INFO] [stderr]   Downloaded p12-keystore v0.2.0
[INFO] [stderr]   Downloaded widestring v1.2.1
[INFO] [stderr]   Downloaded hickory-resolver v0.25.2
[INFO] [stderr]   Downloaded darling_core v0.23.0
[INFO] [stderr]   Downloaded bon-macros v3.8.2
[INFO] [stderr]   Downloaded bytes v1.11.0
[INFO] [stderr]   Downloaded config v0.15.19
[INFO] [stderr]   Downloaded des v0.8.1
[INFO] [stderr]   Downloaded pkcs5 v0.7.1
[INFO] [stderr]   Downloaded polling v3.11.0
[INFO] [stderr]   Downloaded arc-swap v1.8.0
[INFO] [stderr]   Downloaded flate2 v1.1.8
[INFO] [stderr]   Downloaded js-sys v0.3.83
[INFO] [stderr]   Downloaded iana-time-zone v0.1.64
[INFO] [stderr]   Downloaded pest_meta v2.8.5
[INFO] [stderr]   Downloaded pest_generator v2.8.5
[INFO] [stderr]   Downloaded pest_derive v2.8.5
[INFO] [stderr]   Downloaded erased-serde v0.4.9
[INFO] [stderr]   Downloaded toml_parser v1.0.6+spec-1.1.0
[INFO] [stderr]   Downloaded der_derive v0.7.3
[INFO] [stderr]   Downloaded base64ct v1.8.3
[INFO] [stderr]   Downloaded block-padding v0.3.3
[INFO] [stderr]   Downloaded oid-registry v0.8.1
[INFO] [stderr]   Downloaded futures-rustls v0.26.0
[INFO] [stderr]   Downloaded rustls-connector v0.21.11
[INFO] [stderr]   Downloaded tcp-stream v0.30.9
[INFO] [stderr]   Downloaded async-io v2.6.0
[INFO] [stderr]   Downloaded derive-where v1.6.0
[INFO] [stderr]   Downloaded typed-builder-macro v0.22.0
[INFO] [stderr]   Downloaded bon v3.8.2
[INFO] [stderr]   Downloaded slog v2.8.2
[INFO] [stderr]   Downloaded litrs v1.0.0
[INFO] [stderr]   Downloaded cookie_store v0.22.0
[INFO] [stderr]   Downloaded ureq-proto v0.5.3
[INFO] [stderr]   Downloaded rustls-pki-types v1.13.2
[INFO] [stderr]   Downloaded rs-consul v0.13.0
[INFO] [stderr]   Downloaded serde_path_to_error v0.1.20
[INFO] [stderr]   Downloaded rust-ini v0.21.3
[INFO] [stderr]   Downloaded serde_spanned v1.0.4
[INFO] [stderr]   Downloaded toml_datetime v0.7.5+spec-1.1.0
[INFO] [stderr]   Downloaded asn1-rs-derive v0.6.0
[INFO] [stderr]   Downloaded rusticata-macros v4.1.0
[INFO] [stderr]   Downloaded backon v1.6.0
[INFO] [stderr]   Downloaded futures-lite v2.6.1
[INFO] [stderr]   Downloaded serde_with_macros v3.16.1
[INFO] [stderr]   Downloaded unicode-properties v0.1.4
[INFO] [stderr]   Downloaded darling v0.23.0
[INFO] [stderr]   Downloaded slog-scope v4.4.0
[INFO] [stderr]   Downloaded cookie v0.18.1
[INFO] [stderr]   Downloaded inventory v0.3.21
[INFO] [stderr]   Downloaded zmij v1.0.14
[INFO] [stderr]   Downloaded find-msvc-tools v0.1.7
[INFO] [stderr]   Downloaded unicase v2.9.0
[INFO] [stderr]   Downloaded cbc v0.1.2
[INFO] [stderr]   Downloaded rc2 v0.8.1
[INFO] [stderr]   Downloaded piper v0.2.4
[INFO] [stderr]   Downloaded blocking v1.6.2
[INFO] [stderr]   Downloaded data-encoding v2.10.0
[INFO] [stderr]   Downloaded ipconfig v0.3.2
[INFO] [stderr]   Downloaded resolv-conf v0.7.6
[INFO] [stderr]   Downloaded mongocrypt-sys v0.1.5+1.15.1
[INFO] [stderr]   Downloaded mongocrypt v0.3.2
[INFO] [stderr]   Downloaded derive-syn-parse v0.2.0
[INFO] [stderr]   Downloaded serde_bytes v0.11.19
[INFO] [stderr]   Downloaded typed-builder v0.22.0
[INFO] [stderr]   Downloaded arcstr v1.2.0
[INFO] [stderr]   Downloaded wasm-bindgen-futures v0.4.56
[INFO] [stderr]   Downloaded erased-serde v0.3.31
[INFO] [stderr]   Downloaded time-macros v0.2.25
[INFO] [stderr]   Downloaded from-attr-macro v0.1.3
[INFO] [stderr]   Downloaded rudi v0.8.3
[INFO] [stderr]   Downloaded wasm-bindgen-macro-support v0.2.106
[INFO] [stderr]   Downloaded uuid v1.19.0
[INFO] [stderr]   Downloaded flagset v0.4.7
[INFO] [stderr]   Downloaded asn1-rs-impl v0.2.0
[INFO] [stderr]   Downloaded amq-protocol v8.3.1
[INFO] [stderr]   Downloaded async-executor v1.13.3
[INFO] [stderr]   Downloaded reactor-trait v2.8.0
[INFO] [stderr]   Downloaded document-features v0.2.12
[INFO] [stderr]   Downloaded async-global-executor-trait v2.2.0
[INFO] [stderr]   Downloaded executor-trait v3.1.0
[INFO] [stderr]   Downloaded reactor-trait v3.1.1
[INFO] [stderr]   Downloaded crunchy v0.2.4
[INFO] [stderr]   Downloaded macro_magic_core v0.5.1
[INFO] [stderr]   Downloaded crypto-common v0.1.7
[INFO] [stderr]   Downloaded from-attr-core v0.1.3
[INFO] [stderr]   Downloaded rudi-core v0.1.0
[INFO] [stderr]   Downloaded rudi-macro v0.8.3
[INFO] [stderr]   Downloaded async-lock v3.4.2
[INFO] [stderr]   Downloaded async-channel v2.5.0
[INFO] [stderr]   Downloaded async-global-executor-trait v3.1.0
[INFO] [stderr]   Downloaded async-reactor-trait v3.1.1
[INFO] [stderr]   Downloaded mongodb-internal-macros v3.5.0
[INFO] [stderr]   Downloaded winapi-util v0.1.11
[INFO] [stderr]   Downloaded http-range-header v0.4.2
[INFO] [stderr]   Downloaded macro_magic_macros v0.5.1
[INFO] [stderr]   Downloaded macro_magic v0.5.1
[INFO] [stderr]   Downloaded openssl-probe v0.2.0
[INFO] [stderr]   Downloaded executor-trait v2.1.2
[INFO] [stderr]   Downloaded macro_magic_core_macros v0.5.1
[INFO] [stderr]   Downloaded rustc_version_runtime v0.3.0
[INFO] [stderr]   Downloaded darling_macro v0.23.0
[INFO] [stderr]   Downloaded windows-registry v0.6.1
[INFO] [stderr]   Downloaded aws-lc-sys v0.35.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:29356a839a4d14451438f794ce8414e707d72405f44418718d724d22562fe786" "/opt/rustwide/cargo-home/bin/cargo" "+61cc47e367d7be91e13bcd01e4e96e0e233d4f6d" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 844a9ae0290bcba3b8b440df87a5736b8bdb66b4b78ffd66cc5f175d68b7c6ea
[INFO] running `Command { std: "docker" "start" "-a" "844a9ae0290bcba3b8b440df87a5736b8bdb66b4b78ffd66cc5f175d68b7c6ea", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "844a9ae0290bcba3b8b440df87a5736b8bdb66b4b78ffd66cc5f175d68b7c6ea", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "844a9ae0290bcba3b8b440df87a5736b8bdb66b4b78ffd66cc5f175d68b7c6ea", kill_on_drop: false }`
[INFO] [stdout] 844a9ae0290bcba3b8b440df87a5736b8bdb66b4b78ffd66cc5f175d68b7c6ea
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:29356a839a4d14451438f794ce8414e707d72405f44418718d724d22562fe786" "/opt/rustwide/cargo-home/bin/cargo" "+61cc47e367d7be91e13bcd01e4e96e0e233d4f6d" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 27a4a6ff11876739db9615b04c65e81104a66804fbfe9d91f2697fa484fcb995
[INFO] running `Command { std: "docker" "start" "-a" "27a4a6ff11876739db9615b04c65e81104a66804fbfe9d91f2697fa484fcb995", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.105
[INFO] [stderr]    Compiling quote v1.0.43
[INFO] [stderr]    Compiling unicode-ident v1.0.22
[INFO] [stderr]    Compiling libc v0.2.180
[INFO] [stderr]     Checking cfg-if v1.0.4
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling portable-atomic v1.13.0
[INFO] [stderr]     Checking futures-io v0.3.31
[INFO] [stderr]    Compiling find-msvc-tools v0.1.7
[INFO] [stderr]     Checking critical-section v1.2.0
[INFO] [stderr]     Checking itoa v1.0.17
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]     Checking log v0.4.29
[INFO] [stderr]     Checking lock_api v0.4.14
[INFO] [stderr]     Checking stable_deref_trait v1.2.1
[INFO] [stderr]    Compiling typenum v1.19.0
[INFO] [stderr]     Checking zeroize v1.8.2
[INFO] [stderr]     Checking bytes v1.11.0
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking subtle v2.6.1
[INFO] [stderr]    Compiling syn v2.0.114
[INFO] [stderr]     Checking once_cell v1.21.3
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]     Checking generic-array v0.14.7
[INFO] [stderr]    Compiling dunce v1.0.5
[INFO] [stderr]    Compiling zerocopy v0.8.33
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling fs_extra v1.3.0
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]     Checking tracing-core v0.1.36
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking errno v0.3.14
[INFO] [stderr]    Compiling cc v1.2.52
[INFO] [stderr]     Checking crypto-common v0.1.7
[INFO] [stderr]    Compiling thiserror v2.0.17
[INFO] [stderr]     Checking hashbrown v0.16.1
[INFO] [stderr]     Checking signal-hook-registry v1.4.8
[INFO] [stderr]     Checking mio v1.1.1
[INFO] [stderr]     Checking socket2 v0.6.1
[INFO] [stderr]     Checking rustls-pki-types v1.13.2
[INFO] [stderr]    Compiling aws-lc-rs v1.15.2
[INFO] [stderr]     Checking parking v2.2.1
[INFO] [stderr]     Checking concurrent-queue v2.5.0
[INFO] [stderr]     Checking getrandom v0.2.17
[INFO] [stderr]     Checking futures-channel v0.3.31
[INFO] [stderr]     Checking litemap v0.8.1
[INFO] [stderr]     Checking fastrand v2.3.0
[INFO] [stderr]     Checking writeable v0.6.2
[INFO] [stderr]     Checking untrusted v0.9.0
[INFO] [stderr]     Checking indexmap v2.13.0
[INFO] [stderr]    Compiling zmij v1.0.14
[INFO] [stderr]    Compiling crunchy v0.2.4
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]     Checking block-buffer v0.10.4
[INFO] [stderr]     Checking bitflags v2.10.0
[INFO] [stderr]    Compiling icu_normalizer_data v2.1.1
[INFO] [stderr]    Compiling icu_properties_data v2.1.2
[INFO] [stderr]    Compiling rustls v0.23.36
[INFO] [stderr]     Checking futures-task v0.3.31
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling tiny-keccak v2.0.2
[INFO] [stderr]     Checking num-bigint v0.4.6
[INFO] [stderr]    Compiling cmake v0.1.57
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking block-padding v0.3.3
[INFO] [stderr]     Checking http v1.4.0
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]     Checking simd-adler32 v0.3.8
[INFO] [stderr]     Checking inout v0.1.4
[INFO] [stderr]     Checking futures-lite v2.6.1
[INFO] [stderr]    Compiling time-core v0.1.7
[INFO] [stderr]     Checking linux-raw-sys v0.11.0
[INFO] [stderr]     Checking deranged v0.5.5
[INFO] [stderr]    Compiling const-random-macro v0.1.16
[INFO] [stderr]    Compiling aws-lc-sys v0.35.0
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling time-macros v0.2.25
[INFO] [stderr]     Checking cipher v0.4.4
[INFO] [stderr]     Checking crossbeam-epoch v0.9.18
[INFO] [stderr]    Compiling async-io v2.6.0
[INFO] [stderr]    Compiling ident_case v1.0.1
[INFO] [stderr]    Compiling strsim v0.11.1
[INFO] [stderr]     Checking base64ct v1.8.3
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]     Checking rand_core v0.9.5
[INFO] [stderr]     Checking pem-rfc7468 v0.7.0
[INFO] [stderr]    Compiling rustversion v1.0.22
[INFO] [stderr]     Checking const-oid v0.9.6
[INFO] [stderr]     Checking minimal-lexical v0.2.1
[INFO] [stderr]     Checking lazy_static v1.5.0
[INFO] [stderr]     Checking time v0.3.45
[INFO] [stderr]     Checking flagset v0.4.7
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]     Checking nom v7.1.3
[INFO] [stderr]     Checking crc32fast v1.5.0
[INFO] [stderr]     Checking spin v0.9.8
[INFO] [stderr]    Compiling zstd-sys v2.0.16+zstd.1.5.7
[INFO] [stderr]     Checking flate2 v1.1.8
[INFO] [stderr]     Checking http-body v1.0.1
[INFO] [stderr]     Checking hmac v0.12.1
[INFO] [stderr]     Checking nom v8.0.0
[INFO] [stderr]     Checking data-encoding v2.10.0
[INFO] [stderr]    Compiling rayon-core v1.13.0
[INFO] [stderr]     Checking pbkdf2 v0.12.2
[INFO] [stderr]     Checking rusticata-macros v4.1.0
[INFO] [stderr]     Checking sha2 v0.10.9
[INFO] [stderr]     Checking crossbeam-deque v0.8.6
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling zerocopy-derive v0.8.33
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]     Checking yoke v0.8.1
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling thiserror-impl v2.0.17
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]     Checking zerovec v0.11.5
[INFO] [stderr]     Checking tokio v1.49.0
[INFO] [stderr]     Checking tinystr v0.8.2
[INFO] [stderr]     Checking potential_utf v0.1.4
[INFO] [stderr]     Checking icu_locale_core v2.1.1
[INFO] [stderr]     Checking zerotrie v0.2.3
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]     Checking icu_provider v2.1.1
[INFO] [stderr]     Checking icu_collections v2.1.1
[INFO] [stderr]     Checking polling v3.11.0
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling der_derive v0.7.3
[INFO] [stderr]     Checking icu_normalizer v2.1.1
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]     Checking icu_properties v2.1.2
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking executor-trait v2.1.2
[INFO] [stderr]    Compiling asn1-rs-derive v0.6.0
[INFO] [stderr]     Checking rand v0.9.2
[INFO] [stderr]    Compiling asn1-rs-impl v0.2.0
[INFO] [stderr]     Checking der v0.7.10
[INFO] [stderr]     Checking asn1-rs v0.7.1
[INFO] [stderr]    Compiling equator-macro v0.4.2
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking event-listener v5.4.1
[INFO] [stderr]    Compiling oid-registry v0.8.1
[INFO] [stderr]     Checking spki v0.7.3
[INFO] [stderr]     Checking openssl-probe v0.2.0
[INFO] [stderr]     Checking ipnet v2.11.0
[INFO] [stderr]     Checking rustls-native-certs v0.8.3
[INFO] [stderr]     Checking x509-cert v0.2.5
[INFO] [stderr]     Checking event-listener-strategy v0.5.4
[INFO] [stderr]     Checking equator v0.4.2
[INFO] [stderr]     Checking flume v0.11.1
[INFO] [stderr]     Checking salsa20 v0.10.2
[INFO] [stderr]     Checking either v1.15.0
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling zstd-safe v7.2.4
[INFO] [stderr]     Checking hex v0.4.3
[INFO] [stderr]    Compiling proc-macro-utils v0.10.0
[INFO] [stderr]     Checking aligned-vec v0.6.4
[INFO] [stderr]     Checking scrypt v0.11.0
[INFO] [stderr]     Checking reactor-trait v3.1.1
[INFO] [stderr]     Checking der-parser v10.0.0
[INFO] [stderr]    Compiling macro_magic_core_macros v0.5.1
[INFO] [stderr]    Compiling derive-syn-parse v0.2.0
[INFO] [stderr]     Checking cms v0.2.3
[INFO] [stderr]     Checking aes v0.8.4
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]     Checking cbc v0.1.2
[INFO] [stderr]     Checking tokio-util v0.7.18
[INFO] [stderr]    Compiling const-random v0.1.18
[INFO] [stderr]     Checking uuid v1.19.0
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]     Checking tinyvec_macros v0.1.1
[INFO] [stderr]     Checking async-task v4.7.1
[INFO] [stderr]    Compiling ucd-trie v0.1.7
[INFO] [stderr]    Compiling typeid v1.0.3
[INFO] [stderr]     Checking arrayvec v0.7.6
[INFO] [stderr]    Compiling fnv v1.0.7
[INFO] [stderr]    Compiling pest v2.8.5
[INFO] [stderr]    Compiling darling_core v0.21.3
[INFO] [stderr]     Checking tinyvec v1.10.0
[INFO] [stderr]    Compiling macro_magic_core v0.5.1
[INFO] [stderr]     Checking x509-parser v0.17.0
[INFO] [stderr]     Checking h2 v0.4.13
[INFO] [stderr]     Checking pkcs12 v0.1.0
[INFO] [stderr]     Checking pkcs5 v0.7.1
[INFO] [stderr]    Compiling quote-use-macros v0.8.4
[INFO] [stderr]     Checking v_frame v0.3.9
[INFO] [stderr]     Checking rayon v1.11.0
[INFO] [stderr]     Checking async-channel v2.5.0
[INFO] [stderr]     Checking http-body-util v0.1.3
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]     Checking des v0.8.1
[INFO] [stderr]     Checking rc2 v0.8.1
[INFO] [stderr]     Checking num-rational v0.4.2
[INFO] [stderr]     Checking piper v0.2.4
[INFO] [stderr]     Checking webpki-roots v1.0.5
[INFO] [stderr]     Checking as-slice v0.2.1
[INFO] [stderr]     Checking encoding_rs v0.8.35
[INFO] [stderr]     Checking sync_wrapper v1.0.2
[INFO] [stderr]    Compiling paste v1.0.15
[INFO] [stderr]    Compiling radium v0.7.0
[INFO] [stderr]    Compiling av-scenechange v0.14.1
[INFO] [stderr]    Compiling semver v1.0.27
[INFO] [stderr]    Compiling unicase v2.9.0
[INFO] [stderr]     Checking cookie-factory v0.3.3
[INFO] [stderr]    Compiling built v0.8.0
[INFO] [stderr]     Checking zstd v0.13.3
[INFO] [stderr]    Compiling mime_guess v2.0.5
[INFO] [stderr]     Checking amq-protocol-types v8.3.1
[INFO] [stderr]    Compiling rustc_version v0.4.1
[INFO] [stderr]     Checking aligned v0.4.3
[INFO] [stderr]    Compiling rav1e v0.8.1
[INFO] [stderr]     Checking blocking v1.6.2
[INFO] [stderr]     Checking p12-keystore v0.2.0
[INFO] [stderr]    Compiling quote-use v0.8.4
[INFO] [stderr]    Compiling pest_meta v2.8.5
[INFO] [stderr]    Compiling macro_magic_macros v0.5.1
[INFO] [stderr]    Compiling darling_macro v0.21.3
[INFO] [stderr]     Checking async-executor v1.13.3
[INFO] [stderr]     Checking reactor-trait v2.8.0
[INFO] [stderr]     Checking async-lock v3.4.2
[INFO] [stderr]    Compiling profiling-procmacros v1.0.17
[INFO] [stderr]    Compiling arg_enum_proc_macro v0.3.4
[INFO] [stderr]    Compiling slog v2.8.2
[INFO] [stderr]    Compiling from-attr-core v0.1.3
[INFO] [stderr]     Checking rustls-pemfile v2.2.0
[INFO] [stderr]     Checking core2 v0.4.0
[INFO] [stderr]     Checking tap v1.0.1
[INFO] [stderr]     Checking quick-error v2.0.1
[INFO] [stderr]    Compiling erased-serde v0.4.9
[INFO] [stderr]     Checking compression-core v0.4.31
[INFO] [stderr]    Compiling unicode-segmentation v1.12.0
[INFO] [stderr]     Checking y4m v0.8.0
[INFO] [stderr]    Compiling pastey v0.1.1
[INFO] [stderr]     Checking foldhash v0.1.5
[INFO] [stderr]    Compiling pest_generator v2.8.5
[INFO] [stderr]     Checking hyper v1.8.1
[INFO] [stderr]     Checking hashbrown v0.15.5
[INFO] [stderr]    Compiling convert_case v0.10.0
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]     Checking compression-codecs v0.4.36
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling enum-as-inner v0.6.1
[INFO] [stderr]     Checking async-global-executor v3.1.0
[INFO] [stderr]     Checking wyz v0.5.1
[INFO] [stderr]     Checking bitstream-io v4.9.0
[INFO] [stderr]    Compiling from-attr-macro v0.1.3
[INFO] [stderr]     Checking dlv-list v0.5.2
[INFO] [stderr]     Checking profiling v1.0.17
[INFO] [stderr]    Compiling darling v0.21.3
[INFO] [stderr]     Checking amq-protocol-uri v8.3.1
[INFO] [stderr]    Compiling rustc_version_runtime v0.3.0
[INFO] [stderr]    Compiling prettyplease v0.2.37
[INFO] [stderr]     Checking maybe-rayon v0.1.1
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking av1-grain v0.2.5
[INFO] [stderr]     Checking itertools v0.14.0
[INFO] [stderr]     Checking hyper-util v0.1.19
[INFO] [stderr]     Checking erased-serde v0.3.31
[INFO] [stderr]     Checking half v2.7.1
[INFO] [stderr]    Compiling fax_derive v0.2.0
[INFO] [stderr]    Compiling num-derive v0.4.2
[INFO] [stderr]    Compiling simd_helpers v0.1.0
[INFO] [stderr]     Checking crossbeam-channel v0.5.15
[INFO] [stderr]    Compiling multer v3.1.0
[INFO] [stderr]     Checking imgref v1.12.0
[INFO] [stderr]     Checking winnow v0.7.14
[INFO] [stderr]    Compiling amq-protocol v8.3.1
[INFO] [stderr]     Checking zune-core v0.4.12
[INFO] [stderr]     Checking new_debug_unreachable v1.0.6
[INFO] [stderr]     Checking ryu v1.0.22
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]    Compiling noop_proc_macro v0.3.0
[INFO] [stderr]     Checking weezl v0.1.12
[INFO] [stderr]     Checking funty v2.0.0
[INFO] [stderr]     Checking tagptr v0.2.0
[INFO] [stderr]     Checking moka v0.12.12
[INFO] [stderr]     Checking ordered-multimap v0.7.3
[INFO] [stderr]     Checking bitvec v1.0.1
[INFO] [stderr]     Checking zune-jpeg v0.4.21
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]     Checking fax v0.2.6
[INFO] [stderr]     Checking loop9 v0.1.5
[INFO] [stderr]    Compiling bon-macros v3.8.2
[INFO] [stderr]     Checking toml_parser v1.0.6+spec-1.1.0
[INFO] [stderr]    Compiling from-attr v0.1.3
[INFO] [stderr]    Compiling pest_derive v2.8.5
[INFO] [stderr]    Compiling serde_with_macros v3.16.1
[INFO] [stderr]     Checking hickory-proto v0.25.2
[INFO] [stderr]     Checking async-global-executor-trait v2.2.0
[INFO] [stderr]     Checking async-compression v0.4.37
[INFO] [stderr]     Checking hashlink v0.10.0
[INFO] [stderr]    Compiling macro_magic v0.5.1
[INFO] [stderr]     Checking unicode-normalization v0.1.25
[INFO] [stderr]     Checking avif-serialize v0.8.6
[INFO] [stderr]     Checking executor-trait v3.1.0
[INFO] [stderr]    Compiling typed-builder-macro v0.22.0
[INFO] [stderr]     Checking arc-swap v1.8.0
[INFO] [stderr]     Checking ureq-proto v0.5.3
[INFO] [stderr]     Checking sharded-slab v0.1.7
[INFO] [stderr]     Checking fdeflate v0.3.7
[INFO] [stderr]     Checking zune-inflate v0.2.54
[INFO] [stderr]     Checking serde_bytes v0.11.19
[INFO] [stderr]     Checking toml_datetime v0.7.5+spec-1.1.0
[INFO] [stderr]     Checking serde_spanned v1.0.4
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking pxfm v0.1.27
[INFO] [stderr]     Checking thread_local v1.1.9
[INFO] [stderr]     Checking utf-8 v0.7.6
[INFO] [stderr]     Checking iri-string v0.7.10
[INFO] [stderr]    Compiling rudi-core v0.1.0
[INFO] [stderr]     Checking resolv-conf v0.7.6
[INFO] [stderr]     Checking http-range-header v0.4.2
[INFO] [stderr]     Checking byteorder-lite v0.1.0
[INFO] [stderr]     Checking rgb v0.8.52
[INFO] [stderr]    Compiling lapin v3.7.2
[INFO] [stderr]     Checking unicode-properties v0.1.4
[INFO] [stderr]     Checking lebe v0.5.3
[INFO] [stderr]     Checking bit_field v0.10.3
[INFO] [stderr]     Checking zune-core v0.5.0
[INFO] [stderr]     Checking unicode-bidi v0.3.18
[INFO] [stderr]     Checking nu-ansi-term v0.50.3
[INFO] [stderr]     Checking color_quant v1.1.0
[INFO] [stderr]     Checking arraydeque v0.5.1
[INFO] [stderr]     Checking bytemuck v1.24.0
[INFO] [stderr]     Checking gif v0.14.1
[INFO] [stderr]     Checking ravif v0.12.0
[INFO] [stderr]     Checking tower-http v0.6.8
[INFO] [stderr]     Checking yaml-rust2 v0.10.4
[INFO] [stderr]     Checking qoi v0.4.1
[INFO] [stderr]     Checking stringprep v0.1.5
[INFO] [stderr]     Checking convert_case v0.6.0
[INFO] [stderr]     Checking tracing-subscriber v0.3.22
[INFO] [stderr]     Checking zune-jpeg v0.5.8
[INFO] [stderr]     Checking exr v1.74.0
[INFO] [stderr]     Checking image-webp v0.2.4
[INFO] [stderr]     Checking hickory-resolver v0.25.2
[INFO] [stderr]     Checking bon v3.8.2
[INFO] [stderr]     Checking typed-builder v0.22.0
[INFO] [stderr]    Compiling rudi-macro v0.8.3
[INFO] [stderr]     Checking toml v0.9.11+spec-1.1.0
[INFO] [stderr]     Checking moxcms v0.7.11
[INFO] [stderr]     Checking bson v2.15.0
[INFO] [stderr]     Checking png v0.18.0
[INFO] [stderr]     Checking slog-scope v4.4.0
[INFO] [stderr]     Checking async-global-executor-trait v3.1.0
[INFO] [stderr]     Checking derive_more v2.1.1
[INFO] [stderr]     Checking serde-untagged v0.1.9
[INFO] [stderr]    Compiling mongodb-internal-macros v3.5.0
[INFO] [stderr]     Checking serde_with v3.16.1
[INFO] [stderr]     Checking json5 v0.4.1
[INFO] [stderr]     Checking tiff v0.10.3
[INFO] [stderr]     Checking rust-ini v0.21.3
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking ron v0.12.0
[INFO] [stderr]     Checking hashbrown v0.13.2
[INFO] [stderr]     Checking axum-core v0.5.6
[INFO] [stderr]     Checking combine v4.6.7
[INFO] [stderr]     Checking async-reactor-trait v3.1.1
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]    Compiling derive-where v1.6.0
[INFO] [stderr]    Compiling smart-default v0.7.1
[INFO] [stderr]     Checking md-5 v0.10.6
[INFO] [stderr]     Checking serde_path_to_error v0.1.20
[INFO] [stderr]     Checking backon v1.6.0
[INFO] [stderr]     Checking sha1_smol v1.0.1
[INFO] [stderr]     Checking arcstr v1.2.0
[INFO] [stderr]     Checking inventory v0.3.21
[INFO] [stderr]     Checking take_mut v0.2.2
[INFO] [stderr]     Checking xxhash-rust v0.8.15
[INFO] [stderr]     Checking ttf-parser v0.15.2
[INFO] [stderr]     Checking iana-time-zone v0.1.64
[INFO] [stderr]     Checking pathdiff v0.2.3
[INFO] [stderr]     Checking chrono v0.4.42
[INFO] [stderr]     Checking config v0.15.19
[INFO] [stderr]     Checking axum v0.8.8
[INFO] [stderr]     Checking rudi v0.8.3
[INFO] [stderr]     Checking image v0.25.9
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking fontdue v0.7.3
[INFO] [stderr]     Checking tracing-error v0.2.1
[INFO] [stderr]    Compiling looklapi-macro v0.1.0 (/opt/rustwide/workdir/looklapi-macro)
[INFO] [stderr]     Checking redis v1.0.2
[INFO] [stderr]     Checking rustls-webpki v0.103.8
[INFO] [stderr]     Checking futures-rustls v0.26.0
[INFO] [stderr]     Checking tokio-rustls v0.26.4
[INFO] [stderr]     Checking rustls-platform-verifier v0.6.2
[INFO] [stderr]     Checking ureq v3.1.4
[INFO] [stderr]     Checking rustls-connector v0.21.11
[INFO] [stderr]     Checking hyper-rustls v0.27.7
[INFO] [stderr]     Checking mongodb v3.5.0
[INFO] [stderr]     Checking tcp-stream v0.30.9
[INFO] [stderr]     Checking reqwest v0.13.1
[INFO] [stderr]     Checking amq-protocol-tcp v8.3.1
[INFO] [stderr]     Checking rs-consul v0.13.0
[INFO] [stderr]     Checking looklapi v0.1.0 (/opt/rustwide/workdir/looklapi)
[INFO] [stdout] warning: unused import: `tracing::info`
[INFO] [stdout]  --> looklapi/src/main.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tracing::info;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::backtrace`
[INFO] [stdout]  --> looklapi/src/common/loggers/logger.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::backtrace;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> looklapi/src/common/mqutils/models.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::mpsc`
[INFO] [stdout]  --> looklapi/src/common/mqutils/models.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::sync::mpsc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RwLock`
[INFO] [stdout]  --> looklapi/src/common/mqutils/models.rs:8:29
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::sync::{Arc, Mutex, RwLock};
[INFO] [stdout]   |                             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `uuid::Uuid`
[INFO] [stdout]  --> looklapi/src/common/mqutils/publisher.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use uuid::Uuid;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Instant`
[INFO] [stdout]   --> looklapi/src/common/mqutils/rabbitmq_pool.rs:12:27
[INFO] [stdout]    |
[INFO] [stdout] 12 | use std::time::{Duration, Instant};
[INFO] [stdout]    |                           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Commands` and `RedisError`
[INFO] [stdout]  --> looklapi/src/common/redisutils/multi_cmds.rs:2:13
[INFO] [stdout]   |
[INFO] [stdout] 2 | use redis::{Commands, Pipeline, RedisError, RedisResult};
[INFO] [stdout]   |             ^^^^^^^^            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ConnectionLike`
[INFO] [stdout]  --> looklapi/src/common/redisutils/redipool.rs:3:33
[INFO] [stdout]   |
[INFO] [stdout] 3 | use redis::{Client, Connection, ConnectionLike, RedisResult};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `load_image_async` and `load_image`
[INFO] [stdout]  --> looklapi/src/commonapi/drawer/mod.rs:6:24
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub use image_helper::{load_image, load_image_async};
[INFO] [stdout]   |                        ^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `TextLine`, `calculate_text_lines_position`, and `process_text_for_drawing`
[INFO] [stdout]  --> looklapi/src/commonapi/drawer/mod.rs:7:23
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use text_helper::{calculate_text_lines_position, process_text_for_drawing, TextLine};
[INFO] [stdout]   |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `inventory::submit`
[INFO] [stdout]  --> looklapi/src/controller/test_controller.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use inventory::submit;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `routing::post`
[INFO] [stdout]  --> looklapi/src/controller/user_controller.rs:1:45
[INFO] [stdout]   |
[INFO] [stdout] 1 | use axum::{Extension, Router, routing::get, routing::post};
[INFO] [stdout]   |                                             ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `inventory::submit`
[INFO] [stdout]  --> looklapi/src/controller/user_controller.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use inventory::submit;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DynamicTextModel`
[INFO] [stdout]   --> looklapi/src/model/modelimpl/draw/mod.rs:11:22
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use text_model::{DynamicTextModel, TextModel};
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::decode`: Use Engine::decode
[INFO] [stdout]   --> looklapi/src/commonapi/drawer/image_helper.rs:51:25
[INFO] [stdout]    |
[INFO] [stdout] 51 |     let bytes = base64::decode(data)?;
[INFO] [stdout]    |                         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tracing::info`
[INFO] [stdout]  --> looklapi/src/main.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tracing::info;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::backtrace`
[INFO] [stdout]  --> looklapi/src/common/loggers/logger.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::backtrace;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> looklapi/src/common/mqutils/models.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::mpsc`
[INFO] [stdout]  --> looklapi/src/common/mqutils/models.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::sync::mpsc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RwLock`
[INFO] [stdout]  --> looklapi/src/common/mqutils/models.rs:8:29
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::sync::{Arc, Mutex, RwLock};
[INFO] [stdout]   |                             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `uuid::Uuid`
[INFO] [stdout]  --> looklapi/src/common/mqutils/publisher.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use uuid::Uuid;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Instant`
[INFO] [stdout]   --> looklapi/src/common/mqutils/rabbitmq_pool.rs:12:27
[INFO] [stdout]    |
[INFO] [stdout] 12 | use std::time::{Duration, Instant};
[INFO] [stdout]    |                           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Commands` and `RedisError`
[INFO] [stdout]  --> looklapi/src/common/redisutils/multi_cmds.rs:2:13
[INFO] [stdout]   |
[INFO] [stdout] 2 | use redis::{Commands, Pipeline, RedisError, RedisResult};
[INFO] [stdout]   |             ^^^^^^^^            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ConnectionLike`
[INFO] [stdout]  --> looklapi/src/common/redisutils/redipool.rs:3:33
[INFO] [stdout]   |
[INFO] [stdout] 3 | use redis::{Client, Connection, ConnectionLike, RedisResult};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `load_image_async` and `load_image`
[INFO] [stdout]  --> looklapi/src/commonapi/drawer/mod.rs:6:24
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub use image_helper::{load_image, load_image_async};
[INFO] [stdout]   |                        ^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `TextLine`, `calculate_text_lines_position`, and `process_text_for_drawing`
[INFO] [stdout]  --> looklapi/src/commonapi/drawer/mod.rs:7:23
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use text_helper::{calculate_text_lines_position, process_text_for_drawing, TextLine};
[INFO] [stdout]   |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `inventory::submit`
[INFO] [stdout]  --> looklapi/src/controller/test_controller.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use inventory::submit;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `routing::post`
[INFO] [stdout]  --> looklapi/src/controller/user_controller.rs:1:45
[INFO] [stdout]   |
[INFO] [stdout] 1 | use axum::{Extension, Router, routing::get, routing::post};
[INFO] [stdout]   |                                             ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `inventory::submit`
[INFO] [stdout]  --> looklapi/src/controller/user_controller.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use inventory::submit;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DynamicTextModel`
[INFO] [stdout]   --> looklapi/src/model/modelimpl/draw/mod.rs:11:22
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use text_model::{DynamicTextModel, TextModel};
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::decode`: Use Engine::decode
[INFO] [stdout]   --> looklapi/src/commonapi/drawer/image_helper.rs:51:25
[INFO] [stdout]    |
[INFO] [stdout] 51 |     let bytes = base64::decode(data)?;
[INFO] [stdout]    |                         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `lapin::Channel::on_error`: Please use Connection::events_listener instead
[INFO] [stdout]    --> looklapi/src/common/mqutils/rabbitmq_pool.rs:333:28
[INFO] [stdout]     |
[INFO] [stdout] 333 |         mq_channel.channel.on_error(move |_| {
[INFO] [stdout]     |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> looklapi/src/common/redisutils/multi_cmds.rs:42:25
[INFO] [stdout]    |
[INFO] [stdout] 42 |                     let mut cmd = pipe.cmd("HMSET").arg(&args[0]);
[INFO] [stdout]    |                         ----^^^
[INFO] [stdout]    |                         |
[INFO] [stdout]    |                         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> looklapi/src/common/redisutils/multi_cmds.rs:50:25
[INFO] [stdout]    |
[INFO] [stdout] 50 |                     let mut cmd = pipe.cmd("LPUSH").arg(&args[0]);
[INFO] [stdout]    |                         ----^^^
[INFO] [stdout]    |                         |
[INFO] [stdout]    |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> looklapi/src/common/redisutils/multi_cmds.rs:58:25
[INFO] [stdout]    |
[INFO] [stdout] 58 |                     let mut cmd = pipe.cmd("RPUSH").arg(&args[0]);
[INFO] [stdout]    |                         ----^^^
[INFO] [stdout]    |                         |
[INFO] [stdout]    |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> looklapi/src/controller/middleware/request_context_middleware.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 |     mut req: Request<Body>,
[INFO] [stdout]    |     ----^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> looklapi/src/controller/middleware/request_context_middleware.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 32 |     mut req: Request<Body>,
[INFO] [stdout]    |     ----^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> looklapi/src/controller/test_controller.rs:101:21
[INFO] [stdout]     |
[INFO] [stdout] 101 | async fn test_begin(mut req: Request<Body>, next: axum::middleware::Next) -> impl IntoResponse {
[INFO] [stdout]     |                     ----^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> looklapi/src/controller/test_controller.rs:109:21
[INFO] [stdout]     |
[INFO] [stdout] 109 | async fn test_after(mut req: Request<Body>, next: axum::middleware::Next) -> impl IntoResponse {
[INFO] [stdout]     |                     ----^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `lapin::Channel::on_error`: Please use Connection::events_listener instead
[INFO] [stdout]    --> looklapi/src/common/mqutils/rabbitmq_pool.rs:333:28
[INFO] [stdout]     |
[INFO] [stdout] 333 |         mq_channel.channel.on_error(move |_| {
[INFO] [stdout]     |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> looklapi/src/common/loggers/mongo_logger.rs:113:9
[INFO] [stdout]     |
[INFO] [stdout] 113 |         mut writer: Writer<'_>,
[INFO] [stdout]     |         ----^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]    --> looklapi/src/common/loggers/mongo_logger.rs:112:9
[INFO] [stdout]     |
[INFO] [stdout] 112 |         ctx: &FmtContext<'_, S, N>,
[INFO] [stdout]     |         ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `writer`
[INFO] [stdout]    --> looklapi/src/common/loggers/mongo_logger.rs:113:9
[INFO] [stdout]     |
[INFO] [stdout] 113 |         mut writer: Writer<'_>,
[INFO] [stdout]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_writer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pool_clone`
[INFO] [stdout]    --> looklapi/src/common/mqutils/consumer.rs:391:13
[INFO] [stdout]     |
[INFO] [stdout] 391 |         let pool_clone = pool.clone();
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pool_clone`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `worker_count` is assigned to, but never used
[INFO] [stdout]    --> looklapi/src/common/mqutils/consumer.rs:707:13
[INFO] [stdout]     |
[INFO] [stdout] 707 |         let mut worker_count = 0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_worker_count` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `broadcaster_count` is assigned to, but never used
[INFO] [stdout]    --> looklapi/src/common/mqutils/consumer.rs:708:13
[INFO] [stdout]     |
[INFO] [stdout] 708 |         let mut broadcaster_count = 0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_broadcaster_count` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `topic_count` is assigned to, but never used
[INFO] [stdout]    --> looklapi/src/common/mqutils/consumer.rs:709:13
[INFO] [stdout]     |
[INFO] [stdout] 709 |         let mut topic_count = 0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_topic_count` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `worker_count` is never read
[INFO] [stdout]    --> looklapi/src/common/mqutils/consumer.rs:714:21
[INFO] [stdout]     |
[INFO] [stdout] 714 |                     worker_count += consumer.concurrency as usize;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `broadcaster_count` is never read
[INFO] [stdout]    --> looklapi/src/common/mqutils/consumer.rs:717:21
[INFO] [stdout]     |
[INFO] [stdout] 717 |                     broadcaster_count += 1;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `topic_count` is never read
[INFO] [stdout]    --> looklapi/src/common/mqutils/consumer.rs:720:21
[INFO] [stdout]     |
[INFO] [stdout] 720 |                     topic_count += 1;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> looklapi/src/common/redisutils/multi_cmds.rs:42:25
[INFO] [stdout]    |
[INFO] [stdout] 42 |                     let mut cmd = pipe.cmd("HMSET").arg(&args[0]);
[INFO] [stdout]    |                         ----^^^
[INFO] [stdout]    |                         |
[INFO] [stdout]    |                         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> looklapi/src/common/redisutils/multi_cmds.rs:50:25
[INFO] [stdout]    |
[INFO] [stdout] 50 |                     let mut cmd = pipe.cmd("LPUSH").arg(&args[0]);
[INFO] [stdout]    |                         ----^^^
[INFO] [stdout]    |                         |
[INFO] [stdout]    |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> looklapi/src/common/redisutils/multi_cmds.rs:58:25
[INFO] [stdout]    |
[INFO] [stdout] 58 |                     let mut cmd = pipe.cmd("RPUSH").arg(&args[0]);
[INFO] [stdout]    |                         ----^^^
[INFO] [stdout]    |                         |
[INFO] [stdout]    |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> looklapi/src/controller/middleware/request_context_middleware.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 |     mut req: Request<Body>,
[INFO] [stdout]    |     ----^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> looklapi/src/controller/middleware/request_context_middleware.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 32 |     mut req: Request<Body>,
[INFO] [stdout]    |     ----^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> looklapi/src/controller/test_controller.rs:101:21
[INFO] [stdout]     |
[INFO] [stdout] 101 | async fn test_begin(mut req: Request<Body>, next: axum::middleware::Next) -> impl IntoResponse {
[INFO] [stdout]     |                     ----^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> looklapi/src/controller/test_controller.rs:109:21
[INFO] [stdout]     |
[INFO] [stdout] 109 | async fn test_after(mut req: Request<Body>, next: axum::middleware::Next) -> impl IntoResponse {
[INFO] [stdout]     |                     ----^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `db_index`
[INFO] [stdout]   --> looklapi/src/common/redisutils/multi_cmds.rs:75:19
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub async fn eval(db_index: u8, script: &str, keys: &[&str], args: &[&str]) -> RedisResult<String> {
[INFO] [stdout]    |                   ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_db_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]   --> looklapi/src/controller/test_controller.rs:41:15
[INFO] [stdout]    |
[INFO] [stdout] 41 |     Extension(ctx): Extension<crate::request_context::RequestContext>,
[INFO] [stdout]    |               ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]   --> looklapi/src/controller/user_controller.rs:38:15
[INFO] [stdout]    |
[INFO] [stdout] 38 |     Extension(ctx): Extension<crate::request_context::RequestContext>,
[INFO] [stdout]    |               ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]   --> looklapi/src/app/app_config.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct Server {
[INFO] [stdout]    |            ------ field in this struct
[INFO] [stdout] 12 |     pub name: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Server` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `uri` is never read
[INFO] [stdout]   --> looklapi/src/app/app_config.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct Mysql {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] 18 |     pub uri: String,
[INFO] [stdout]    |         ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Mysql` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `uri` is never read
[INFO] [stdout]   --> looklapi/src/app/app_config.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct Mssql {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] 23 |     pub uri: String,
[INFO] [stdout]    |         ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Mssql` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `host`, `port`, `password`, and `timeout` are never read
[INFO] [stdout]   --> looklapi/src/app/app_config.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct Redis {
[INFO] [stdout]    |            ----- fields in this struct
[INFO] [stdout] 33 |     pub host: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 34 |     pub port: i32,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 35 |     pub password: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 36 |     /// 超时时间(毫秒)
[INFO] [stdout] 37 |     pub timeout: i32,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Redis` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> looklapi/src/app/app_config.rs:47:9
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub struct Consul {
[INFO] [stdout]    |            ------ fields in this struct
[INFO] [stdout] 47 |     pub host: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 48 |     pub port: i32,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 49 |     pub secure: bool,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 50 |     pub health_check: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 51 |     /// 健康检查间隔(秒)
[INFO] [stdout] 52 |     pub health_check_interval: i32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 53 |     /// 健康检查超时时间(秒)
[INFO] [stdout] 54 |     pub health_check_timeout: i32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 55 |     /// 服务注册超时时间(秒)
[INFO] [stdout] 56 |     pub deregister_critical_service_after: i32, // 秒
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Consul` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `developer` is never read
[INFO] [stdout]   --> looklapi/src/app/app_config.rs:66:9
[INFO] [stdout]    |
[INFO] [stdout] 65 | pub struct Dev {
[INFO] [stdout]    |            --- field in this struct
[INFO] [stdout] 66 |     pub developer: String,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Dev` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `profile`, `mysql`, `mssql`, `redis`, `consul`, and `dev` are never read
[INFO] [stdout]   --> looklapi/src/app/app_config.rs:83:9
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub struct AppConfig {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] 83 |     pub profile: String,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 84 |     pub server: Server,
[INFO] [stdout] 85 |     pub mysql: Option<Mysql>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 86 |     pub mssql: Option<Mssql>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 87 |     pub mongodb: Option<Mongodb>,
[INFO] [stdout] 88 |     pub redis: Option<Redis>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 89 |     pub rabbitmq: Option<RabbitMQ>,
[INFO] [stdout] 90 |     pub consul: Option<Consul>,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 91 |     pub logger: Logger,
[INFO] [stdout] 92 |     pub dev: Option<Dev>,
[INFO] [stdout]    |         ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AppConfig` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AppEventInitCompleted` is never constructed
[INFO] [stdout]  --> looklapi/src/app/appcontext/events.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub struct AppEventInitCompleted;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AppEventConfigInitialized` is never constructed
[INFO] [stdout]  --> looklapi/src/app/appcontext/events.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct AppEventConfigInitialized;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_ctx_mut` is never used
[INFO] [stdout]   --> looklapi/src/app/appcontext/rudi_context.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl RudiContext {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub fn get_ctx_mut(&mut self) -> &mut rudi::Context {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `backtrace` and `span_trace` are never read
[INFO] [stdout]   --> looklapi/src/app/app_err.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct AppError {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 11 |     backtrace: Backtrace,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 12 |     span_trace: tracing_error::SpanTrace,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AppError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `message`, `backtrace`, and `span_trace` are never used
[INFO] [stdout]   --> looklapi/src/app/app_err.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl AppError {
[INFO] [stdout]    | ------------- associated items in this implementation
[INFO] [stdout] 16 |     pub fn new(message: &str) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn message(&self) -> &str {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn backtrace(&self) -> &Backtrace {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn span_trace(&self) -> &tracing_error::SpanTrace {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `log` is never used
[INFO] [stdout]   --> looklapi/src/app/app_err.rs:87:12
[INFO] [stdout]    |
[INFO] [stdout] 85 | impl AppError {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] 86 |     /// 记录日志
[INFO] [stdout] 87 |     pub fn log(&self) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `error` is never used
[INFO] [stdout]   --> looklapi/src/common/loggers/logger.rs:45:8
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub fn error(err: &AppError) {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LOG_LEVEL_CHANGE` is never used
[INFO] [stdout]  --> looklapi/src/common/mqutils/consts.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub const LOG_LEVEL_CHANGE: &str = "log_level_change"; // 日志等级变更交换器
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MANUAL_SERVICE_REFRESH` is never used
[INFO] [stdout]  --> looklapi/src/common/mqutils/consts.rs:2:11
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub const MANUAL_SERVICE_REFRESH: &str = "manual_service_refresh"; // 服务配置刷新交换器
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CONFIG_REFRESH_WATCH` is never used
[INFO] [stdout]  --> looklapi/src/common/mqutils/consts.rs:3:11
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub const CONFIG_REFRESH_WATCH: &str = "config_refresh_watch"; // 配置刷新交换器
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ConsumerType` is never used
[INFO] [stdout]  --> looklapi/src/common/mqutils/consts.rs:7:10
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub enum ConsumerType {
[INFO] [stdout]   |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Consumer` is never constructed
[INFO] [stdout]   --> looklapi/src/common/mqutils/consumer.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct Consumer {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new_work_queue_consumer`, `new_broadcast_consumer`, `new_topic_consumer`, and `on_received` are never used
[INFO] [stdout]    --> looklapi/src/common/mqutils/consumer.rs:38:12
[INFO] [stdout]     |
[INFO] [stdout]  36 | impl Consumer {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout]  37 |     // 新建工作队列消费者
[INFO] [stdout]  38 |     pub fn new_work_queue_consumer(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  81 |     pub fn new_broadcast_consumer(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn new_topic_consumer(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn on_received(&self, msg: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_workqueue_reconnect` is never used
[INFO] [stdout]    --> looklapi/src/common/mqutils/consumer.rs:180:10
[INFO] [stdout]     |
[INFO] [stdout] 180 | async fn handle_workqueue_reconnect(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_broadcast_reconnect` is never used
[INFO] [stdout]    --> looklapi/src/common/mqutils/consumer.rs:219:10
[INFO] [stdout]     |
[INFO] [stdout] 219 | async fn handle_broadcast_reconnect(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_topic_reconnect` is never used
[INFO] [stdout]    --> looklapi/src/common/mqutils/consumer.rs:258:10
[INFO] [stdout]     |
[INFO] [stdout] 258 | async fn handle_topic_reconnect(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConsumerBinder` is never constructed
[INFO] [stdout]    --> looklapi/src/common/mqutils/consumer.rs:298:8
[INFO] [stdout]     |
[INFO] [stdout] 298 | struct ConsumerBinder {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `bind_consumer`, `bind_work_queue_consumer`, `bind_broadcast_consumer`, `bind_topic_consumer`, and `init_consumers` are never used
[INFO] [stdout]    --> looklapi/src/common/mqutils/consumer.rs:305:8
[INFO] [stdout]     |
[INFO] [stdout] 304 | impl ConsumerBinder {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 305 |     fn new() -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 314 |     pub async fn bind_consumer(&self, consumer: Arc<Consumer>) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 346 |     async fn bind_work_queue_consumer(&self, consumer: Arc<Consumer>) -> bool {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 443 |     async fn bind_broadcast_consumer(&self, consumer: Arc<Consumer>) -> bool {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 565 |     async fn bind_topic_consumer(&self, consumer: Arc<Consumer>) -> bool {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 701 |     pub async fn init_consumers(&mut self) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CONN_IDLE_TIMEOUT_MIN` is never used
[INFO] [stdout]   --> looklapi/src/common/mqutils/models.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | const CONN_IDLE_TIMEOUT_MIN: i32 = 10;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CH_IDLE_TIMEOUT_MIN` is never used
[INFO] [stdout]   --> looklapi/src/common/mqutils/models.rs:13:7
[INFO] [stdout]    |
[INFO] [stdout] 13 | const CH_IDLE_TIMEOUT_MIN: i32 = 5;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CONN_LIMIT` is never used
[INFO] [stdout]   --> looklapi/src/common/mqutils/models.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const CONN_LIMIT: i32 = 100;
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CH_LIMIT_FOR_CONN` is never used
[INFO] [stdout]   --> looklapi/src/common/mqutils/models.rs:18:7
[INFO] [stdout]    |
[INFO] [stdout] 18 | const CH_LIMIT_FOR_CONN: i32 = 100;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Idle` is never constructed
[INFO] [stdout]   --> looklapi/src/common/mqutils/models.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub enum ChannelStatus {
[INFO] [stdout]    |          ------------- variant in this enum
[INFO] [stdout] 23 |     Idle,    // 空闲
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ChannelStatus` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MqMessage` is never constructed
[INFO] [stdout]    --> looklapi/src/common/mqutils/models.rs:115:12
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub struct MqMessage {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> looklapi/src/common/mqutils/models.rs:127:12
[INFO] [stdout]     |
[INFO] [stdout] 126 | impl MqMessage {
[INFO] [stdout]     | -------------- associated function in this implementation
[INFO] [stdout] 127 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Consumer` is never constructed
[INFO] [stdout]    --> looklapi/src/common/mqutils/models.rs:138:12
[INFO] [stdout]     |
[INFO] [stdout] 138 | pub struct Consumer {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pub_work_queue_msg` is never used
[INFO] [stdout]   --> looklapi/src/common/mqutils/publisher.rs:11:14
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub async fn pub_work_queue_msg<T: Serialize>(route_key: &str, msg: T) -> bool {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pub_broadcast_msg` is never used
[INFO] [stdout]   --> looklapi/src/common/mqutils/publisher.rs:31:14
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub async fn pub_broadcast_msg<T: Serialize>(exchange: &str, msg: T) -> bool {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pub_topic_msg` is never used
[INFO] [stdout]   --> looklapi/src/common/mqutils/publisher.rs:51:14
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub async fn pub_topic_msg<T: Serialize>(exchange: &str, route_key: &str, msg: T) -> bool {
[INFO] [stdout]    |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pub_work_queue_msg_internal` is never used
[INFO] [stdout]   --> looklapi/src/common/mqutils/publisher.rs:71:10
[INFO] [stdout]    |
[INFO] [stdout] 71 | async fn pub_work_queue_msg_internal(
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pub_broadcast_msg_internal` is never used
[INFO] [stdout]    --> looklapi/src/common/mqutils/publisher.rs:112:10
[INFO] [stdout]     |
[INFO] [stdout] 112 | async fn pub_broadcast_msg_internal(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pub_topic_msg_internal` is never used
[INFO] [stdout]    --> looklapi/src/common/mqutils/publisher.rs:152:10
[INFO] [stdout]     |
[INFO] [stdout] 152 | async fn pub_topic_msg_internal(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `convert_message` is never used
[INFO] [stdout]    --> looklapi/src/common/mqutils/publisher.rs:195:4
[INFO] [stdout]     |
[INFO] [stdout] 195 | fn convert_message<T: Serialize>(msg: T) -> Option<MqMessage> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `pub_ch_pipeline_rx`, `rec_conns`, `rec_chs`, and `rec_mu` are never read
[INFO] [stdout]   --> looklapi/src/common/mqutils/rabbitmq_pool.rs:59:5
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub struct RabbitmqConnPool {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub_ch_pipeline_rx: Arc<Mutex<mpsc::Receiver<Option<Arc<MqChannel>>>>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 60 |     /// 消费连接
[INFO] [stdout] 61 |     rec_conns: Mutex<Vec<Arc<RabbitMqConnData>>>,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 62 |     /// 消费者channel pool
[INFO] [stdout] 63 |     rec_chs: Mutex<Vec<Arc<MqChannel>>>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 64 |     /// 消费者管理锁
[INFO] [stdout] 65 |     rec_mu: Arc<Mutex<()>>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RabbitmqConnPool` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_pub_channel`, `get_rec_channel`, `get_or_create_rec_conn`, and `release_channel` are never used
[INFO] [stdout]    --> looklapi/src/common/mqutils/rabbitmq_pool.rs:133:18
[INFO] [stdout]     |
[INFO] [stdout]  70 | impl RabbitmqConnPool {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 133 |     pub async fn get_pub_channel(&self) -> Result<Arc<MqChannel>, Box<dyn std::error::Error>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 146 |     pub async fn get_rec_channel(&self) -> Result<Arc<MqChannel>, Box<dyn std::error::Error>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 228 |     async fn get_or_create_rec_conn(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 251 |     pub fn release_channel(&self, ch: Arc<MqChannel>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `retry` is never used
[INFO] [stdout]  --> looklapi/src/common/mqutils/retry.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn retry(meta_msg: &MqMessage, consumer: &crate::common::mqutils::consumer::Consumer) -> bool {
[INFO] [stdout]   |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `retry_success` is never used
[INFO] [stdout]   --> looklapi/src/common/mqutils/retry.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn retry_success(meta_msg: &MqMessage, consumer_type: ConsumerType) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CONFIG_MANUAL_SERVICE` is never used
[INFO] [stdout]  --> looklapi/src/common/redisutils/consts.rs:2:11
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub const CONFIG_MANUAL_SERVICE: &str = "config_manual_service";
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CONFIG_LOG` is never used
[INFO] [stdout]  --> looklapi/src/common/redisutils/consts.rs:4:11
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub const CONFIG_LOG: &str = "config_log";
[INFO] [stdout]   |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SERVICE_BOOT` is never used
[INFO] [stdout]  --> looklapi/src/common/redisutils/consts.rs:6:11
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub const SERVICE_BOOT: &str = "service_boot";
[INFO] [stdout]   |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `obj_to_json` is never used
[INFO] [stdout]  --> looklapi/src/common/redisutils/operator.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn obj_to_json<T: Serialize>(val: &T) -> Result<String, serde_json::Error> {
[INFO] [stdout]   |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `json_to_obj` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/operator.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn json_to_obj<T: DeserializeOwned>(json: &str) -> Result<T, serde_json::Error> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/operator.rs:16:14
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub async fn set<T: Serialize>(key: &str, val: &T) -> RedisResult<()> {
[INFO] [stdout]    |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_ex` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/operator.rs:30:14
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub async fn set_ex<T: Serialize>(key: &str, val: &T, secs: u64) -> RedisResult<()> {
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/operator.rs:44:14
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub async fn get<T: DeserializeOwned>(key: &str) -> RedisResult<T> {
[INFO] [stdout]    |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `incr` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/operator.rs:58:14
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub async fn incr(key: &str, incr_val: i64) -> RedisResult<i64> {
[INFO] [stdout]    |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `scan` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/operator.rs:71:14
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub async fn scan(db_index: u8, pattern: &str, limit: usize) -> RedisResult<Vec<String>> {
[INFO] [stdout]    |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hash_set` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/operator.rs:115:14
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub async fn hash_set<T: Serialize>(key: &str, field: &str, val: &T) -> RedisResult<()> {
[INFO] [stdout]     |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hash_get` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/operator.rs:129:14
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub async fn hash_get<T: DeserializeOwned>(key: &str, field: &str) -> RedisResult<T> {
[INFO] [stdout]     |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hash_keys` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/operator.rs:143:14
[INFO] [stdout]     |
[INFO] [stdout] 143 | pub async fn hash_keys(key: &str) -> RedisResult<Vec<String>> {
[INFO] [stdout]     |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hash_values` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/operator.rs:156:14
[INFO] [stdout]     |
[INFO] [stdout] 156 | pub async fn hash_values<T: DeserializeOwned>(key: &str) -> RedisResult<Vec<T>> {
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hash_get_all` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/operator.rs:173:14
[INFO] [stdout]     |
[INFO] [stdout] 173 | pub async fn hash_get_all<T: DeserializeOwned>(key: &str) -> RedisResult<Vec<(String, T)>> {
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `exist` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/operator.rs:194:14
[INFO] [stdout]     |
[INFO] [stdout] 194 | pub async fn exist(key: &str) -> RedisResult<bool> {
[INFO] [stdout]     |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `h_exist` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/operator.rs:204:14
[INFO] [stdout]     |
[INFO] [stdout] 204 | pub async fn h_exist(key: &str, field: &str) -> RedisResult<bool> {
[INFO] [stdout]     |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `del` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/operator.rs:214:14
[INFO] [stdout]     |
[INFO] [stdout] 214 | pub async fn del(key: &str) -> RedisResult<()> {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `h_del` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/operator.rs:225:14
[INFO] [stdout]     |
[INFO] [stdout] 225 | pub async fn h_del(key: &str, field: &str) -> RedisResult<()> {
[INFO] [stdout]     |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `h_del_multiple` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/operator.rs:236:14
[INFO] [stdout]     |
[INFO] [stdout] 236 | pub async fn h_del_multiple(key: &str, fields: &[&str]) -> RedisResult<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hash_incr` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/operator.rs:247:14
[INFO] [stdout]     |
[INFO] [stdout] 247 | pub async fn hash_incr(key: &str, field: &str, incr_val: i64) -> RedisResult<i64> {
[INFO] [stdout]     |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `h_len` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/operator.rs:264:14
[INFO] [stdout]     |
[INFO] [stdout] 264 | pub async fn h_len(key: &str) -> RedisResult<usize> {
[INFO] [stdout]     |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_key_exp_secs` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/operator.rs:277:14
[INFO] [stdout]     |
[INFO] [stdout] 277 | pub async fn set_key_exp_secs(key: &str, exp_secs: u64) -> RedisResult<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_key_exp_millisecs` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/operator.rs:290:14
[INFO] [stdout]     |
[INFO] [stdout] 290 | pub async fn set_key_exp_millisecs(key: &str, exp_millisecs: u64) -> RedisResult<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_key_exp_unix_secs` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/operator.rs:303:14
[INFO] [stdout]     |
[INFO] [stdout] 303 | pub async fn set_key_exp_unix_secs(key: &str, exp_time: u64) -> RedisResult<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_key_exp_unix_millisecs` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/operator.rs:319:14
[INFO] [stdout]     |
[INFO] [stdout] 319 | pub async fn set_key_exp_unix_millisecs(key: &str, exp_time: u64) -> RedisResult<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `remove_key_exp` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/operator.rs:335:14
[INFO] [stdout]     |
[INFO] [stdout] 335 | pub async fn remove_key_exp(key: &str) -> RedisResult<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_key_ttl_secs` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/operator.rs:348:14
[INFO] [stdout]     |
[INFO] [stdout] 348 | pub async fn get_key_ttl_secs(key: &str) -> RedisResult<i64> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_key_ttl_millisecs` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/operator.rs:361:14
[INFO] [stdout]     |
[INFO] [stdout] 361 | pub async fn get_key_ttl_millisecs(key: &str) -> RedisResult<i64> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lpush` is never used
[INFO] [stdout]  --> looklapi/src/common/redisutils/list.rs:7:14
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub async fn lpush<T: Serialize>(key: &str, values: &[T]) -> RedisResult<usize> {
[INFO] [stdout]   |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rpush` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/list.rs:35:14
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub async fn rpush<T: Serialize>(key: &str, values: &[T]) -> RedisResult<usize> {
[INFO] [stdout]    |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lpop` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/list.rs:63:14
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub async fn lpop<T: DeserializeOwned>(key: &str) -> RedisResult<T> {
[INFO] [stdout]    |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rpop` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/list.rs:77:14
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub async fn rpop<T: DeserializeOwned>(key: &str) -> RedisResult<T> {
[INFO] [stdout]    |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rpoplpush` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/list.rs:91:14
[INFO] [stdout]    |
[INFO] [stdout] 91 | pub async fn rpoplpush<T: DeserializeOwned>(
[INFO] [stdout]    |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lremove` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/list.rs:108:14
[INFO] [stdout]     |
[INFO] [stdout] 108 | pub async fn lremove(key: &str, count: isize, value: &str) -> RedisResult<usize> {
[INFO] [stdout]     |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `llen` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/list.rs:121:14
[INFO] [stdout]     |
[INFO] [stdout] 121 | pub async fn llen(key: &str) -> RedisResult<usize> {
[INFO] [stdout]     |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lindex` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/list.rs:134:14
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub async fn lindex<T: DeserializeOwned>(key: &str, index: isize) -> RedisResult<T> {
[INFO] [stdout]     |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lset` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/list.rs:148:14
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub async fn lset<T: Serialize>(key: &str, index: isize, value: &T) -> RedisResult<()> {
[INFO] [stdout]     |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lrange` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/list.rs:162:14
[INFO] [stdout]     |
[INFO] [stdout] 162 | pub async fn lrange<T: DeserializeOwned>(
[INFO] [stdout]     |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ltrim` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/list.rs:183:14
[INFO] [stdout]     |
[INFO] [stdout] 183 | pub async fn ltrim(key: &str, start: isize, end: isize) -> RedisResult<()> {
[INFO] [stdout]     |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sadd` is never used
[INFO] [stdout]  --> looklapi/src/common/redisutils/set.rs:7:14
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub async fn sadd<T: Serialize>(key: &str, members: &[T]) -> RedisResult<usize> {
[INFO] [stdout]   |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `srem` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/set.rs:32:14
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub async fn srem(key: &str, members: &[&str]) -> RedisResult<usize> {
[INFO] [stdout]    |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sismember` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/set.rs:49:14
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub async fn sismember<T: Serialize>(key: &str, member: &T) -> RedisResult<bool> {
[INFO] [stdout]    |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `smembers` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/set.rs:63:14
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub async fn smembers<T: DeserializeOwned>(key: &str) -> RedisResult<Vec<T>> {
[INFO] [stdout]    |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `scard` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/set.rs:80:14
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub async fn scard(key: &str) -> RedisResult<usize> {
[INFO] [stdout]    |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `spop` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/set.rs:93:14
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub async fn spop<T: DeserializeOwned>(key: &str) -> RedisResult<T> {
[INFO] [stdout]    |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `srandmember` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/set.rs:107:14
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub async fn srandmember<T: DeserializeOwned>(key: &str, count: usize) -> RedisResult<Vec<T>> {
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sdiff` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/set.rs:129:14
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub async fn sdiff<T: DeserializeOwned>(key1: &str, key2: &str) -> RedisResult<Vec<T>> {
[INFO] [stdout]     |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sinter` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/set.rs:146:14
[INFO] [stdout]     |
[INFO] [stdout] 146 | pub async fn sinter<T: DeserializeOwned>(key1: &str, key2: &str) -> RedisResult<Vec<T>> {
[INFO] [stdout]     |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sunion` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/set.rs:163:14
[INFO] [stdout]     |
[INFO] [stdout] 163 | pub async fn sunion<T: DeserializeOwned>(key1: &str, key2: &str) -> RedisResult<Vec<T>> {
[INFO] [stdout]     |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `zadd` is never used
[INFO] [stdout]  --> looklapi/src/common/redisutils/zset.rs:7:14
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub async fn zadd<T: Serialize>(key: &str, score: f64, member: &T) -> RedisResult<usize> {
[INFO] [stdout]   |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `zrem` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/zset.rs:18:14
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub async fn zrem(key: &str, members: &[&str]) -> RedisResult<usize> {
[INFO] [stdout]    |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `zscore` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/zset.rs:32:14
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub async fn zscore<T: Serialize>(key: &str, member: &T) -> RedisResult<f64> {
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `zincrby` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/zset.rs:43:14
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub async fn zincrby<T: Serialize>(key: &str, increment: f64, member: &T) -> RedisResult<f64> {
[INFO] [stdout]    |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `zcard` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/zset.rs:56:14
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub async fn zcard(key: &str) -> RedisResult<usize> {
[INFO] [stdout]    |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `zrangebyscore` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/zset.rs:66:14
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub async fn zrangebyscore<T: DeserializeOwned>(key: &str, min: f64, max: f64) -> RedisResult<Vec<T>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `zrange` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/zset.rs:77:14
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub async fn zrange<T: DeserializeOwned>(key: &str, start: isize, stop: isize) -> RedisResult<Vec<T>> {
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `zrevrange` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/zset.rs:88:14
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub async fn zrevrange<T: DeserializeOwned>(key: &str, start: isize, stop: isize) -> RedisResult<Vec<T>> {
[INFO] [stdout]    |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `zrank` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/zset.rs:99:14
[INFO] [stdout]    |
[INFO] [stdout] 99 | pub async fn zrank<T: Serialize>(key: &str, member: &T) -> RedisResult<Option<usize>> {
[INFO] [stdout]    |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `zrevrank` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/zset.rs:110:14
[INFO] [stdout]     |
[INFO] [stdout] 110 | pub async fn zrevrank<T: Serialize>(key: &str, member: &T) -> RedisResult<Option<usize>> {
[INFO] [stdout]     |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `zremrangebyscore` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/zset.rs:121:14
[INFO] [stdout]     |
[INFO] [stdout] 121 | pub async fn zremrangebyscore(key: &str, min: f64, max: f64) -> RedisResult<usize> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `zremrangebyrank` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/zset.rs:133:14
[INFO] [stdout]     |
[INFO] [stdout] 133 | pub async fn zremrangebyrank(key: &str, start: isize, stop: isize) -> RedisResult<usize> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lock` is never used
[INFO] [stdout]  --> looklapi/src/common/redisutils/locker.rs:6:14
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub async fn lock(key: &str, expire_secs: u64) -> RedisResult<bool> {
[INFO] [stdout]   |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unlock` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/locker.rs:23:14
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub async fn unlock(key: &str) -> RedisResult<()> {
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_lock` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/locker.rs:34:14
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub async fn try_lock(key: &str, expire_secs: u64, max_retry: usize, retry_interval_ms: u64) -> RedisResult<bool> {
[INFO] [stdout]    |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `multi_exec` is never used
[INFO] [stdout]  --> looklapi/src/common/redisutils/multi_cmds.rs:5:14
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub async fn multi_exec(key: &str, commands: &[(String, Vec<&str>)]) -> RedisResult<()> {
[INFO] [stdout]   |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `eval` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/multi_cmds.rs:75:14
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub async fn eval(db_index: u8, script: &str, keys: &[&str], args: &[&str]) -> RedisResult<String> {
[INFO] [stdout]    |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_DB_INDEX` is never used
[INFO] [stdout]  --> looklapi/src/common/redisutils/redipool.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const MAX_DB_INDEX: u8 = 15;
[INFO] [stdout]   |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RedisPool` is never constructed
[INFO] [stdout]   --> looklapi/src/common/redisutils/redipool.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | struct RedisPool {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_client`, and `get_connection` are never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/redipool.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl RedisPool {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 15 |     fn new() -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     async fn get_client(&mut self, db_index: u8) -> RedisResult<&Client> {
[INFO] [stdout]    |              ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     async fn get_connection(&mut self, db_index: u8) -> RedisResult<Connection> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_db_index_from_key` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/redipool.rs:72:4
[INFO] [stdout]    |
[INFO] [stdout] 72 | fn get_db_index_from_key(key: &str) -> u8 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_conn` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/redipool.rs:87:14
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub async fn get_conn(key: &str) -> RedisResult<Connection> {
[INFO] [stdout]    |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_conn0` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/redipool.rs:94:14
[INFO] [stdout]    |
[INFO] [stdout] 94 | pub async fn get_conn0(db_index: u8) -> RedisResult<Connection> {
[INFO] [stdout]    |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `save_to_file`, `draw_image`, `draw_qr_code`, and `draw_head_img` are never used
[INFO] [stdout]    --> looklapi/src/commonapi/drawer/image_drawer.rs:54:12
[INFO] [stdout]     |
[INFO] [stdout]  12 | impl ImageDrawer {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  54 |     pub fn save_to_file(&self, filename: &str) -> anyhow::Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn draw_image(&mut self, img: ImageContentModel) -> anyhow::Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 198 |     pub fn draw_qr_code(&mut self, qr_code: ImageContentModel) -> anyhow::Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     pub fn draw_head_img(&mut self, head_img: ImageContentModel) -> anyhow::Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `draw_template_async`, `draw_image_async`, `draw_qr_code_async`, `draw_head_img_async`, and `draw_text_async` are never used
[INFO] [stdout]    --> looklapi/src/commonapi/drawer/image_drawer.rs:339:18
[INFO] [stdout]     |
[INFO] [stdout] 337 | impl ImageDrawer {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] 338 |     /// 绘制背景模板（异步）
[INFO] [stdout] 339 |     pub async fn draw_template_async(&mut self, template: ImageContentModel) -> anyhow::Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 385 |     pub async fn draw_image_async(&mut self, img: ImageContentModel) -> anyhow::Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 419 |     pub async fn draw_qr_code_async(&mut self, qr_code: ImageContentModel) -> anyhow::Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 425 |     pub async fn draw_head_img_async(&mut self, head_img: ImageContentModel) -> anyhow::Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 431 |     pub async fn draw_text_async(&mut self, text: TextModel) -> anyhow::Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_image_async` is never used
[INFO] [stdout]   --> looklapi/src/commonapi/drawer/image_helper.rs:18:14
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub async fn load_image_async(path: &str) -> anyhow::Result<DynamicImage> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_image_from_url_async` is never used
[INFO] [stdout]   --> looklapi/src/commonapi/drawer/image_helper.rs:40:10
[INFO] [stdout]    |
[INFO] [stdout] 40 | async fn load_image_from_url_async(url: &str) -> anyhow::Result<DynamicImage> {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `resize_image` is never used
[INFO] [stdout]   --> looklapi/src/commonapi/drawer/image_helper.rs:63:8
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub fn resize_image(img: &DynamicImage, width: u32, height: u32) -> DynamicImage {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cover_image` is never used
[INFO] [stdout]   --> looklapi/src/commonapi/drawer/image_helper.rs:69:8
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub fn cover_image(img: &DynamicImage, width: u32, height: u32) -> DynamicImage {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TextLine` is never constructed
[INFO] [stdout]  --> looklapi/src/commonapi/drawer/text_helper.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub struct TextLine {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `process_text_for_drawing` is never used
[INFO] [stdout]  --> looklapi/src/commonapi/drawer/text_helper.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub fn process_text_for_drawing<F>(
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_text_lines_position` is never used
[INFO] [stdout]   --> looklapi/src/commonapi/drawer/text_helper.rs:60:8
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub fn calculate_text_lines_position<F1, F2>(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `login_validator_middleware` is never used
[INFO] [stdout]   --> looklapi/src/controller/middleware/request_context_middleware.rs:22:14
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub async fn login_validator_middleware(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `manager_validator_middleware` is never used
[INFO] [stdout]   --> looklapi/src/controller/middleware/request_context_middleware.rs:31:14
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub async fn manager_validator_middleware(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `TestTrait` is never used
[INFO] [stdout]   --> looklapi/src/controller/test_controller.rs:51:7
[INFO] [stdout]    |
[INFO] [stdout] 51 | trait TestTrait {
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Test` is never constructed
[INFO] [stdout]   --> looklapi/src/controller/test_controller.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | struct Test;
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TestProxy` is never constructed
[INFO] [stdout]   --> looklapi/src/controller/test_controller.rs:69:8
[INFO] [stdout]    |
[INFO] [stdout] 69 | struct TestProxy {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `proxy_fn` and `other_fn` are never used
[INFO] [stdout]   --> looklapi/src/controller/test_controller.rs:74:8
[INFO] [stdout]    |
[INFO] [stdout] 73 | impl TestProxy {
[INFO] [stdout]    | -------------- methods in this implementation
[INFO] [stdout] 74 |     fn proxy_fn(&self) -> Result<(), AppError> {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 81 |     fn other_fn(&self) {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `serial` is never read
[INFO] [stdout]  --> looklapi/src/model/modelimpl/draw/image_content_model.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct ImageContentModel {
[INFO] [stdout]   |            ----------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 9 |     pub serial: i32,
[INFO] [stdout]   |         ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `ImageContentModel` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `radius` is never read
[INFO] [stdout]   --> looklapi/src/model/modelimpl/draw/rectangle_content_model.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct RectangleContentModel {
[INFO] [stdout]    |            --------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     pub radius: i32,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RectangleContentModel` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> looklapi/src/model/modelimpl/draw/text_model.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct TextModel {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub font: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub is_bold: bool,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 24 |     /// 是否倾斜
[INFO] [stdout] 25 |     pub is_italic: bool,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 26 |     /// 水平间距
[INFO] [stdout] 27 |     pub h_gap: f32,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 28 |     /// 行距
[INFO] [stdout] 29 |     pub v_gap: f32,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub boundary: i32,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 34 |     /// 行数限制
[INFO] [stdout] 35 |     pub row_limit: i32,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 36 |     /// 关联动态字符
[INFO] [stdout] 37 |     pub related_dynamic_text: Vec<Box<DynamicTextModel>>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TextModel` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> looklapi/src/model/modelimpl/draw/text_model.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | impl TextModel {
[INFO] [stdout]    | -------------- associated function in this implementation
[INFO] [stdout] 41 |     /// 创建静态文字模型实例
[INFO] [stdout] 42 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HTTP_REQUEST_HEADER` is never used
[INFO] [stdout]  --> looklapi/src/request_context.rs:4:11
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub const HTTP_REQUEST_HEADER: HeaderName = HeaderName::from_static("http-request-header");
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HTTP_REQUEST_EXTENSIONS` is never used
[INFO] [stdout]  --> looklapi/src/request_context.rs:5:11
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub const HTTP_REQUEST_EXTENSIONS: HeaderName = HeaderName::from_static("http-request-extensions");
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `login_info` is never read
[INFO] [stdout]   --> looklapi/src/request_context.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct RequestContext {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] 10 |     pub header: HeaderMap,
[INFO] [stdout] 11 |     pub login_info: Option<LoginInfo>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RequestContext` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `User` and `Admin` are never constructed
[INFO] [stdout]   --> looklapi/src/request_context.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum LoginInfo {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout] 17 |     User(()),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 18 |     Admin(()),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LoginInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> looklapi/src/common/loggers/mongo_logger.rs:113:9
[INFO] [stdout]     |
[INFO] [stdout] 113 |         mut writer: Writer<'_>,
[INFO] [stdout]     |         ----^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]    --> looklapi/src/common/loggers/mongo_logger.rs:112:9
[INFO] [stdout]     |
[INFO] [stdout] 112 |         ctx: &FmtContext<'_, S, N>,
[INFO] [stdout]     |         ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `writer`
[INFO] [stdout]    --> looklapi/src/common/loggers/mongo_logger.rs:113:9
[INFO] [stdout]     |
[INFO] [stdout] 113 |         mut writer: Writer<'_>,
[INFO] [stdout]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_writer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pool_clone`
[INFO] [stdout]    --> looklapi/src/common/mqutils/consumer.rs:391:13
[INFO] [stdout]     |
[INFO] [stdout] 391 |         let pool_clone = pool.clone();
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pool_clone`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `worker_count` is assigned to, but never used
[INFO] [stdout]    --> looklapi/src/common/mqutils/consumer.rs:707:13
[INFO] [stdout]     |
[INFO] [stdout] 707 |         let mut worker_count = 0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_worker_count` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `broadcaster_count` is assigned to, but never used
[INFO] [stdout]    --> looklapi/src/common/mqutils/consumer.rs:708:13
[INFO] [stdout]     |
[INFO] [stdout] 708 |         let mut broadcaster_count = 0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_broadcaster_count` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `topic_count` is assigned to, but never used
[INFO] [stdout]    --> looklapi/src/common/mqutils/consumer.rs:709:13
[INFO] [stdout]     |
[INFO] [stdout] 709 |         let mut topic_count = 0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_topic_count` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `worker_count` is never read
[INFO] [stdout]    --> looklapi/src/common/mqutils/consumer.rs:714:21
[INFO] [stdout]     |
[INFO] [stdout] 714 |                     worker_count += consumer.concurrency as usize;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `broadcaster_count` is never read
[INFO] [stdout]    --> looklapi/src/common/mqutils/consumer.rs:717:21
[INFO] [stdout]     |
[INFO] [stdout] 717 |                     broadcaster_count += 1;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `topic_count` is never read
[INFO] [stdout]    --> looklapi/src/common/mqutils/consumer.rs:720:21
[INFO] [stdout]     |
[INFO] [stdout] 720 |                     topic_count += 1;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `db_index`
[INFO] [stdout]   --> looklapi/src/common/redisutils/multi_cmds.rs:75:19
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub async fn eval(db_index: u8, script: &str, keys: &[&str], args: &[&str]) -> RedisResult<String> {
[INFO] [stdout]    |                   ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_db_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]   --> looklapi/src/controller/test_controller.rs:41:15
[INFO] [stdout]    |
[INFO] [stdout] 41 |     Extension(ctx): Extension<crate::request_context::RequestContext>,
[INFO] [stdout]    |               ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]   --> looklapi/src/controller/user_controller.rs:38:15
[INFO] [stdout]    |
[INFO] [stdout] 38 |     Extension(ctx): Extension<crate::request_context::RequestContext>,
[INFO] [stdout]    |               ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]   --> looklapi/src/app/app_config.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct Server {
[INFO] [stdout]    |            ------ field in this struct
[INFO] [stdout] 12 |     pub name: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Server` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `uri` is never read
[INFO] [stdout]   --> looklapi/src/app/app_config.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct Mysql {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] 18 |     pub uri: String,
[INFO] [stdout]    |         ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Mysql` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `uri` is never read
[INFO] [stdout]   --> looklapi/src/app/app_config.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct Mssql {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] 23 |     pub uri: String,
[INFO] [stdout]    |         ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Mssql` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `host`, `port`, `password`, and `timeout` are never read
[INFO] [stdout]   --> looklapi/src/app/app_config.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct Redis {
[INFO] [stdout]    |            ----- fields in this struct
[INFO] [stdout] 33 |     pub host: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 34 |     pub port: i32,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 35 |     pub password: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 36 |     /// 超时时间(毫秒)
[INFO] [stdout] 37 |     pub timeout: i32,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Redis` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> looklapi/src/app/app_config.rs:47:9
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub struct Consul {
[INFO] [stdout]    |            ------ fields in this struct
[INFO] [stdout] 47 |     pub host: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 48 |     pub port: i32,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 49 |     pub secure: bool,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 50 |     pub health_check: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 51 |     /// 健康检查间隔(秒)
[INFO] [stdout] 52 |     pub health_check_interval: i32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 53 |     /// 健康检查超时时间(秒)
[INFO] [stdout] 54 |     pub health_check_timeout: i32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 55 |     /// 服务注册超时时间(秒)
[INFO] [stdout] 56 |     pub deregister_critical_service_after: i32, // 秒
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Consul` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `developer` is never read
[INFO] [stdout]   --> looklapi/src/app/app_config.rs:66:9
[INFO] [stdout]    |
[INFO] [stdout] 65 | pub struct Dev {
[INFO] [stdout]    |            --- field in this struct
[INFO] [stdout] 66 |     pub developer: String,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Dev` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `profile`, `mysql`, `mssql`, `redis`, `consul`, and `dev` are never read
[INFO] [stdout]   --> looklapi/src/app/app_config.rs:83:9
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub struct AppConfig {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] 83 |     pub profile: String,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 84 |     pub server: Server,
[INFO] [stdout] 85 |     pub mysql: Option<Mysql>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 86 |     pub mssql: Option<Mssql>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 87 |     pub mongodb: Option<Mongodb>,
[INFO] [stdout] 88 |     pub redis: Option<Redis>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 89 |     pub rabbitmq: Option<RabbitMQ>,
[INFO] [stdout] 90 |     pub consul: Option<Consul>,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 91 |     pub logger: Logger,
[INFO] [stdout] 92 |     pub dev: Option<Dev>,
[INFO] [stdout]    |         ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AppConfig` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AppEventConfigInitialized` is never constructed
[INFO] [stdout]  --> looklapi/src/app/appcontext/events.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct AppEventConfigInitialized;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_ctx_mut` is never used
[INFO] [stdout]   --> looklapi/src/app/appcontext/rudi_context.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl RudiContext {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub fn get_ctx_mut(&mut self) -> &mut rudi::Context {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `reset` is never used
[INFO] [stdout]   --> looklapi/src/app/appcontext/test.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl TestObserver {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 28 |     fn reset(&self) {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `backtrace` and `span_trace` are never read
[INFO] [stdout]   --> looklapi/src/app/app_err.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct AppError {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 11 |     backtrace: Backtrace,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 12 |     span_trace: tracing_error::SpanTrace,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AppError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `message`, `backtrace`, and `span_trace` are never used
[INFO] [stdout]   --> looklapi/src/app/app_err.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl AppError {
[INFO] [stdout]    | ------------- associated items in this implementation
[INFO] [stdout] 16 |     pub fn new(message: &str) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn message(&self) -> &str {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn backtrace(&self) -> &Backtrace {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn span_trace(&self) -> &tracing_error::SpanTrace {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `log` is never used
[INFO] [stdout]   --> looklapi/src/app/app_err.rs:87:12
[INFO] [stdout]    |
[INFO] [stdout] 85 | impl AppError {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] 86 |     /// 记录日志
[INFO] [stdout] 87 |     pub fn log(&self) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `error` is never used
[INFO] [stdout]   --> looklapi/src/common/loggers/logger.rs:45:8
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub fn error(err: &AppError) {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LOG_LEVEL_CHANGE` is never used
[INFO] [stdout]  --> looklapi/src/common/mqutils/consts.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub const LOG_LEVEL_CHANGE: &str = "log_level_change"; // 日志等级变更交换器
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MANUAL_SERVICE_REFRESH` is never used
[INFO] [stdout]  --> looklapi/src/common/mqutils/consts.rs:2:11
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub const MANUAL_SERVICE_REFRESH: &str = "manual_service_refresh"; // 服务配置刷新交换器
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CONFIG_REFRESH_WATCH` is never used
[INFO] [stdout]  --> looklapi/src/common/mqutils/consts.rs:3:11
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub const CONFIG_REFRESH_WATCH: &str = "config_refresh_watch"; // 配置刷新交换器
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ConsumerType` is never used
[INFO] [stdout]  --> looklapi/src/common/mqutils/consts.rs:7:10
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub enum ConsumerType {
[INFO] [stdout]   |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Consumer` is never constructed
[INFO] [stdout]   --> looklapi/src/common/mqutils/consumer.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct Consumer {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new_work_queue_consumer`, `new_broadcast_consumer`, `new_topic_consumer`, and `on_received` are never used
[INFO] [stdout]    --> looklapi/src/common/mqutils/consumer.rs:38:12
[INFO] [stdout]     |
[INFO] [stdout]  36 | impl Consumer {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout]  37 |     // 新建工作队列消费者
[INFO] [stdout]  38 |     pub fn new_work_queue_consumer(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  81 |     pub fn new_broadcast_consumer(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn new_topic_consumer(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn on_received(&self, msg: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_workqueue_reconnect` is never used
[INFO] [stdout]    --> looklapi/src/common/mqutils/consumer.rs:180:10
[INFO] [stdout]     |
[INFO] [stdout] 180 | async fn handle_workqueue_reconnect(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_broadcast_reconnect` is never used
[INFO] [stdout]    --> looklapi/src/common/mqutils/consumer.rs:219:10
[INFO] [stdout]     |
[INFO] [stdout] 219 | async fn handle_broadcast_reconnect(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_topic_reconnect` is never used
[INFO] [stdout]    --> looklapi/src/common/mqutils/consumer.rs:258:10
[INFO] [stdout]     |
[INFO] [stdout] 258 | async fn handle_topic_reconnect(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConsumerBinder` is never constructed
[INFO] [stdout]    --> looklapi/src/common/mqutils/consumer.rs:298:8
[INFO] [stdout]     |
[INFO] [stdout] 298 | struct ConsumerBinder {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `bind_consumer`, `bind_work_queue_consumer`, `bind_broadcast_consumer`, `bind_topic_consumer`, and `init_consumers` are never used
[INFO] [stdout]    --> looklapi/src/common/mqutils/consumer.rs:305:8
[INFO] [stdout]     |
[INFO] [stdout] 304 | impl ConsumerBinder {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 305 |     fn new() -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 314 |     pub async fn bind_consumer(&self, consumer: Arc<Consumer>) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 346 |     async fn bind_work_queue_consumer(&self, consumer: Arc<Consumer>) -> bool {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 443 |     async fn bind_broadcast_consumer(&self, consumer: Arc<Consumer>) -> bool {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 565 |     async fn bind_topic_consumer(&self, consumer: Arc<Consumer>) -> bool {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 701 |     pub async fn init_consumers(&mut self) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CONN_IDLE_TIMEOUT_MIN` is never used
[INFO] [stdout]   --> looklapi/src/common/mqutils/models.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | const CONN_IDLE_TIMEOUT_MIN: i32 = 10;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CH_IDLE_TIMEOUT_MIN` is never used
[INFO] [stdout]   --> looklapi/src/common/mqutils/models.rs:13:7
[INFO] [stdout]    |
[INFO] [stdout] 13 | const CH_IDLE_TIMEOUT_MIN: i32 = 5;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CONN_LIMIT` is never used
[INFO] [stdout]   --> looklapi/src/common/mqutils/models.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const CONN_LIMIT: i32 = 100;
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CH_LIMIT_FOR_CONN` is never used
[INFO] [stdout]   --> looklapi/src/common/mqutils/models.rs:18:7
[INFO] [stdout]    |
[INFO] [stdout] 18 | const CH_LIMIT_FOR_CONN: i32 = 100;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Idle` is never constructed
[INFO] [stdout]   --> looklapi/src/common/mqutils/models.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub enum ChannelStatus {
[INFO] [stdout]    |          ------------- variant in this enum
[INFO] [stdout] 23 |     Idle,    // 空闲
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ChannelStatus` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MqMessage` is never constructed
[INFO] [stdout]    --> looklapi/src/common/mqutils/models.rs:115:12
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub struct MqMessage {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> looklapi/src/common/mqutils/models.rs:127:12
[INFO] [stdout]     |
[INFO] [stdout] 126 | impl MqMessage {
[INFO] [stdout]     | -------------- associated function in this implementation
[INFO] [stdout] 127 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Consumer` is never constructed
[INFO] [stdout]    --> looklapi/src/common/mqutils/models.rs:138:12
[INFO] [stdout]     |
[INFO] [stdout] 138 | pub struct Consumer {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pub_work_queue_msg` is never used
[INFO] [stdout]   --> looklapi/src/common/mqutils/publisher.rs:11:14
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub async fn pub_work_queue_msg<T: Serialize>(route_key: &str, msg: T) -> bool {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pub_broadcast_msg` is never used
[INFO] [stdout]   --> looklapi/src/common/mqutils/publisher.rs:31:14
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub async fn pub_broadcast_msg<T: Serialize>(exchange: &str, msg: T) -> bool {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pub_topic_msg` is never used
[INFO] [stdout]   --> looklapi/src/common/mqutils/publisher.rs:51:14
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub async fn pub_topic_msg<T: Serialize>(exchange: &str, route_key: &str, msg: T) -> bool {
[INFO] [stdout]    |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pub_work_queue_msg_internal` is never used
[INFO] [stdout]   --> looklapi/src/common/mqutils/publisher.rs:71:10
[INFO] [stdout]    |
[INFO] [stdout] 71 | async fn pub_work_queue_msg_internal(
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pub_broadcast_msg_internal` is never used
[INFO] [stdout]    --> looklapi/src/common/mqutils/publisher.rs:112:10
[INFO] [stdout]     |
[INFO] [stdout] 112 | async fn pub_broadcast_msg_internal(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pub_topic_msg_internal` is never used
[INFO] [stdout]    --> looklapi/src/common/mqutils/publisher.rs:152:10
[INFO] [stdout]     |
[INFO] [stdout] 152 | async fn pub_topic_msg_internal(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `convert_message` is never used
[INFO] [stdout]    --> looklapi/src/common/mqutils/publisher.rs:195:4
[INFO] [stdout]     |
[INFO] [stdout] 195 | fn convert_message<T: Serialize>(msg: T) -> Option<MqMessage> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `pub_ch_pipeline_rx`, `rec_conns`, `rec_chs`, and `rec_mu` are never read
[INFO] [stdout]   --> looklapi/src/common/mqutils/rabbitmq_pool.rs:59:5
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub struct RabbitmqConnPool {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub_ch_pipeline_rx: Arc<Mutex<mpsc::Receiver<Option<Arc<MqChannel>>>>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 60 |     /// 消费连接
[INFO] [stdout] 61 |     rec_conns: Mutex<Vec<Arc<RabbitMqConnData>>>,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 62 |     /// 消费者channel pool
[INFO] [stdout] 63 |     rec_chs: Mutex<Vec<Arc<MqChannel>>>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 64 |     /// 消费者管理锁
[INFO] [stdout] 65 |     rec_mu: Arc<Mutex<()>>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RabbitmqConnPool` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_pub_channel`, `get_rec_channel`, `get_or_create_rec_conn`, and `release_channel` are never used
[INFO] [stdout]    --> looklapi/src/common/mqutils/rabbitmq_pool.rs:133:18
[INFO] [stdout]     |
[INFO] [stdout]  70 | impl RabbitmqConnPool {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 133 |     pub async fn get_pub_channel(&self) -> Result<Arc<MqChannel>, Box<dyn std::error::Error>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 146 |     pub async fn get_rec_channel(&self) -> Result<Arc<MqChannel>, Box<dyn std::error::Error>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 228 |     async fn get_or_create_rec_conn(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 251 |     pub fn release_channel(&self, ch: Arc<MqChannel>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `retry` is never used
[INFO] [stdout]  --> looklapi/src/common/mqutils/retry.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn retry(meta_msg: &MqMessage, consumer: &crate::common::mqutils::consumer::Consumer) -> bool {
[INFO] [stdout]   |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `retry_success` is never used
[INFO] [stdout]   --> looklapi/src/common/mqutils/retry.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn retry_success(meta_msg: &MqMessage, consumer_type: ConsumerType) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CONFIG_MANUAL_SERVICE` is never used
[INFO] [stdout]  --> looklapi/src/common/redisutils/consts.rs:2:11
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub const CONFIG_MANUAL_SERVICE: &str = "config_manual_service";
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CONFIG_LOG` is never used
[INFO] [stdout]  --> looklapi/src/common/redisutils/consts.rs:4:11
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub const CONFIG_LOG: &str = "config_log";
[INFO] [stdout]   |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SERVICE_BOOT` is never used
[INFO] [stdout]  --> looklapi/src/common/redisutils/consts.rs:6:11
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub const SERVICE_BOOT: &str = "service_boot";
[INFO] [stdout]   |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `obj_to_json` is never used
[INFO] [stdout]  --> looklapi/src/common/redisutils/operator.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn obj_to_json<T: Serialize>(val: &T) -> Result<String, serde_json::Error> {
[INFO] [stdout]   |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `json_to_obj` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/operator.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn json_to_obj<T: DeserializeOwned>(json: &str) -> Result<T, serde_json::Error> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/operator.rs:16:14
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub async fn set<T: Serialize>(key: &str, val: &T) -> RedisResult<()> {
[INFO] [stdout]    |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_ex` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/operator.rs:30:14
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub async fn set_ex<T: Serialize>(key: &str, val: &T, secs: u64) -> RedisResult<()> {
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/operator.rs:44:14
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub async fn get<T: DeserializeOwned>(key: &str) -> RedisResult<T> {
[INFO] [stdout]    |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `incr` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/operator.rs:58:14
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub async fn incr(key: &str, incr_val: i64) -> RedisResult<i64> {
[INFO] [stdout]    |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `scan` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/operator.rs:71:14
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub async fn scan(db_index: u8, pattern: &str, limit: usize) -> RedisResult<Vec<String>> {
[INFO] [stdout]    |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hash_set` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/operator.rs:115:14
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub async fn hash_set<T: Serialize>(key: &str, field: &str, val: &T) -> RedisResult<()> {
[INFO] [stdout]     |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hash_get` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/operator.rs:129:14
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub async fn hash_get<T: DeserializeOwned>(key: &str, field: &str) -> RedisResult<T> {
[INFO] [stdout]     |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hash_keys` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/operator.rs:143:14
[INFO] [stdout]     |
[INFO] [stdout] 143 | pub async fn hash_keys(key: &str) -> RedisResult<Vec<String>> {
[INFO] [stdout]     |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hash_values` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/operator.rs:156:14
[INFO] [stdout]     |
[INFO] [stdout] 156 | pub async fn hash_values<T: DeserializeOwned>(key: &str) -> RedisResult<Vec<T>> {
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hash_get_all` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/operator.rs:173:14
[INFO] [stdout]     |
[INFO] [stdout] 173 | pub async fn hash_get_all<T: DeserializeOwned>(key: &str) -> RedisResult<Vec<(String, T)>> {
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `exist` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/operator.rs:194:14
[INFO] [stdout]     |
[INFO] [stdout] 194 | pub async fn exist(key: &str) -> RedisResult<bool> {
[INFO] [stdout]     |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `h_exist` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/operator.rs:204:14
[INFO] [stdout]     |
[INFO] [stdout] 204 | pub async fn h_exist(key: &str, field: &str) -> RedisResult<bool> {
[INFO] [stdout]     |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `del` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/operator.rs:214:14
[INFO] [stdout]     |
[INFO] [stdout] 214 | pub async fn del(key: &str) -> RedisResult<()> {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `h_del` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/operator.rs:225:14
[INFO] [stdout]     |
[INFO] [stdout] 225 | pub async fn h_del(key: &str, field: &str) -> RedisResult<()> {
[INFO] [stdout]     |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `h_del_multiple` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/operator.rs:236:14
[INFO] [stdout]     |
[INFO] [stdout] 236 | pub async fn h_del_multiple(key: &str, fields: &[&str]) -> RedisResult<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hash_incr` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/operator.rs:247:14
[INFO] [stdout]     |
[INFO] [stdout] 247 | pub async fn hash_incr(key: &str, field: &str, incr_val: i64) -> RedisResult<i64> {
[INFO] [stdout]     |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `h_len` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/operator.rs:264:14
[INFO] [stdout]     |
[INFO] [stdout] 264 | pub async fn h_len(key: &str) -> RedisResult<usize> {
[INFO] [stdout]     |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_key_exp_secs` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/operator.rs:277:14
[INFO] [stdout]     |
[INFO] [stdout] 277 | pub async fn set_key_exp_secs(key: &str, exp_secs: u64) -> RedisResult<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_key_exp_millisecs` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/operator.rs:290:14
[INFO] [stdout]     |
[INFO] [stdout] 290 | pub async fn set_key_exp_millisecs(key: &str, exp_millisecs: u64) -> RedisResult<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_key_exp_unix_secs` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/operator.rs:303:14
[INFO] [stdout]     |
[INFO] [stdout] 303 | pub async fn set_key_exp_unix_secs(key: &str, exp_time: u64) -> RedisResult<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_key_exp_unix_millisecs` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/operator.rs:319:14
[INFO] [stdout]     |
[INFO] [stdout] 319 | pub async fn set_key_exp_unix_millisecs(key: &str, exp_time: u64) -> RedisResult<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `remove_key_exp` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/operator.rs:335:14
[INFO] [stdout]     |
[INFO] [stdout] 335 | pub async fn remove_key_exp(key: &str) -> RedisResult<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_key_ttl_secs` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/operator.rs:348:14
[INFO] [stdout]     |
[INFO] [stdout] 348 | pub async fn get_key_ttl_secs(key: &str) -> RedisResult<i64> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_key_ttl_millisecs` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/operator.rs:361:14
[INFO] [stdout]     |
[INFO] [stdout] 361 | pub async fn get_key_ttl_millisecs(key: &str) -> RedisResult<i64> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lpush` is never used
[INFO] [stdout]  --> looklapi/src/common/redisutils/list.rs:7:14
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub async fn lpush<T: Serialize>(key: &str, values: &[T]) -> RedisResult<usize> {
[INFO] [stdout]   |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rpush` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/list.rs:35:14
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub async fn rpush<T: Serialize>(key: &str, values: &[T]) -> RedisResult<usize> {
[INFO] [stdout]    |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lpop` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/list.rs:63:14
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub async fn lpop<T: DeserializeOwned>(key: &str) -> RedisResult<T> {
[INFO] [stdout]    |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rpop` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/list.rs:77:14
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub async fn rpop<T: DeserializeOwned>(key: &str) -> RedisResult<T> {
[INFO] [stdout]    |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rpoplpush` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/list.rs:91:14
[INFO] [stdout]    |
[INFO] [stdout] 91 | pub async fn rpoplpush<T: DeserializeOwned>(
[INFO] [stdout]    |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lremove` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/list.rs:108:14
[INFO] [stdout]     |
[INFO] [stdout] 108 | pub async fn lremove(key: &str, count: isize, value: &str) -> RedisResult<usize> {
[INFO] [stdout]     |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `llen` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/list.rs:121:14
[INFO] [stdout]     |
[INFO] [stdout] 121 | pub async fn llen(key: &str) -> RedisResult<usize> {
[INFO] [stdout]     |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lindex` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/list.rs:134:14
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub async fn lindex<T: DeserializeOwned>(key: &str, index: isize) -> RedisResult<T> {
[INFO] [stdout]     |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lset` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/list.rs:148:14
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub async fn lset<T: Serialize>(key: &str, index: isize, value: &T) -> RedisResult<()> {
[INFO] [stdout]     |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lrange` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/list.rs:162:14
[INFO] [stdout]     |
[INFO] [stdout] 162 | pub async fn lrange<T: DeserializeOwned>(
[INFO] [stdout]     |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ltrim` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/list.rs:183:14
[INFO] [stdout]     |
[INFO] [stdout] 183 | pub async fn ltrim(key: &str, start: isize, end: isize) -> RedisResult<()> {
[INFO] [stdout]     |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sadd` is never used
[INFO] [stdout]  --> looklapi/src/common/redisutils/set.rs:7:14
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub async fn sadd<T: Serialize>(key: &str, members: &[T]) -> RedisResult<usize> {
[INFO] [stdout]   |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `srem` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/set.rs:32:14
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub async fn srem(key: &str, members: &[&str]) -> RedisResult<usize> {
[INFO] [stdout]    |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sismember` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/set.rs:49:14
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub async fn sismember<T: Serialize>(key: &str, member: &T) -> RedisResult<bool> {
[INFO] [stdout]    |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `smembers` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/set.rs:63:14
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub async fn smembers<T: DeserializeOwned>(key: &str) -> RedisResult<Vec<T>> {
[INFO] [stdout]    |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `scard` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/set.rs:80:14
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub async fn scard(key: &str) -> RedisResult<usize> {
[INFO] [stdout]    |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `spop` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/set.rs:93:14
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub async fn spop<T: DeserializeOwned>(key: &str) -> RedisResult<T> {
[INFO] [stdout]    |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `srandmember` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/set.rs:107:14
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub async fn srandmember<T: DeserializeOwned>(key: &str, count: usize) -> RedisResult<Vec<T>> {
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sdiff` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/set.rs:129:14
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub async fn sdiff<T: DeserializeOwned>(key1: &str, key2: &str) -> RedisResult<Vec<T>> {
[INFO] [stdout]     |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sinter` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/set.rs:146:14
[INFO] [stdout]     |
[INFO] [stdout] 146 | pub async fn sinter<T: DeserializeOwned>(key1: &str, key2: &str) -> RedisResult<Vec<T>> {
[INFO] [stdout]     |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sunion` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/set.rs:163:14
[INFO] [stdout]     |
[INFO] [stdout] 163 | pub async fn sunion<T: DeserializeOwned>(key1: &str, key2: &str) -> RedisResult<Vec<T>> {
[INFO] [stdout]     |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `zadd` is never used
[INFO] [stdout]  --> looklapi/src/common/redisutils/zset.rs:7:14
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub async fn zadd<T: Serialize>(key: &str, score: f64, member: &T) -> RedisResult<usize> {
[INFO] [stdout]   |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `zrem` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/zset.rs:18:14
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub async fn zrem(key: &str, members: &[&str]) -> RedisResult<usize> {
[INFO] [stdout]    |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `zscore` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/zset.rs:32:14
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub async fn zscore<T: Serialize>(key: &str, member: &T) -> RedisResult<f64> {
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `zincrby` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/zset.rs:43:14
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub async fn zincrby<T: Serialize>(key: &str, increment: f64, member: &T) -> RedisResult<f64> {
[INFO] [stdout]    |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `zcard` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/zset.rs:56:14
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub async fn zcard(key: &str) -> RedisResult<usize> {
[INFO] [stdout]    |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `zrangebyscore` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/zset.rs:66:14
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub async fn zrangebyscore<T: DeserializeOwned>(key: &str, min: f64, max: f64) -> RedisResult<Vec<T>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `zrange` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/zset.rs:77:14
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub async fn zrange<T: DeserializeOwned>(key: &str, start: isize, stop: isize) -> RedisResult<Vec<T>> {
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `zrevrange` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/zset.rs:88:14
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub async fn zrevrange<T: DeserializeOwned>(key: &str, start: isize, stop: isize) -> RedisResult<Vec<T>> {
[INFO] [stdout]    |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `zrank` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/zset.rs:99:14
[INFO] [stdout]    |
[INFO] [stdout] 99 | pub async fn zrank<T: Serialize>(key: &str, member: &T) -> RedisResult<Option<usize>> {
[INFO] [stdout]    |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `zrevrank` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/zset.rs:110:14
[INFO] [stdout]     |
[INFO] [stdout] 110 | pub async fn zrevrank<T: Serialize>(key: &str, member: &T) -> RedisResult<Option<usize>> {
[INFO] [stdout]     |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `zremrangebyscore` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/zset.rs:121:14
[INFO] [stdout]     |
[INFO] [stdout] 121 | pub async fn zremrangebyscore(key: &str, min: f64, max: f64) -> RedisResult<usize> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `zremrangebyrank` is never used
[INFO] [stdout]    --> looklapi/src/common/redisutils/zset.rs:133:14
[INFO] [stdout]     |
[INFO] [stdout] 133 | pub async fn zremrangebyrank(key: &str, start: isize, stop: isize) -> RedisResult<usize> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lock` is never used
[INFO] [stdout]  --> looklapi/src/common/redisutils/locker.rs:6:14
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub async fn lock(key: &str, expire_secs: u64) -> RedisResult<bool> {
[INFO] [stdout]   |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unlock` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/locker.rs:23:14
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub async fn unlock(key: &str) -> RedisResult<()> {
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_lock` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/locker.rs:34:14
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub async fn try_lock(key: &str, expire_secs: u64, max_retry: usize, retry_interval_ms: u64) -> RedisResult<bool> {
[INFO] [stdout]    |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `multi_exec` is never used
[INFO] [stdout]  --> looklapi/src/common/redisutils/multi_cmds.rs:5:14
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub async fn multi_exec(key: &str, commands: &[(String, Vec<&str>)]) -> RedisResult<()> {
[INFO] [stdout]   |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `eval` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/multi_cmds.rs:75:14
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub async fn eval(db_index: u8, script: &str, keys: &[&str], args: &[&str]) -> RedisResult<String> {
[INFO] [stdout]    |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_DB_INDEX` is never used
[INFO] [stdout]  --> looklapi/src/common/redisutils/redipool.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const MAX_DB_INDEX: u8 = 15;
[INFO] [stdout]   |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RedisPool` is never constructed
[INFO] [stdout]   --> looklapi/src/common/redisutils/redipool.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | struct RedisPool {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_client`, and `get_connection` are never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/redipool.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl RedisPool {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 15 |     fn new() -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     async fn get_client(&mut self, db_index: u8) -> RedisResult<&Client> {
[INFO] [stdout]    |              ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     async fn get_connection(&mut self, db_index: u8) -> RedisResult<Connection> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_db_index_from_key` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/redipool.rs:72:4
[INFO] [stdout]    |
[INFO] [stdout] 72 | fn get_db_index_from_key(key: &str) -> u8 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_conn` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/redipool.rs:87:14
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub async fn get_conn(key: &str) -> RedisResult<Connection> {
[INFO] [stdout]    |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_conn0` is never used
[INFO] [stdout]   --> looklapi/src/common/redisutils/redipool.rs:94:14
[INFO] [stdout]    |
[INFO] [stdout] 94 | pub async fn get_conn0(db_index: u8) -> RedisResult<Connection> {
[INFO] [stdout]    |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `save_to_file`, `draw_image`, `draw_qr_code`, and `draw_head_img` are never used
[INFO] [stdout]    --> looklapi/src/commonapi/drawer/image_drawer.rs:54:12
[INFO] [stdout]     |
[INFO] [stdout]  12 | impl ImageDrawer {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  54 |     pub fn save_to_file(&self, filename: &str) -> anyhow::Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn draw_image(&mut self, img: ImageContentModel) -> anyhow::Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 198 |     pub fn draw_qr_code(&mut self, qr_code: ImageContentModel) -> anyhow::Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     pub fn draw_head_img(&mut self, head_img: ImageContentModel) -> anyhow::Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `draw_template_async`, `draw_image_async`, `draw_qr_code_async`, `draw_head_img_async`, and `draw_text_async` are never used
[INFO] [stdout]    --> looklapi/src/commonapi/drawer/image_drawer.rs:339:18
[INFO] [stdout]     |
[INFO] [stdout] 337 | impl ImageDrawer {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] 338 |     /// 绘制背景模板（异步）
[INFO] [stdout] 339 |     pub async fn draw_template_async(&mut self, template: ImageContentModel) -> anyhow::Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 385 |     pub async fn draw_image_async(&mut self, img: ImageContentModel) -> anyhow::Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 419 |     pub async fn draw_qr_code_async(&mut self, qr_code: ImageContentModel) -> anyhow::Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 425 |     pub async fn draw_head_img_async(&mut self, head_img: ImageContentModel) -> anyhow::Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 431 |     pub async fn draw_text_async(&mut self, text: TextModel) -> anyhow::Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_image_async` is never used
[INFO] [stdout]   --> looklapi/src/commonapi/drawer/image_helper.rs:18:14
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub async fn load_image_async(path: &str) -> anyhow::Result<DynamicImage> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_image_from_url_async` is never used
[INFO] [stdout]   --> looklapi/src/commonapi/drawer/image_helper.rs:40:10
[INFO] [stdout]    |
[INFO] [stdout] 40 | async fn load_image_from_url_async(url: &str) -> anyhow::Result<DynamicImage> {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `resize_image` is never used
[INFO] [stdout]   --> looklapi/src/commonapi/drawer/image_helper.rs:63:8
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub fn resize_image(img: &DynamicImage, width: u32, height: u32) -> DynamicImage {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cover_image` is never used
[INFO] [stdout]   --> looklapi/src/commonapi/drawer/image_helper.rs:69:8
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub fn cover_image(img: &DynamicImage, width: u32, height: u32) -> DynamicImage {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TextLine` is never constructed
[INFO] [stdout]  --> looklapi/src/commonapi/drawer/text_helper.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub struct TextLine {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `process_text_for_drawing` is never used
[INFO] [stdout]  --> looklapi/src/commonapi/drawer/text_helper.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub fn process_text_for_drawing<F>(
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_text_lines_position` is never used
[INFO] [stdout]   --> looklapi/src/commonapi/drawer/text_helper.rs:60:8
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub fn calculate_text_lines_position<F1, F2>(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `login_validator_middleware` is never used
[INFO] [stdout]   --> looklapi/src/controller/middleware/request_context_middleware.rs:22:14
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub async fn login_validator_middleware(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `manager_validator_middleware` is never used
[INFO] [stdout]   --> looklapi/src/controller/middleware/request_context_middleware.rs:31:14
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub async fn manager_validator_middleware(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `TestTrait` is never used
[INFO] [stdout]   --> looklapi/src/controller/test_controller.rs:51:7
[INFO] [stdout]    |
[INFO] [stdout] 51 | trait TestTrait {
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Test` is never constructed
[INFO] [stdout]   --> looklapi/src/controller/test_controller.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | struct Test;
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TestProxy` is never constructed
[INFO] [stdout]   --> looklapi/src/controller/test_controller.rs:69:8
[INFO] [stdout]    |
[INFO] [stdout] 69 | struct TestProxy {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `proxy_fn` and `other_fn` are never used
[INFO] [stdout]   --> looklapi/src/controller/test_controller.rs:74:8
[INFO] [stdout]    |
[INFO] [stdout] 73 | impl TestProxy {
[INFO] [stdout]    | -------------- methods in this implementation
[INFO] [stdout] 74 |     fn proxy_fn(&self) -> Result<(), AppError> {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 81 |     fn other_fn(&self) {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `serial` is never read
[INFO] [stdout]  --> looklapi/src/model/modelimpl/draw/image_content_model.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct ImageContentModel {
[INFO] [stdout]   |            ----------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 9 |     pub serial: i32,
[INFO] [stdout]   |         ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `ImageContentModel` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `radius` is never read
[INFO] [stdout]   --> looklapi/src/model/modelimpl/draw/rectangle_content_model.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct RectangleContentModel {
[INFO] [stdout]    |            --------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     pub radius: i32,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RectangleContentModel` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> looklapi/src/model/modelimpl/draw/text_model.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct TextModel {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub font: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub is_bold: bool,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 24 |     /// 是否倾斜
[INFO] [stdout] 25 |     pub is_italic: bool,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 26 |     /// 水平间距
[INFO] [stdout] 27 |     pub h_gap: f32,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 28 |     /// 行距
[INFO] [stdout] 29 |     pub v_gap: f32,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub boundary: i32,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 34 |     /// 行数限制
[INFO] [stdout] 35 |     pub row_limit: i32,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 36 |     /// 关联动态字符
[INFO] [stdout] 37 |     pub related_dynamic_text: Vec<Box<DynamicTextModel>>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TextModel` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> looklapi/src/model/modelimpl/draw/text_model.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | impl TextModel {
[INFO] [stdout]    | -------------- associated function in this implementation
[INFO] [stdout] 41 |     /// 创建静态文字模型实例
[INFO] [stdout] 42 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HTTP_REQUEST_HEADER` is never used
[INFO] [stdout]  --> looklapi/src/request_context.rs:4:11
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub const HTTP_REQUEST_HEADER: HeaderName = HeaderName::from_static("http-request-header");
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HTTP_REQUEST_EXTENSIONS` is never used
[INFO] [stdout]  --> looklapi/src/request_context.rs:5:11
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub const HTTP_REQUEST_EXTENSIONS: HeaderName = HeaderName::from_static("http-request-extensions");
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `login_info` is never read
[INFO] [stdout]   --> looklapi/src/request_context.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct RequestContext {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] 10 |     pub header: HeaderMap,
[INFO] [stdout] 11 |     pub login_info: Option<LoginInfo>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RequestContext` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `User` and `Admin` are never constructed
[INFO] [stdout]   --> looklapi/src/request_context.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum LoginInfo {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout] 17 |     User(()),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 18 |     Admin(()),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LoginInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 4m 58s
[INFO] running `Command { std: "docker" "inspect" "27a4a6ff11876739db9615b04c65e81104a66804fbfe9d91f2697fa484fcb995", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "27a4a6ff11876739db9615b04c65e81104a66804fbfe9d91f2697fa484fcb995", kill_on_drop: false }`
[INFO] [stdout] 27a4a6ff11876739db9615b04c65e81104a66804fbfe9d91f2697fa484fcb995
