[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] testing DOLLook/looklapi-rs against 1.94.0 for beta-1.95-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FDOLLook%2Flooklapi-rs" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/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-0-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/DOLLook/looklapi-rs on toolchain 1.94.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.94.0" "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" "+1.94.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded unicase v2.9.0
[INFO] [stderr]   Downloaded http-range-header v0.4.2
[INFO] [stderr]   Downloaded critical-section v1.2.0
[INFO] [stderr]   Downloaded compression-core v0.4.31
[INFO] [stderr]   Downloaded salsa20 v0.10.2
[INFO] [stderr]   Downloaded zstd-safe v7.2.4
[INFO] [stderr]   Downloaded smart-default v0.7.1
[INFO] [stderr]   Downloaded rudi-macro v0.8.3
[INFO] [stderr]   Downloaded scrypt v0.11.0
[INFO] [stderr]   Downloaded rc2 v0.8.1
[INFO] [stderr]   Downloaded block-padding v0.3.3
[INFO] [stderr]   Downloaded amq-protocol-uri v8.3.1
[INFO] [stderr]   Downloaded flagset v0.4.7
[INFO] [stderr]   Downloaded asn1-rs-derive v0.6.0
[INFO] [stderr]   Downloaded cbc v0.1.2
[INFO] [stderr]   Downloaded base64ct v1.8.3
[INFO] [stderr]   Downloaded loop9 v0.1.5
[INFO] [stderr]   Downloaded avif-serialize v0.8.6
[INFO] [stderr]   Downloaded async-lock v3.4.2
[INFO] [stderr]   Downloaded rust-ini v0.21.3
[INFO] [stderr]   Downloaded multer v3.1.0
[INFO] [stderr]   Downloaded v_frame v0.3.9
[INFO] [stderr]   Downloaded pest_meta v2.8.5
[INFO] [stderr]   Downloaded pest_derive v2.8.5
[INFO] [stderr]   Downloaded yaml-rust2 v0.10.4
[INFO] [stderr]   Downloaded imgref v1.12.0
[INFO] [stderr]   Downloaded pest v2.8.5
[INFO] [stderr]   Downloaded ttf-parser v0.15.2
[INFO] [stderr]   Downloaded moxcms v0.7.11
[INFO] [stderr]   Downloaded libfuzzer-sys v0.4.10
[INFO] [stderr]   Downloaded fontdue v0.7.3
[INFO] [stderr]   Downloaded cms v0.2.3
[INFO] [stderr]   Downloaded webpki-roots v1.0.5
[INFO] [stderr]   Downloaded moka v0.12.12
[INFO] [stderr]   Downloaded time v0.3.45
[INFO] [stderr]   Downloaded aws-lc-rs v1.15.2
[INFO] [stderr]   Downloaded image v0.25.9
[INFO] [stderr]   Downloaded hickory-proto v0.25.2
[INFO] [stderr]   Downloaded redis v1.0.2
[INFO] [stderr]   Downloaded mongodb v3.5.0
[INFO] [stderr]   Downloaded png v0.18.0
[INFO] [stderr]   Downloaded zune-jpeg v0.5.8
[INFO] [stderr]   Downloaded bitstream-io v4.9.0
[INFO] [stderr]   Downloaded lapin v3.7.2
[INFO] [stderr]   Downloaded webpki-root-certs v1.0.5
[INFO] [stderr]   Downloaded reqwest v0.13.1
[INFO] [stderr]   Downloaded hashlink v0.10.0
[INFO] [stderr]   Downloaded av-scenechange v0.14.1
[INFO] [stderr]   Downloaded config v0.15.19
[INFO] [stderr]   Downloaded av1-grain v0.2.5
[INFO] [stderr]   Downloaded arbitrary v1.4.2
[INFO] [stderr]   Downloaded unicode-normalization v0.1.25
[INFO] [stderr]   Downloaded ureq v3.1.4
[INFO] [stderr]   Downloaded gif v0.14.1
[INFO] [stderr]   Downloaded built v0.8.0
[INFO] [stderr]   Downloaded des v0.8.1
[INFO] [stderr]   Downloaded zstd-sys v2.0.16+zstd.1.5.7
[INFO] [stderr]   Downloaded pkcs12 v0.1.0
[INFO] [stderr]   Downloaded x509-parser v0.17.0
[INFO] [stderr]   Downloaded bson v2.15.0
[INFO] [stderr]   Downloaded portable-atomic v1.13.0
[INFO] [stderr]   Downloaded ravif v0.12.0
[INFO] [stderr]   Downloaded zune-core v0.5.0
[INFO] [stderr]   Downloaded pest_generator v2.8.5
[INFO] [stderr]   Downloaded asn1-rs v0.7.1
[INFO] [stderr]   Downloaded flume v0.11.1
[INFO] [stderr]   Downloaded widestring v1.2.1
[INFO] [stderr]   Downloaded hickory-resolver v0.25.2
[INFO] [stderr]   Downloaded pxfm v0.1.27
[INFO] [stderr]   Downloaded bon-macros v3.8.2
[INFO] [stderr]   Downloaded arc-swap v1.8.0
[INFO] [stderr]   Downloaded rustls-webpki v0.103.8
[INFO] [stderr]   Downloaded as-slice v0.2.1
[INFO] [stderr]   Downloaded interpolate_name v0.2.4
[INFO] [stderr]   Downloaded maybe-rayon v0.1.1
[INFO] [stderr]   Downloaded simd_helpers v0.1.0
[INFO] [stderr]   Downloaded fax_derive v0.2.0
[INFO] [stderr]   Downloaded der-parser v10.0.0
[INFO] [stderr]   Downloaded p12-keystore v0.2.0
[INFO] [stderr]   Downloaded derive-where v1.6.0
[INFO] [stderr]   Downloaded async-io v2.6.0
[INFO] [stderr]   Downloaded bon v3.8.2
[INFO] [stderr]   Downloaded slog v2.8.2
[INFO] [stderr]   Downloaded ureq-proto v0.5.3
[INFO] [stderr]   Downloaded aligned v0.4.3
[INFO] [stderr]   Downloaded noop_proc_macro v0.3.0
[INFO] [stderr]   Downloaded equator v0.4.2
[INFO] [stderr]   Downloaded aligned-vec v0.6.4
[INFO] [stderr]   Downloaded fax v0.2.6
[INFO] [stderr]   Downloaded x509-cert v0.2.5
[INFO] [stderr]   Downloaded pkcs5 v0.7.1
[INFO] [stderr]   Downloaded amq-protocol-tcp v8.3.1
[INFO] [stderr]   Downloaded cookie-factory v0.3.3
[INFO] [stderr]   Downloaded amq-protocol v8.3.1
[INFO] [stderr]   Downloaded event-listener v5.4.1
[INFO] [stderr]   Downloaded async-task v4.7.1
[INFO] [stderr]   Downloaded backon v1.6.0
[INFO] [stderr]   Downloaded rav1e v0.8.1
[INFO] [stderr]   Downloaded tiff v0.10.3
[INFO] [stderr]   Downloaded stringprep v0.1.5
[INFO] [stderr]   Downloaded arcstr v1.2.0
[INFO] [stderr]   Downloaded xxhash-rust v0.8.15
[INFO] [stderr]   Downloaded time-macros v0.2.25
[INFO] [stderr]   Downloaded cookie_store v0.22.0
[INFO] [stderr]   Downloaded rustls-pki-types v1.13.2
[INFO] [stderr]   Downloaded rs-consul v0.13.0
[INFO] [stderr]   Downloaded rudi v0.8.3
[INFO] [stderr]   Downloaded zmij v1.0.14
[INFO] [stderr]   Downloaded zstd v0.13.3
[INFO] [stderr]   Downloaded async-compression v0.4.37
[INFO] [stderr]   Downloaded arg_enum_proc_macro v0.3.4
[INFO] [stderr]   Downloaded y4m v0.8.0
[INFO] [stderr]   Downloaded profiling-procmacros v1.0.17
[INFO] [stderr]   Downloaded profiling v1.0.17
[INFO] [stderr]   Downloaded equator-macro v0.4.2
[INFO] [stderr]   Downloaded oid-registry v0.8.1
[INFO] [stderr]   Downloaded futures-rustls v0.26.0
[INFO] [stderr]   Downloaded tcp-stream v0.30.9
[INFO] [stderr]   Downloaded async-executor v1.13.3
[INFO] [stderr]   Downloaded event-listener-strategy v0.5.4
[INFO] [stderr]   Downloaded async-channel v2.5.0
[INFO] [stderr]   Downloaded piper v0.2.4
[INFO] [stderr]   Downloaded blocking v1.6.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 typed-builder-macro v0.22.0
[INFO] [stderr]   Downloaded typed-builder v0.22.0
[INFO] [stderr]   Downloaded inventory v0.3.21
[INFO] [stderr]   Downloaded proc-macro-utils v0.10.0
[INFO] [stderr]   Downloaded from-attr v0.1.3
[INFO] [stderr]   Downloaded amq-protocol-types v8.3.1
[INFO] [stderr]   Downloaded slog-scope v4.4.0
[INFO] [stderr]   Downloaded der_derive v0.7.3
[INFO] [stderr]   Downloaded async-reactor-trait v3.1.1
[INFO] [stderr]   Downloaded openssl-probe v0.2.0
[INFO] [stderr]   Downloaded rustls-connector v0.21.11
[INFO] [stderr]   Downloaded executor-trait v3.1.0
[INFO] [stderr]   Downloaded reactor-trait v2.8.0
[INFO] [stderr]   Downloaded tagptr v0.2.0
[INFO] [stderr]   Downloaded rustc_version_runtime v0.3.0
[INFO] [stderr]   Downloaded take_mut v0.2.2
[INFO] [stderr]   Downloaded async-global-executor v3.1.0
[INFO] [stderr]   Downloaded async-global-executor-trait v3.1.0
[INFO] [stderr]   Downloaded parking v2.2.1
[INFO] [stderr]   Downloaded executor-trait v2.1.2
[INFO] [stderr]   Downloaded enum-as-inner v0.6.1
[INFO] [stderr]   Downloaded mongodb-internal-macros v3.5.0
[INFO] [stderr]   Downloaded async-global-executor-trait v2.2.0
[INFO] [stderr]   Downloaded reactor-trait v3.1.1
[INFO] [stderr]   Downloaded serde_bytes v0.11.19
[INFO] [stderr]   Downloaded time-core v0.1.7
[INFO] [stderr]   Downloaded from-attr-core v0.1.3
[INFO] [stderr]   Downloaded from-attr-macro v0.1.3
[INFO] [stderr]   Downloaded rudi-core v0.1.0
[INFO] [stderr]   Downloaded quote-use-macros v0.8.4
[INFO] [stderr]   Downloaded quote-use v0.8.4
[INFO] [stderr]   Downloaded compression-codecs v0.4.36
[INFO] [stderr]   Downloaded aws-lc-sys v0.35.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.94.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 11e54d6522a8420cf7e20be7f3ebc9ee7c4ed51c78bfe73665a0abf355fbf66d
[INFO] running `Command { std: "docker" "start" "-a" "11e54d6522a8420cf7e20be7f3ebc9ee7c4ed51c78bfe73665a0abf355fbf66d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "11e54d6522a8420cf7e20be7f3ebc9ee7c4ed51c78bfe73665a0abf355fbf66d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "11e54d6522a8420cf7e20be7f3ebc9ee7c4ed51c78bfe73665a0abf355fbf66d", kill_on_drop: false }`
[INFO] [stdout] 11e54d6522a8420cf7e20be7f3ebc9ee7c4ed51c78bfe73665a0abf355fbf66d
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.94.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 3c7b8e5f0ff883e7840569524b457654a4e0a69a0adb00f19f6f90f6342674d5
[INFO] running `Command { std: "docker" "start" "-a" "3c7b8e5f0ff883e7840569524b457654a4e0a69a0adb00f19f6f90f6342674d5", 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]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling portable-atomic v1.13.0
[INFO] [stderr]    Compiling critical-section v1.2.0
[INFO] [stderr]    Compiling find-msvc-tools v0.1.7
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling stable_deref_trait v1.2.1
[INFO] [stderr]    Compiling typenum v1.19.0
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling zeroize v1.8.2
[INFO] [stderr]    Compiling bytes v1.11.0
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling subtle v2.6.1
[INFO] [stderr]    Compiling zerocopy v0.8.33
[INFO] [stderr]    Compiling syn v2.0.114
[INFO] [stderr]    Compiling dunce v1.0.5
[INFO] [stderr]    Compiling fs_extra v1.3.0
[INFO] [stderr]    Compiling indexmap v2.13.0
[INFO] [stderr]    Compiling once_cell v1.21.3
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling rustls-pki-types v1.13.2
[INFO] [stderr]    Compiling aws-lc-rs v1.15.2
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling cc v1.2.52
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling socket2 v0.6.1
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling parking v2.2.1
[INFO] [stderr]    Compiling percent-encoding v2.3.2
[INFO] [stderr]    Compiling concurrent-queue v2.5.0
[INFO] [stderr]    Compiling untrusted v0.9.0
[INFO] [stderr]    Compiling zmij v1.0.14
[INFO] [stderr]    Compiling litemap v0.8.1
[INFO] [stderr]    Compiling writeable v0.6.2
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling num-integer v0.1.46
[INFO] [stderr]    Compiling icu_normalizer_data v2.1.1
[INFO] [stderr]    Compiling crunchy v0.2.4
[INFO] [stderr]    Compiling rustls v0.23.36
[INFO] [stderr]    Compiling icu_properties_data v2.1.2
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling cmake v0.1.57
[INFO] [stderr]    Compiling num-bigint v0.4.6
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling block-padding v0.3.3
[INFO] [stderr]    Compiling http v1.4.0
[INFO] [stderr]    Compiling simd-adler32 v0.3.8
[INFO] [stderr]    Compiling tiny-keccak v2.0.2
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]    Compiling inout v0.1.4
[INFO] [stderr]    Compiling futures-lite v2.6.1
[INFO] [stderr]    Compiling linux-raw-sys v0.11.0
[INFO] [stderr]    Compiling bitflags v2.10.0
[INFO] [stderr]    Compiling aws-lc-sys v0.35.0
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling time-core v0.1.7
[INFO] [stderr]    Compiling num-conv v0.1.0
[INFO] [stderr]    Compiling time-macros v0.2.25
[INFO] [stderr]    Compiling cipher v0.4.4
[INFO] [stderr]    Compiling form_urlencoded v1.2.2
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.18
[INFO] [stderr]    Compiling async-io v2.6.0
[INFO] [stderr]    Compiling base64ct v1.8.3
[INFO] [stderr]    Compiling adler2 v2.0.1
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling pem-rfc7468 v0.7.0
[INFO] [stderr]    Compiling time v0.3.45
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling const-random-macro v0.1.16
[INFO] [stderr]    Compiling rand_core v0.9.5
[INFO] [stderr]    Compiling const-oid v0.9.6
[INFO] [stderr]    Compiling flagset v0.4.7
[INFO] [stderr]    Compiling cpufeatures v0.2.17
[INFO] [stderr]    Compiling nom v7.1.3
[INFO] [stderr]    Compiling const-random v0.1.18
[INFO] [stderr]    Compiling spin v0.9.8
[INFO] [stderr]    Compiling zstd-sys v2.0.16+zstd.1.5.7
[INFO] [stderr]    Compiling flate2 v1.1.8
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling hmac v0.12.1
[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]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling yoke v0.8.1
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling zerovec v0.11.5
[INFO] [stderr]    Compiling thiserror-impl v2.0.17
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling tokio v1.49.0
[INFO] [stderr]    Compiling tinystr v0.8.2
[INFO] [stderr]    Compiling potential_utf v0.1.4
[INFO] [stderr]    Compiling zerotrie v0.2.3
[INFO] [stderr]    Compiling icu_locale_core v2.1.1
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling thiserror v2.0.17
[INFO] [stderr]    Compiling icu_collections v2.1.1
[INFO] [stderr]    Compiling futures-util v0.3.31
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling icu_provider v2.1.1
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling polling v3.11.0
[INFO] [stderr]    Compiling icu_normalizer v2.1.1
[INFO] [stderr]    Compiling icu_properties v2.1.2
[INFO] [stderr]    Compiling der_derive v0.7.3
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling rand v0.9.2
[INFO] [stderr]    Compiling executor-trait v2.1.2
[INFO] [stderr]    Compiling der v0.7.10
[INFO] [stderr]    Compiling rusticata-macros v4.1.0
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling asn1-rs-impl v0.2.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling asn1-rs-derive v0.6.0
[INFO] [stderr]    Compiling nom v8.0.0
[INFO] [stderr]    Compiling data-encoding v2.10.0
[INFO] [stderr]    Compiling spki v0.7.3
[INFO] [stderr]    Compiling asn1-rs v0.7.1
[INFO] [stderr]    Compiling pbkdf2 v0.12.2
[INFO] [stderr]    Compiling equator-macro v0.4.2
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling crossbeam-deque v0.8.6
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling event-listener v5.4.1
[INFO] [stderr]    Compiling oid-registry v0.8.1
[INFO] [stderr]    Compiling openssl-probe v0.2.0
[INFO] [stderr]    Compiling rustls-native-certs v0.8.3
[INFO] [stderr]    Compiling event-listener-strategy v0.5.4
[INFO] [stderr]    Compiling rayon-core v1.13.0
[INFO] [stderr]    Compiling equator v0.4.2
[INFO] [stderr]    Compiling x509-cert v0.2.5
[INFO] [stderr]    Compiling flume v0.11.1
[INFO] [stderr]    Compiling salsa20 v0.10.2
[INFO] [stderr]    Compiling zstd-safe v7.2.4
[INFO] [stderr]    Compiling httpdate v1.0.3
[INFO] [stderr]    Compiling proc-macro-utils v0.10.0
[INFO] [stderr]    Compiling scrypt v0.11.0
[INFO] [stderr]    Compiling reactor-trait v3.1.1
[INFO] [stderr]    Compiling aligned-vec v0.6.4
[INFO] [stderr]    Compiling h2 v0.4.13
[INFO] [stderr]    Compiling der-parser v10.0.0
[INFO] [stderr]    Compiling derive-syn-parse v0.2.0
[INFO] [stderr]    Compiling macro_magic_core_macros v0.5.1
[INFO] [stderr]    Compiling aes v0.8.4
[INFO] [stderr]    Compiling sha1 v0.10.6
[INFO] [stderr]    Compiling cbc v0.1.2
[INFO] [stderr]    Compiling uuid v1.19.0
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling ucd-trie v0.1.7
[INFO] [stderr]    Compiling cms v0.2.3
[INFO] [stderr]    Compiling async-task v4.7.1
[INFO] [stderr]    Compiling tinyvec_macros v0.1.1
[INFO] [stderr]    Compiling arrayvec v0.7.6
[INFO] [stderr]    Compiling tinyvec v1.10.0
[INFO] [stderr]    Compiling pest v2.8.5
[INFO] [stderr]    Compiling pkcs12 v0.1.0
[INFO] [stderr]    Compiling pkcs5 v0.7.1
[INFO] [stderr]    Compiling macro_magic_core v0.5.1
[INFO] [stderr]    Compiling x509-parser v0.17.0
[INFO] [stderr]    Compiling v_frame v0.3.9
[INFO] [stderr]    Compiling quote-use-macros v0.8.4
[INFO] [stderr]    Compiling brotli-decompressor v5.0.0
[INFO] [stderr]    Compiling rayon v1.11.0
[INFO] [stderr]    Compiling async-channel v2.5.0
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling darling_core v0.21.3
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling des v0.8.1
[INFO] [stderr]    Compiling rc2 v0.8.1
[INFO] [stderr]    Compiling num-rational v0.4.2
[INFO] [stderr]    Compiling hyper v1.8.1
[INFO] [stderr]    Compiling piper v0.2.4
[INFO] [stderr]    Compiling webpki-roots v1.0.5
[INFO] [stderr]    Compiling as-slice v0.2.1
[INFO] [stderr]    Compiling encoding_rs v0.8.35
[INFO] [stderr]    Compiling prettyplease v0.2.37
[INFO] [stderr]    Compiling unicase v2.9.0
[INFO] [stderr]    Compiling built v0.8.0
[INFO] [stderr]    Compiling av-scenechange v0.14.1
[INFO] [stderr]    Compiling radium v0.7.0
[INFO] [stderr]    Compiling semver v1.0.27
[INFO] [stderr]    Compiling cookie-factory v0.3.3
[INFO] [stderr]    Compiling darling_macro v0.21.3
[INFO] [stderr]    Compiling amq-protocol-types v8.3.1
[INFO] [stderr]    Compiling hyper-util v0.1.19
[INFO] [stderr]    Compiling rustc_version v0.4.1
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling rav1e v0.8.1
[INFO] [stderr]    Compiling mime_guess v2.0.5
[INFO] [stderr]    Compiling aligned v0.4.3
[INFO] [stderr]    Compiling blocking v1.6.2
[INFO] [stderr]    Compiling p12-keystore v0.2.0
[INFO] [stderr]    Compiling brotli v8.0.2
[INFO] [stderr]    Compiling pest_meta v2.8.5
[INFO] [stderr]    Compiling quote-use v0.8.4
[INFO] [stderr]    Compiling macro_magic_macros v0.5.1
[INFO] [stderr]    Compiling async-executor v1.13.3
[INFO] [stderr]    Compiling reactor-trait v2.8.0
[INFO] [stderr]    Compiling async-lock v3.4.2
[INFO] [stderr]    Compiling zstd v0.13.3
[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]    Compiling rustls-pemfile v2.2.0
[INFO] [stderr]    Compiling core2 v0.4.0
[INFO] [stderr]    Compiling tap v1.0.1
[INFO] [stderr]    Compiling foldhash v0.1.5
[INFO] [stderr]    Compiling pastey v0.1.1
[INFO] [stderr]    Compiling y4m v0.8.0
[INFO] [stderr]    Compiling erased-serde v0.4.9
[INFO] [stderr]    Compiling compression-core v0.4.31
[INFO] [stderr]    Compiling quick-error v2.0.1
[INFO] [stderr]    Compiling enum-as-inner v0.6.1
[INFO] [stderr]    Compiling hashbrown v0.15.5
[INFO] [stderr]    Compiling wyz v0.5.1
[INFO] [stderr]    Compiling bitstream-io v4.9.0
[INFO] [stderr]    Compiling from-attr-macro v0.1.3
[INFO] [stderr]    Compiling profiling v1.0.17
[INFO] [stderr]    Compiling pest_generator v2.8.5
[INFO] [stderr]    Compiling async-global-executor v3.1.0
[INFO] [stderr]    Compiling amq-protocol-uri v8.3.1
[INFO] [stderr]    Compiling rustc_version_runtime v0.3.0
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling darling v0.21.3
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling maybe-rayon v0.1.1
[INFO] [stderr]    Compiling av1-grain v0.2.5
[INFO] [stderr]    Compiling itertools v0.14.0
[INFO] [stderr]    Compiling erased-serde v0.3.31
[INFO] [stderr]    Compiling half v2.7.1
[INFO] [stderr]    Compiling compression-codecs v0.4.36
[INFO] [stderr]    Compiling num-derive v0.4.2
[INFO] [stderr]    Compiling fax_derive v0.2.0
[INFO] [stderr]    Compiling dlv-list v0.5.2
[INFO] [stderr]    Compiling simd_helpers v0.1.0
[INFO] [stderr]    Compiling multer v3.1.0
[INFO] [stderr]    Compiling unicode-xid v0.2.6
[INFO] [stderr]    Compiling zune-core v0.4.12
[INFO] [stderr]    Compiling funty v2.0.0
[INFO] [stderr]    Compiling new_debug_unreachable v1.0.6
[INFO] [stderr]    Compiling winnow v0.7.14
[INFO] [stderr]    Compiling noop_proc_macro v0.3.0
[INFO] [stderr]    Compiling weezl v0.1.12
[INFO] [stderr]    Compiling hashbrown v0.14.5
[INFO] [stderr]    Compiling imgref v1.12.0
[INFO] [stderr]    Compiling tagptr v0.2.0
[INFO] [stderr]    Compiling amq-protocol v8.3.1
[INFO] [stderr]    Compiling loop9 v0.1.5
[INFO] [stderr]    Compiling bitvec v1.0.1
[INFO] [stderr]    Compiling moka v0.12.12
[INFO] [stderr]    Compiling zune-jpeg v0.4.21
[INFO] [stderr]    Compiling ordered-multimap v0.7.3
[INFO] [stderr]    Compiling fax v0.2.6
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling async-compression v0.4.37
[INFO] [stderr]    Compiling bon-macros v3.8.2
[INFO] [stderr]    Compiling toml_parser v1.0.6+spec-1.1.0
[INFO] [stderr]    Compiling pest_derive v2.8.5
[INFO] [stderr]    Compiling serde_with_macros v3.16.1
[INFO] [stderr]    Compiling from-attr v0.1.3
[INFO] [stderr]    Compiling hashlink v0.10.0
[INFO] [stderr]    Compiling async-global-executor-trait v2.2.0
[INFO] [stderr]    Compiling hickory-proto v0.25.2
[INFO] [stderr]    Compiling macro_magic v0.5.1
[INFO] [stderr]    Compiling unicode-normalization v0.1.25
[INFO] [stderr]    Compiling avif-serialize v0.8.6
[INFO] [stderr]    Compiling executor-trait v3.1.0
[INFO] [stderr]    Compiling typed-builder-macro v0.22.0
[INFO] [stderr]    Compiling ureq-proto v0.5.3
[INFO] [stderr]    Compiling arc-swap v1.8.0
[INFO] [stderr]    Compiling serde_bytes v0.11.19
[INFO] [stderr]    Compiling serde_spanned v1.0.4
[INFO] [stderr]    Compiling toml_datetime v0.7.5+spec-1.1.0
[INFO] [stderr]    Compiling zune-inflate v0.2.54
[INFO] [stderr]    Compiling fdeflate v0.3.7
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling pxfm v0.1.27
[INFO] [stderr]    Compiling bytemuck v1.24.0
[INFO] [stderr]    Compiling http-range-header v0.4.2
[INFO] [stderr]    Compiling unicode-bidi v0.3.18
[INFO] [stderr]    Compiling rudi-core v0.1.0
[INFO] [stderr]    Compiling resolv-conf v0.7.6
[INFO] [stderr]    Compiling zune-core v0.5.0
[INFO] [stderr]    Compiling utf-8 v0.7.6
[INFO] [stderr]    Compiling iri-string v0.7.10
[INFO] [stderr]    Compiling unicode-properties v0.1.4
[INFO] [stderr]    Compiling lebe v0.5.3
[INFO] [stderr]    Compiling byteorder-lite v0.1.0
[INFO] [stderr]    Compiling color_quant v1.1.0
[INFO] [stderr]    Compiling lapin v3.7.2
[INFO] [stderr]    Compiling bit_field v0.10.3
[INFO] [stderr]    Compiling arraydeque v0.5.1
[INFO] [stderr]    Compiling rgb v0.8.52
[INFO] [stderr]    Compiling exr v1.74.0
[INFO] [stderr]    Compiling hickory-resolver v0.25.2
[INFO] [stderr]    Compiling ravif v0.12.0
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling yaml-rust2 v0.10.4
[INFO] [stderr]    Compiling moxcms v0.7.11
[INFO] [stderr]    Compiling bon v3.8.2
[INFO] [stderr]    Compiling image-webp v0.2.4
[INFO] [stderr]    Compiling gif v0.14.1
[INFO] [stderr]    Compiling stringprep v0.1.5
[INFO] [stderr]    Compiling tracing-subscriber v0.3.22
[INFO] [stderr]    Compiling zune-jpeg v0.5.8
[INFO] [stderr]    Compiling rudi-macro v0.8.3
[INFO] [stderr]    Compiling typed-builder v0.22.0
[INFO] [stderr]    Compiling qoi v0.4.1
[INFO] [stderr]    Compiling png v0.18.0
[INFO] [stderr]    Compiling toml v0.9.11+spec-1.1.0
[INFO] [stderr]    Compiling bson v2.15.0
[INFO] [stderr]    Compiling slog-scope v4.4.0
[INFO] [stderr]    Compiling serde-untagged v0.1.9
[INFO] [stderr]    Compiling async-global-executor-trait v3.1.0
[INFO] [stderr]    Compiling mongodb-internal-macros v3.5.0
[INFO] [stderr]    Compiling derive_more v2.1.1
[INFO] [stderr]    Compiling serde_with v3.16.1
[INFO] [stderr]    Compiling json5 v0.4.1
[INFO] [stderr]    Compiling tiff v0.10.3
[INFO] [stderr]    Compiling rust-ini v0.21.3
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling ron v0.12.0
[INFO] [stderr]    Compiling hashbrown v0.13.2
[INFO] [stderr]    Compiling axum-core v0.5.6
[INFO] [stderr]    Compiling convert_case v0.6.0
[INFO] [stderr]    Compiling async-reactor-trait v3.1.1
[INFO] [stderr]    Compiling combine v4.6.7
[INFO] [stderr]    Compiling futures-executor v0.3.31
[INFO] [stderr]    Compiling derive-where v1.6.0
[INFO] [stderr]    Compiling smart-default v0.7.1
[INFO] [stderr]    Compiling serde_path_to_error v0.1.20
[INFO] [stderr]    Compiling md-5 v0.10.6
[INFO] [stderr]    Compiling backon v1.6.0
[INFO] [stderr]    Compiling ttf-parser v0.15.2
[INFO] [stderr]    Compiling sha1_smol v1.0.1
[INFO] [stderr]    Compiling arcstr v1.2.0
[INFO] [stderr]    Compiling matchit v0.8.4
[INFO] [stderr]    Compiling xxhash-rust v0.8.15
[INFO] [stderr]    Compiling pathdiff v0.2.3
[INFO] [stderr]    Compiling inventory v0.3.21
[INFO] [stderr]    Compiling take_mut v0.2.2
[INFO] [stderr]    Compiling config v0.15.19
[INFO] [stderr]    Compiling rudi v0.8.3
[INFO] [stderr]    Compiling axum v0.8.8
[INFO] [stderr]    Compiling fontdue v0.7.3
[INFO] [stderr]    Compiling chrono v0.4.42
[INFO] [stderr]    Compiling futures v0.3.31
[INFO] [stderr]    Compiling image v0.25.9
[INFO] [stderr]    Compiling tracing-error v0.2.1
[INFO] [stderr]    Compiling looklapi-macro v0.1.0 (/opt/rustwide/workdir/looklapi-macro)
[INFO] [stderr]    Compiling redis v1.0.2
[INFO] [stderr]    Compiling rustls-webpki v0.103.8
[INFO] [stderr]    Compiling futures-rustls v0.26.0
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling ureq v3.1.4
[INFO] [stderr]    Compiling rustls-platform-verifier v0.6.2
[INFO] [stderr]    Compiling hyper-rustls v0.27.7
[INFO] [stderr]    Compiling mongodb v3.5.0
[INFO] [stderr]    Compiling rustls-connector v0.21.11
[INFO] [stderr]    Compiling reqwest v0.13.1
[INFO] [stderr]    Compiling tcp-stream v0.30.9
[INFO] [stderr]    Compiling amq-protocol-tcp v8.3.1
[INFO] [stderr]    Compiling rs-consul v0.13.0
[INFO] [stderr]    Compiling 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: 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: 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 `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] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 8m 25s
[INFO] running `Command { std: "docker" "inspect" "3c7b8e5f0ff883e7840569524b457654a4e0a69a0adb00f19f6f90f6342674d5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "3c7b8e5f0ff883e7840569524b457654a4e0a69a0adb00f19f6f90f6342674d5", kill_on_drop: false }`
[INFO] [stdout] 3c7b8e5f0ff883e7840569524b457654a4e0a69a0adb00f19f6f90f6342674d5
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.94.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 30bd5708649dd993c9fbc3d16b0863ac1f9dc79af324ef2760f0a1e0e57b8024
[INFO] running `Command { std: "docker" "start" "-a" "30bd5708649dd993c9fbc3d16b0863ac1f9dc79af324ef2760f0a1e0e57b8024", kill_on_drop: false }`
[INFO] [stderr]    Compiling looklapi-macro v0.1.0 (/opt/rustwide/workdir/looklapi-macro)
[INFO] [stderr]    Compiling 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: 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: 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 `test` profile [unoptimized + debuginfo] target(s) in 18.51s
[INFO] running `Command { std: "docker" "inspect" "30bd5708649dd993c9fbc3d16b0863ac1f9dc79af324ef2760f0a1e0e57b8024", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "30bd5708649dd993c9fbc3d16b0863ac1f9dc79af324ef2760f0a1e0e57b8024", kill_on_drop: false }`
[INFO] [stdout] 30bd5708649dd993c9fbc3d16b0863ac1f9dc79af324ef2760f0a1e0e57b8024
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.94.0" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 1342864771a7689f33ce8458e684d2b5b1f7dd31a2c5437c5ae210987578066a
[INFO] running `Command { std: "docker" "start" "-a" "1342864771a7689f33ce8458e684d2b5b1f7dd31a2c5437c5ae210987578066a", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `tracing::info`
[INFO] [stderr]  --> looklapi/src/main.rs:3:5
[INFO] [stderr]   |
[INFO] [stderr] 3 | use tracing::info;
[INFO] [stderr]   |     ^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::backtrace`
[INFO] [stderr]  --> looklapi/src/common/loggers/logger.rs:1:5
[INFO] [stderr]   |
[INFO] [stderr] 1 | use std::backtrace;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::collections::HashMap`
[INFO] [stderr]  --> looklapi/src/common/mqutils/models.rs:5:5
[INFO] [stderr]   |
[INFO] [stderr] 5 | use std::collections::HashMap;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::sync::mpsc`
[INFO] [stderr]  --> looklapi/src/common/mqutils/models.rs:7:5
[INFO] [stderr]   |
[INFO] [stderr] 7 | use std::sync::mpsc;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `RwLock`
[INFO] [stderr]  --> looklapi/src/common/mqutils/models.rs:8:29
[INFO] [stderr]   |
[INFO] [stderr] 8 | use std::sync::{Arc, Mutex, RwLock};
[INFO] [stderr]   |                             ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `uuid::Uuid`
[INFO] [stderr]  --> looklapi/src/common/mqutils/publisher.rs:8:5
[INFO] [stderr]   |
[INFO] [stderr] 8 | use uuid::Uuid;
[INFO] [stderr]   |     ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Instant`
[INFO] [stderr]   --> looklapi/src/common/mqutils/rabbitmq_pool.rs:12:27
[INFO] [stderr]    |
[INFO] [stderr] 12 | use std::time::{Duration, Instant};
[INFO] [stderr]    |                           ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Commands` and `RedisError`
[INFO] [stderr]  --> looklapi/src/common/redisutils/multi_cmds.rs:2:13
[INFO] [stderr]   |
[INFO] [stderr] 2 | use redis::{Commands, Pipeline, RedisError, RedisResult};
[INFO] [stderr]   |             ^^^^^^^^            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `ConnectionLike`
[INFO] [stderr]  --> looklapi/src/common/redisutils/redipool.rs:3:33
[INFO] [stderr]   |
[INFO] [stderr] 3 | use redis::{Client, Connection, ConnectionLike, RedisResult};
[INFO] [stderr]   |                                 ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `load_image_async` and `load_image`
[INFO] [stderr]  --> looklapi/src/commonapi/drawer/mod.rs:6:24
[INFO] [stderr]   |
[INFO] [stderr] 6 | pub use image_helper::{load_image, load_image_async};
[INFO] [stderr]   |                        ^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `TextLine`, `calculate_text_lines_position`, and `process_text_for_drawing`
[INFO] [stderr]  --> looklapi/src/commonapi/drawer/mod.rs:7:23
[INFO] [stderr]   |
[INFO] [stderr] 7 | pub use text_helper::{calculate_text_lines_position, process_text_for_drawing, TextLine};
[INFO] [stderr]   |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `inventory::submit`
[INFO] [stderr]  --> looklapi/src/controller/test_controller.rs:4:5
[INFO] [stderr]   |
[INFO] [stderr] 4 | use inventory::submit;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `routing::post`
[INFO] [stderr]  --> looklapi/src/controller/user_controller.rs:1:45
[INFO] [stderr]   |
[INFO] [stderr] 1 | use axum::{Extension, Router, routing::get, routing::post};
[INFO] [stderr]   |                                             ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `inventory::submit`
[INFO] [stderr]  --> looklapi/src/controller/user_controller.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | use inventory::submit;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `DynamicTextModel`
[INFO] [stderr]   --> looklapi/src/model/modelimpl/draw/mod.rs:11:22
[INFO] [stderr]    |
[INFO] [stderr] 11 | pub use text_model::{DynamicTextModel, TextModel};
[INFO] [stderr]    |                      ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated function `base64::decode`: Use Engine::decode
[INFO] [stderr]   --> looklapi/src/commonapi/drawer/image_helper.rs:51:25
[INFO] [stderr]    |
[INFO] [stderr] 51 |     let bytes = base64::decode(data)?;
[INFO] [stderr]    |                         ^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(deprecated)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated method `lapin::Channel::on_error`: Please use Connection::events_listener instead
[INFO] [stderr]    --> looklapi/src/common/mqutils/rabbitmq_pool.rs:333:28
[INFO] [stderr]     |
[INFO] [stderr] 333 |         mq_channel.channel.on_error(move |_| {
[INFO] [stderr]     |                            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> looklapi/src/common/redisutils/multi_cmds.rs:42:25
[INFO] [stderr]    |
[INFO] [stderr] 42 |                     let mut cmd = pipe.cmd("HMSET").arg(&args[0]);
[INFO] [stderr]    |                         ----^^^
[INFO] [stderr]    |                         |
[INFO] [stderr]    |                         help: remove this `mut`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> looklapi/src/common/redisutils/multi_cmds.rs:50:25
[INFO] [stderr]    |
[INFO] [stderr] 50 |                     let mut cmd = pipe.cmd("LPUSH").arg(&args[0]);
[INFO] [stderr]    |                         ----^^^
[INFO] [stderr]    |                         |
[INFO] [stderr]    |                         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> looklapi/src/common/redisutils/multi_cmds.rs:58:25
[INFO] [stderr]    |
[INFO] [stderr] 58 |                     let mut cmd = pipe.cmd("RPUSH").arg(&args[0]);
[INFO] [stderr]    |                         ----^^^
[INFO] [stderr]    |                         |
[INFO] [stderr]    |                         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> looklapi/src/controller/middleware/request_context_middleware.rs:23:5
[INFO] [stderr]    |
[INFO] [stderr] 23 |     mut req: Request<Body>,
[INFO] [stderr]    |     ----^^^
[INFO] [stderr]    |     |
[INFO] [stderr]    |     help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> looklapi/src/controller/middleware/request_context_middleware.rs:32:5
[INFO] [stderr]    |
[INFO] [stderr] 32 |     mut req: Request<Body>,
[INFO] [stderr]    |     ----^^^
[INFO] [stderr]    |     |
[INFO] [stderr]    |     help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> looklapi/src/controller/test_controller.rs:101:21
[INFO] [stderr]     |
[INFO] [stderr] 101 | async fn test_begin(mut req: Request<Body>, next: axum::middleware::Next) -> impl IntoResponse {
[INFO] [stderr]     |                     ----^^^
[INFO] [stderr]     |                     |
[INFO] [stderr]     |                     help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> looklapi/src/controller/test_controller.rs:109:21
[INFO] [stderr]     |
[INFO] [stderr] 109 | async fn test_after(mut req: Request<Body>, next: axum::middleware::Next) -> impl IntoResponse {
[INFO] [stderr]     |                     ----^^^
[INFO] [stderr]     |                     |
[INFO] [stderr]     |                     help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> looklapi/src/common/loggers/mongo_logger.rs:113:9
[INFO] [stderr]     |
[INFO] [stderr] 113 |         mut writer: Writer<'_>,
[INFO] [stderr]     |         ----^^^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `ctx`
[INFO] [stderr]    --> looklapi/src/common/loggers/mongo_logger.rs:112:9
[INFO] [stderr]     |
[INFO] [stderr] 112 |         ctx: &FmtContext<'_, S, N>,
[INFO] [stderr]     |         ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `writer`
[INFO] [stderr]    --> looklapi/src/common/loggers/mongo_logger.rs:113:9
[INFO] [stderr]     |
[INFO] [stderr] 113 |         mut writer: Writer<'_>,
[INFO] [stderr]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_writer`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `pool_clone`
[INFO] [stderr]    --> looklapi/src/common/mqutils/consumer.rs:391:13
[INFO] [stderr]     |
[INFO] [stderr] 391 |         let pool_clone = pool.clone();
[INFO] [stderr]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pool_clone`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `worker_count` is assigned to, but never used
[INFO] [stderr]    --> looklapi/src/common/mqutils/consumer.rs:707:13
[INFO] [stderr]     |
[INFO] [stderr] 707 |         let mut worker_count = 0;
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: consider using `_worker_count` instead
[INFO] [stderr] 
[INFO] [stderr] warning: variable `broadcaster_count` is assigned to, but never used
[INFO] [stderr]    --> looklapi/src/common/mqutils/consumer.rs:708:13
[INFO] [stderr]     |
[INFO] [stderr] 708 |         let mut broadcaster_count = 0;
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: consider using `_broadcaster_count` instead
[INFO] [stderr] 
[INFO] [stderr] warning: variable `topic_count` is assigned to, but never used
[INFO] [stderr]    --> looklapi/src/common/mqutils/consumer.rs:709:13
[INFO] [stderr]     |
[INFO] [stderr] 709 |         let mut topic_count = 0;
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: consider using `_topic_count` instead
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `worker_count` is never read
[INFO] [stderr]    --> looklapi/src/common/mqutils/consumer.rs:714:21
[INFO] [stderr]     |
[INFO] [stderr] 714 |                     worker_count += consumer.concurrency as usize;
[INFO] [stderr]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = help: maybe it is overwritten before being read?
[INFO] [stderr]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `broadcaster_count` is never read
[INFO] [stderr]    --> looklapi/src/common/mqutils/consumer.rs:717:21
[INFO] [stderr]     |
[INFO] [stderr] 717 |                     broadcaster_count += 1;
[INFO] [stderr]     |                     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = help: maybe it is overwritten before being read?
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `topic_count` is never read
[INFO] [stderr]    --> looklapi/src/common/mqutils/consumer.rs:720:21
[INFO] [stderr]     |
[INFO] [stderr] 720 |                     topic_count += 1;
[INFO] [stderr]     |                     ^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = help: maybe it is overwritten before being read?
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `db_index`
[INFO] [stderr]   --> looklapi/src/common/redisutils/multi_cmds.rs:75:19
[INFO] [stderr]    |
[INFO] [stderr] 75 | pub async fn eval(db_index: u8, script: &str, keys: &[&str], args: &[&str]) -> RedisResult<String> {
[INFO] [stderr]    |                   ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_db_index`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `ctx`
[INFO] [stderr]   --> looklapi/src/controller/test_controller.rs:41:15
[INFO] [stderr]    |
[INFO] [stderr] 41 |     Extension(ctx): Extension<crate::request_context::RequestContext>,
[INFO] [stderr]    |               ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `ctx`
[INFO] [stderr]   --> looklapi/src/controller/user_controller.rs:38:15
[INFO] [stderr]    |
[INFO] [stderr] 38 |     Extension(ctx): Extension<crate::request_context::RequestContext>,
[INFO] [stderr]    |               ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stderr] 
[INFO] [stderr] warning: field `name` is never read
[INFO] [stderr]   --> looklapi/src/app/app_config.rs:12:9
[INFO] [stderr]    |
[INFO] [stderr] 11 | pub struct Server {
[INFO] [stderr]    |            ------ field in this struct
[INFO] [stderr] 12 |     pub name: String,
[INFO] [stderr]    |         ^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Server` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: field `uri` is never read
[INFO] [stderr]   --> looklapi/src/app/app_config.rs:18:9
[INFO] [stderr]    |
[INFO] [stderr] 17 | pub struct Mysql {
[INFO] [stderr]    |            ----- field in this struct
[INFO] [stderr] 18 |     pub uri: String,
[INFO] [stderr]    |         ^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Mysql` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `uri` is never read
[INFO] [stderr]   --> looklapi/src/app/app_config.rs:23:9
[INFO] [stderr]    |
[INFO] [stderr] 22 | pub struct Mssql {
[INFO] [stderr]    |            ----- field in this struct
[INFO] [stderr] 23 |     pub uri: String,
[INFO] [stderr]    |         ^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Mssql` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `host`, `port`, `password`, and `timeout` are never read
[INFO] [stderr]   --> looklapi/src/app/app_config.rs:33:9
[INFO] [stderr]    |
[INFO] [stderr] 32 | pub struct Redis {
[INFO] [stderr]    |            ----- fields in this struct
[INFO] [stderr] 33 |     pub host: String,
[INFO] [stderr]    |         ^^^^
[INFO] [stderr] 34 |     pub port: i32,
[INFO] [stderr]    |         ^^^^
[INFO] [stderr] 35 |     pub password: String,
[INFO] [stderr]    |         ^^^^^^^^
[INFO] [stderr] 36 |     /// 超时时间(毫秒)
[INFO] [stderr] 37 |     pub timeout: i32,
[INFO] [stderr]    |         ^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Redis` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: multiple fields are never read
[INFO] [stderr]   --> looklapi/src/app/app_config.rs:47:9
[INFO] [stderr]    |
[INFO] [stderr] 46 | pub struct Consul {
[INFO] [stderr]    |            ------ fields in this struct
[INFO] [stderr] 47 |     pub host: String,
[INFO] [stderr]    |         ^^^^
[INFO] [stderr] 48 |     pub port: i32,
[INFO] [stderr]    |         ^^^^
[INFO] [stderr] 49 |     pub secure: bool,
[INFO] [stderr]    |         ^^^^^^
[INFO] [stderr] 50 |     pub health_check: String,
[INFO] [stderr]    |         ^^^^^^^^^^^^
[INFO] [stderr] 51 |     /// 健康检查间隔(秒)
[INFO] [stderr] 52 |     pub health_check_interval: i32,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 53 |     /// 健康检查超时时间(秒)
[INFO] [stderr] 54 |     pub health_check_timeout: i32,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 55 |     /// 服务注册超时时间(秒)
[INFO] [stderr] 56 |     pub deregister_critical_service_after: i32, // 秒
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Consul` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `developer` is never read
[INFO] [stderr]   --> looklapi/src/app/app_config.rs:66:9
[INFO] [stderr]    |
[INFO] [stderr] 65 | pub struct Dev {
[INFO] [stderr]    |            --- field in this struct
[INFO] [stderr] 66 |     pub developer: String,
[INFO] [stderr]    |         ^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Dev` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `profile`, `mysql`, `mssql`, `redis`, `consul`, and `dev` are never read
[INFO] [stderr]   --> looklapi/src/app/app_config.rs:83:9
[INFO] [stderr]    |
[INFO] [stderr] 82 | pub struct AppConfig {
[INFO] [stderr]    |            --------- fields in this struct
[INFO] [stderr] 83 |     pub profile: String,
[INFO] [stderr]    |         ^^^^^^^
[INFO] [stderr] 84 |     pub server: Server,
[INFO] [stderr] 85 |     pub mysql: Option<Mysql>,
[INFO] [stderr]    |         ^^^^^
[INFO] [stderr] 86 |     pub mssql: Option<Mssql>,
[INFO] [stderr]    |         ^^^^^
[INFO] [stderr] 87 |     pub mongodb: Option<Mongodb>,
[INFO] [stderr] 88 |     pub redis: Option<Redis>,
[INFO] [stderr]    |         ^^^^^
[INFO] [stderr] 89 |     pub rabbitmq: Option<RabbitMQ>,
[INFO] [stderr] 90 |     pub consul: Option<Consul>,
[INFO] [stderr]    |         ^^^^^^
[INFO] [stderr] 91 |     pub logger: Logger,
[INFO] [stderr] 92 |     pub dev: Option<Dev>,
[INFO] [stderr]    |         ^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `AppConfig` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: struct `AppEventConfigInitialized` is never constructed
[INFO] [stderr]  --> looklapi/src/app/appcontext/events.rs:8:12
[INFO] [stderr]   |
[INFO] [stderr] 8 | pub struct AppEventConfigInitialized;
[INFO] [stderr]   |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `get_ctx_mut` is never used
[INFO] [stderr]   --> looklapi/src/app/appcontext/rudi_context.rs:21:12
[INFO] [stderr]    |
[INFO] [stderr] 12 | impl RudiContext {
[INFO] [stderr]    | ---------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 21 |     pub fn get_ctx_mut(&mut self) -> &mut rudi::Context {
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `reset` is never used
[INFO] [stderr]   --> looklapi/src/app/appcontext/test.rs:28:8
[INFO] [stderr]    |
[INFO] [stderr] 19 | impl TestObserver {
[INFO] [stderr]    | ----------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 28 |     fn reset(&self) {
[INFO] [stderr]    |        ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `backtrace` and `span_trace` are never read
[INFO] [stderr]   --> looklapi/src/app/app_err.rs:11:5
[INFO] [stderr]    |
[INFO] [stderr]  8 | pub struct AppError {
[INFO] [stderr]    |            -------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 11 |     backtrace: Backtrace,
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr] 12 |     span_trace: tracing_error::SpanTrace,
[INFO] [stderr]    |     ^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `AppError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `message`, `backtrace`, and `span_trace` are never used
[INFO] [stderr]   --> looklapi/src/app/app_err.rs:16:12
[INFO] [stderr]    |
[INFO] [stderr] 15 | impl AppError {
[INFO] [stderr]    | ------------- associated items in this implementation
[INFO] [stderr] 16 |     pub fn new(message: &str) -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 39 |     pub fn message(&self) -> &str {
[INFO] [stderr]    |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 44 |     pub fn backtrace(&self) -> &Backtrace {
[INFO] [stderr]    |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 48 |     pub fn span_trace(&self) -> &tracing_error::SpanTrace {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `log` is never used
[INFO] [stderr]   --> looklapi/src/app/app_err.rs:87:12
[INFO] [stderr]    |
[INFO] [stderr] 85 | impl AppError {
[INFO] [stderr]    | ------------- method in this implementation
[INFO] [stderr] 86 |     /// 记录日志
[INFO] [stderr] 87 |     pub fn log(&self) {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `error` is never used
[INFO] [stderr]   --> looklapi/src/common/loggers/logger.rs:45:8
[INFO] [stderr]    |
[INFO] [stderr] 45 | pub fn error(err: &AppError) {
[INFO] [stderr]    |        ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `LOG_LEVEL_CHANGE` is never used
[INFO] [stderr]  --> looklapi/src/common/mqutils/consts.rs:1:11
[INFO] [stderr]   |
[INFO] [stderr] 1 | pub const LOG_LEVEL_CHANGE: &str = "log_level_change"; // 日志等级变更交换器
[INFO] [stderr]   |           ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MANUAL_SERVICE_REFRESH` is never used
[INFO] [stderr]  --> looklapi/src/common/mqutils/consts.rs:2:11
[INFO] [stderr]   |
[INFO] [stderr] 2 | pub const MANUAL_SERVICE_REFRESH: &str = "manual_service_refresh"; // 服务配置刷新交换器
[INFO] [stderr]   |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `CONFIG_REFRESH_WATCH` is never used
[INFO] [stderr]  --> looklapi/src/common/mqutils/consts.rs:3:11
[INFO] [stderr]   |
[INFO] [stderr] 3 | pub const CONFIG_REFRESH_WATCH: &str = "config_refresh_watch"; // 配置刷新交换器
[INFO] [stderr]   |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `ConsumerType` is never used
[INFO] [stderr]  --> looklapi/src/common/mqutils/consts.rs:7:10
[INFO] [stderr]   |
[INFO] [stderr] 7 | pub enum ConsumerType {
[INFO] [stderr]   |          ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Consumer` is never constructed
[INFO] [stderr]   --> looklapi/src/common/mqutils/consumer.rs:24:12
[INFO] [stderr]    |
[INFO] [stderr] 24 | pub struct Consumer {
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new_work_queue_consumer`, `new_broadcast_consumer`, `new_topic_consumer`, and `on_received` are never used
[INFO] [stderr]    --> looklapi/src/common/mqutils/consumer.rs:38:12
[INFO] [stderr]     |
[INFO] [stderr]  36 | impl Consumer {
[INFO] [stderr]     | ------------- associated items in this implementation
[INFO] [stderr]  37 |     // 新建工作队列消费者
[INFO] [stderr]  38 |     pub fn new_work_queue_consumer(
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  81 |     pub fn new_broadcast_consumer(
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 113 |     pub fn new_topic_consumer(
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 150 |     pub fn on_received(&self, msg: &str) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `handle_workqueue_reconnect` is never used
[INFO] [stderr]    --> looklapi/src/common/mqutils/consumer.rs:180:10
[INFO] [stderr]     |
[INFO] [stderr] 180 | async fn handle_workqueue_reconnect(
[INFO] [stderr]     |          ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `handle_broadcast_reconnect` is never used
[INFO] [stderr]    --> looklapi/src/common/mqutils/consumer.rs:219:10
[INFO] [stderr]     |
[INFO] [stderr] 219 | async fn handle_broadcast_reconnect(
[INFO] [stderr]     |          ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `handle_topic_reconnect` is never used
[INFO] [stderr]    --> looklapi/src/common/mqutils/consumer.rs:258:10
[INFO] [stderr]     |
[INFO] [stderr] 258 | async fn handle_topic_reconnect(
[INFO] [stderr]     |          ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ConsumerBinder` is never constructed
[INFO] [stderr]    --> looklapi/src/common/mqutils/consumer.rs:298:8
[INFO] [stderr]     |
[INFO] [stderr] 298 | struct ConsumerBinder {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `bind_consumer`, `bind_work_queue_consumer`, `bind_broadcast_consumer`, `bind_topic_consumer`, and `init_consumers` are never used
[INFO] [stderr]    --> looklapi/src/common/mqutils/consumer.rs:305:8
[INFO] [stderr]     |
[INFO] [stderr] 304 | impl ConsumerBinder {
[INFO] [stderr]     | ------------------- associated items in this implementation
[INFO] [stderr] 305 |     fn new() -> Self {
[INFO] [stderr]     |        ^^^
[INFO] [stderr] ...
[INFO] [stderr] 314 |     pub async fn bind_consumer(&self, consumer: Arc<Consumer>) {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 346 |     async fn bind_work_queue_consumer(&self, consumer: Arc<Consumer>) -> bool {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 443 |     async fn bind_broadcast_consumer(&self, consumer: Arc<Consumer>) -> bool {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 565 |     async fn bind_topic_consumer(&self, consumer: Arc<Consumer>) -> bool {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 701 |     pub async fn init_consumers(&mut self) {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `CONN_IDLE_TIMEOUT_MIN` is never used
[INFO] [stderr]   --> looklapi/src/common/mqutils/models.rs:11:7
[INFO] [stderr]    |
[INFO] [stderr] 11 | const CONN_IDLE_TIMEOUT_MIN: i32 = 10;
[INFO] [stderr]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `CH_IDLE_TIMEOUT_MIN` is never used
[INFO] [stderr]   --> looklapi/src/common/mqutils/models.rs:13:7
[INFO] [stderr]    |
[INFO] [stderr] 13 | const CH_IDLE_TIMEOUT_MIN: i32 = 5;
[INFO] [stderr]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `CONN_LIMIT` is never used
[INFO] [stderr]   --> looklapi/src/common/mqutils/models.rs:16:7
[INFO] [stderr]    |
[INFO] [stderr] 16 | const CONN_LIMIT: i32 = 100;
[INFO] [stderr]    |       ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `CH_LIMIT_FOR_CONN` is never used
[INFO] [stderr]   --> looklapi/src/common/mqutils/models.rs:18:7
[INFO] [stderr]    |
[INFO] [stderr] 18 | const CH_LIMIT_FOR_CONN: i32 = 100;
[INFO] [stderr]    |       ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variant `Idle` is never constructed
[INFO] [stderr]   --> looklapi/src/common/mqutils/models.rs:23:5
[INFO] [stderr]    |
[INFO] [stderr] 22 | pub enum ChannelStatus {
[INFO] [stderr]    |          ------------- variant in this enum
[INFO] [stderr] 23 |     Idle,    // 空闲
[INFO] [stderr]    |     ^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `ChannelStatus` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: struct `MqMessage` is never constructed
[INFO] [stderr]    --> looklapi/src/common/mqutils/models.rs:115:12
[INFO] [stderr]     |
[INFO] [stderr] 115 | pub struct MqMessage {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]    --> looklapi/src/common/mqutils/models.rs:127:12
[INFO] [stderr]     |
[INFO] [stderr] 126 | impl MqMessage {
[INFO] [stderr]     | -------------- associated function in this implementation
[INFO] [stderr] 127 |     pub fn new() -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Consumer` is never constructed
[INFO] [stderr]    --> looklapi/src/common/mqutils/models.rs:138:12
[INFO] [stderr]     |
[INFO] [stderr] 138 | pub struct Consumer {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `pub_work_queue_msg` is never used
[INFO] [stderr]   --> looklapi/src/common/mqutils/publisher.rs:11:14
[INFO] [stderr]    |
[INFO] [stderr] 11 | pub async fn pub_work_queue_msg<T: Serialize>(route_key: &str, msg: T) -> bool {
[INFO] [stderr]    |              ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `pub_broadcast_msg` is never used
[INFO] [stderr]   --> looklapi/src/common/mqutils/publisher.rs:31:14
[INFO] [stderr]    |
[INFO] [stderr] 31 | pub async fn pub_broadcast_msg<T: Serialize>(exchange: &str, msg: T) -> bool {
[INFO] [stderr]    |              ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `pub_topic_msg` is never used
[INFO] [stderr]   --> looklapi/src/common/mqutils/publisher.rs:51:14
[INFO] [stderr]    |
[INFO] [stderr] 51 | pub async fn pub_topic_msg<T: Serialize>(exchange: &str, route_key: &str, msg: T) -> bool {
[INFO] [stderr]    |              ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `pub_work_queue_msg_internal` is never used
[INFO] [stderr]   --> looklapi/src/common/mqutils/publisher.rs:71:10
[INFO] [stderr]    |
[INFO] [stderr] 71 | async fn pub_work_queue_msg_internal(
[INFO] [stderr]    |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `pub_broadcast_msg_internal` is never used
[INFO] [stderr]    --> looklapi/src/common/mqutils/publisher.rs:112:10
[INFO] [stderr]     |
[INFO] [stderr] 112 | async fn pub_broadcast_msg_internal(
[INFO] [stderr]     |          ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `pub_topic_msg_internal` is never used
[INFO] [stderr]    --> looklapi/src/common/mqutils/publisher.rs:152:10
[INFO] [stderr]     |
[INFO] [stderr] 152 | async fn pub_topic_msg_internal(
[INFO] [stderr]     |          ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `convert_message` is never used
[INFO] [stderr]    --> looklapi/src/common/mqutils/publisher.rs:195:4
[INFO] [stderr]     |
[INFO] [stderr] 195 | fn convert_message<T: Serialize>(msg: T) -> Option<MqMessage> {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `pub_ch_pipeline_rx`, `rec_conns`, `rec_chs`, and `rec_mu` are never read
[INFO] [stderr]   --> looklapi/src/common/mqutils/rabbitmq_pool.rs:59:5
[INFO] [stderr]    |
[INFO] [stderr] 47 | pub struct RabbitmqConnPool {
[INFO] [stderr]    |            ---------------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 59 |     pub_ch_pipeline_rx: Arc<Mutex<mpsc::Receiver<Option<Arc<MqChannel>>>>>,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 60 |     /// 消费连接
[INFO] [stderr] 61 |     rec_conns: Mutex<Vec<Arc<RabbitMqConnData>>>,
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr] 62 |     /// 消费者channel pool
[INFO] [stderr] 63 |     rec_chs: Mutex<Vec<Arc<MqChannel>>>,
[INFO] [stderr]    |     ^^^^^^^
[INFO] [stderr] 64 |     /// 消费者管理锁
[INFO] [stderr] 65 |     rec_mu: Arc<Mutex<()>>,
[INFO] [stderr]    |     ^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `RabbitmqConnPool` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: methods `get_pub_channel`, `get_rec_channel`, `get_or_create_rec_conn`, and `release_channel` are never used
[INFO] [stderr]    --> looklapi/src/common/mqutils/rabbitmq_pool.rs:133:18
[INFO] [stderr]     |
[INFO] [stderr]  70 | impl RabbitmqConnPool {
[INFO] [stderr]     | --------------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 133 |     pub async fn get_pub_channel(&self) -> Result<Arc<MqChannel>, Box<dyn std::error::Error>> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 146 |     pub async fn get_rec_channel(&self) -> Result<Arc<MqChannel>, Box<dyn std::error::Error>> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 228 |     async fn get_or_create_rec_conn(
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 251 |     pub fn release_channel(&self, ch: Arc<MqChannel>) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `retry` is never used
[INFO] [stderr]  --> looklapi/src/common/mqutils/retry.rs:6:8
[INFO] [stderr]   |
[INFO] [stderr] 6 | pub fn retry(meta_msg: &MqMessage, consumer: &crate::common::mqutils::consumer::Consumer) -> bool {
[INFO] [stderr]   |        ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `retry_success` is never used
[INFO] [stderr]   --> looklapi/src/common/mqutils/retry.rs:18:8
[INFO] [stderr]    |
[INFO] [stderr] 18 | pub fn retry_success(meta_msg: &MqMessage, consumer_type: ConsumerType) {
[INFO] [stderr]    |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `CONFIG_MANUAL_SERVICE` is never used
[INFO] [stderr]  --> looklapi/src/common/redisutils/consts.rs:2:11
[INFO] [stderr]   |
[INFO] [stderr] 2 | pub const CONFIG_MANUAL_SERVICE: &str = "config_manual_service";
[INFO] [stderr]   |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `CONFIG_LOG` is never used
[INFO] [stderr]  --> looklapi/src/common/redisutils/consts.rs:4:11
[INFO] [stderr]   |
[INFO] [stderr] 4 | pub const CONFIG_LOG: &str = "config_log";
[INFO] [stderr]   |           ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SERVICE_BOOT` is never used
[INFO] [stderr]  --> looklapi/src/common/redisutils/consts.rs:6:11
[INFO] [stderr]   |
[INFO] [stderr] 6 | pub const SERVICE_BOOT: &str = "service_boot";
[INFO] [stderr]   |           ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `obj_to_json` is never used
[INFO] [stderr]  --> looklapi/src/common/redisutils/operator.rs:6:8
[INFO] [stderr]   |
[INFO] [stderr] 6 | pub fn obj_to_json<T: Serialize>(val: &T) -> Result<String, serde_json::Error> {
[INFO] [stderr]   |        ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `json_to_obj` is never used
[INFO] [stderr]   --> looklapi/src/common/redisutils/operator.rs:11:8
[INFO] [stderr]    |
[INFO] [stderr] 11 | pub fn json_to_obj<T: DeserializeOwned>(json: &str) -> Result<T, serde_json::Error> {
[INFO] [stderr]    |        ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `set` is never used
[INFO] [stderr]   --> looklapi/src/common/redisutils/operator.rs:16:14
[INFO] [stderr]    |
[INFO] [stderr] 16 | pub async fn set<T: Serialize>(key: &str, val: &T) -> RedisResult<()> {
[INFO] [stderr]    |              ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `set_ex` is never used
[INFO] [stderr]   --> looklapi/src/common/redisutils/operator.rs:30:14
[INFO] [stderr]    |
[INFO] [stderr] 30 | pub async fn set_ex<T: Serialize>(key: &str, val: &T, secs: u64) -> RedisResult<()> {
[INFO] [stderr]    |              ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get` is never used
[INFO] [stderr]   --> looklapi/src/common/redisutils/operator.rs:44:14
[INFO] [stderr]    |
[INFO] [stderr] 44 | pub async fn get<T: DeserializeOwned>(key: &str) -> RedisResult<T> {
[INFO] [stderr]    |              ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `incr` is never used
[INFO] [stderr]   --> looklapi/src/common/redisutils/operator.rs:58:14
[INFO] [stderr]    |
[INFO] [stderr] 58 | pub async fn incr(key: &str, incr_val: i64) -> RedisResult<i64> {
[INFO] [stderr]    |              ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `scan` is never used
[INFO] [stderr]   --> looklapi/src/common/redisutils/operator.rs:71:14
[INFO] [stderr]    |
[INFO] [stderr] 71 | pub async fn scan(db_index: u8, pattern: &str, limit: usize) -> RedisResult<Vec<String>> {
[INFO] [stderr]    |              ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `hash_set` is never used
[INFO] [stderr]    --> looklapi/src/common/redisutils/operator.rs:115:14
[INFO] [stderr]     |
[INFO] [stderr] 115 | pub async fn hash_set<T: Serialize>(key: &str, field: &str, val: &T) -> RedisResult<()> {
[INFO] [stderr]     |              ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `hash_get` is never used
[INFO] [stderr]    --> looklapi/src/common/redisutils/operator.rs:129:14
[INFO] [stderr]     |
[INFO] [stderr] 129 | pub async fn hash_get<T: DeserializeOwned>(key: &str, field: &str) -> RedisResult<T> {
[INFO] [stderr]     |              ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `hash_keys` is never used
[INFO] [stderr]    --> looklapi/src/common/redisutils/operator.rs:143:14
[INFO] [stderr]     |
[INFO] [stderr] 143 | pub async fn hash_keys(key: &str) -> RedisResult<Vec<String>> {
[INFO] [stderr]     |              ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `hash_values` is never used
[INFO] [stderr]    --> looklapi/src/common/redisutils/operator.rs:156:14
[INFO] [stderr]     |
[INFO] [stderr] 156 | pub async fn hash_values<T: DeserializeOwned>(key: &str) -> RedisResult<Vec<T>> {
[INFO] [stderr]     |              ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `hash_get_all` is never used
[INFO] [stderr]    --> looklapi/src/common/redisutils/operator.rs:173:14
[INFO] [stderr]     |
[INFO] [stderr] 173 | pub async fn hash_get_all<T: DeserializeOwned>(key: &str) -> RedisResult<Vec<(String, T)>> {
[INFO] [stderr]     |              ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `exist` is never used
[INFO] [stderr]    --> looklapi/src/common/redisutils/operator.rs:194:14
[INFO] [stderr]     |
[INFO] [stderr] 194 | pub async fn exist(key: &str) -> RedisResult<bool> {
[INFO] [stderr]     |              ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `h_exist` is never used
[INFO] [stderr]    --> looklapi/src/common/redisutils/operator.rs:204:14
[INFO] [stderr]     |
[INFO] [stderr] 204 | pub async fn h_exist(key: &str, field: &str) -> RedisResult<bool> {
[INFO] [stderr]     |              ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `del` is never used
[INFO] [stderr]    --> looklapi/src/common/redisutils/operator.rs:214:14
[INFO] [stderr]     |
[INFO] [stderr] 214 | pub async fn del(key: &str) -> RedisResult<()> {
[INFO] [stderr]     |              ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `h_del` is never used
[INFO] [stderr]    --> looklapi/src/common/redisutils/operator.rs:225:14
[INFO] [stderr]     |
[INFO] [stderr] 225 | pub async fn h_del(key: &str, field: &str) -> RedisResult<()> {
[INFO] [stderr]     |              ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `h_del_multiple` is never used
[INFO] [stderr]    --> looklapi/src/common/redisutils/operator.rs:236:14
[INFO] [stderr]     |
[INFO] [stderr] 236 | pub async fn h_del_multiple(key: &str, fields: &[&str]) -> RedisResult<()> {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `hash_incr` is never used
[INFO] [stderr]    --> looklapi/src/common/redisutils/operator.rs:247:14
[INFO] [stderr]     |
[INFO] [stderr] 247 | pub async fn hash_incr(key: &str, field: &str, incr_val: i64) -> RedisResult<i64> {
[INFO] [stderr]     |              ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `h_len` is never used
[INFO] [stderr]    --> looklapi/src/common/redisutils/operator.rs:264:14
[INFO] [stderr]     |
[INFO] [stderr] 264 | pub async fn h_len(key: &str) -> RedisResult<usize> {
[INFO] [stderr]     |              ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `set_key_exp_secs` is never used
[INFO] [stderr]    --> looklapi/src/common/redisutils/operator.rs:277:14
[INFO] [stderr]     |
[INFO] [stderr] 277 | pub async fn set_key_exp_secs(key: &str, exp_secs: u64) -> RedisResult<()> {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `set_key_exp_millisecs` is never used
[INFO] [stderr]    --> looklapi/src/common/redisutils/operator.rs:290:14
[INFO] [stderr]     |
[INFO] [stderr] 290 | pub async fn set_key_exp_millisecs(key: &str, exp_millisecs: u64) -> RedisResult<()> {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `set_key_exp_unix_secs` is never used
[INFO] [stderr]    --> looklapi/src/common/redisutils/operator.rs:303:14
[INFO] [stderr]     |
[INFO] [stderr] 303 | pub async fn set_key_exp_unix_secs(key: &str, exp_time: u64) -> RedisResult<()> {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `set_key_exp_unix_millisecs` is never used
[INFO] [stderr]    --> looklapi/src/common/redisutils/operator.rs:319:14
[INFO] [stderr]     |
[INFO] [stderr] 319 | pub async fn set_key_exp_unix_millisecs(key: &str, exp_time: u64) -> RedisResult<()> {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `remove_key_exp` is never used
[INFO] [stderr]    --> looklapi/src/common/redisutils/operator.rs:335:14
[INFO] [stderr]     |
[INFO] [stderr] 335 | pub async fn remove_key_exp(key: &str) -> RedisResult<()> {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_key_ttl_secs` is never used
[INFO] [stderr]    --> looklapi/src/common/redisutils/operator.rs:348:14
[INFO] [stderr]     |
[INFO] [stderr] 348 | pub async fn get_key_ttl_secs(key: &str) -> RedisResult<i64> {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_key_ttl_millisecs` is never used
[INFO] [stderr]    --> looklapi/src/common/redisutils/operator.rs:361:14
[INFO] [stderr]     |
[INFO] [stderr] 361 | pub async fn get_key_ttl_millisecs(key: &str) -> RedisResult<i64> {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `lpush` is never used
[INFO] [stderr]  --> looklapi/src/common/redisutils/list.rs:7:14
[INFO] [stderr]   |
[INFO] [stderr] 7 | pub async fn lpush<T: Serialize>(key: &str, values: &[T]) -> RedisResult<usize> {
[INFO] [stderr]   |              ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `rpush` is never used
[INFO] [stderr]   --> looklapi/src/common/redisutils/list.rs:35:14
[INFO] [stderr]    |
[INFO] [stderr] 35 | pub async fn rpush<T: Serialize>(key: &str, values: &[T]) -> RedisResult<usize> {
[INFO] [stderr]    |              ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `lpop` is never used
[INFO] [stderr]   --> looklapi/src/common/redisutils/list.rs:63:14
[INFO] [stderr]    |
[INFO] [stderr] 63 | pub async fn lpop<T: DeserializeOwned>(key: &str) -> RedisResult<T> {
[INFO] [stderr]    |              ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `rpop` is never used
[INFO] [stderr]   --> looklapi/src/common/redisutils/list.rs:77:14
[INFO] [stderr]    |
[INFO] [stderr] 77 | pub async fn rpop<T: DeserializeOwned>(key: &str) -> RedisResult<T> {
[INFO] [stderr]    |              ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `rpoplpush` is never used
[INFO] [stderr]   --> looklapi/src/common/redisutils/list.rs:91:14
[INFO] [stderr]    |
[INFO] [stderr] 91 | pub async fn rpoplpush<T: DeserializeOwned>(
[INFO] [stderr]    |              ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `lremove` is never used
[INFO] [stderr]    --> looklapi/src/common/redisutils/list.rs:108:14
[INFO] [stderr]     |
[INFO] [stderr] 108 | pub async fn lremove(key: &str, count: isize, value: &str) -> RedisResult<usize> {
[INFO] [stderr]     |              ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `llen` is never used
[INFO] [stderr]    --> looklapi/src/common/redisutils/list.rs:121:14
[INFO] [stderr]     |
[INFO] [stderr] 121 | pub async fn llen(key: &str) -> RedisResult<usize> {
[INFO] [stderr]     |              ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `lindex` is never used
[INFO] [stderr]    --> looklapi/src/common/redisutils/list.rs:134:14
[INFO] [stderr]     |
[INFO] [stderr] 134 | pub async fn lindex<T: DeserializeOwned>(key: &str, index: isize) -> RedisResult<T> {
[INFO] [stderr]     |              ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `lset` is never used
[INFO] [stderr]    --> looklapi/src/common/redisutils/list.rs:148:14
[INFO] [stderr]     |
[INFO] [stderr] 148 | pub async fn lset<T: Serialize>(key: &str, index: isize, value: &T) -> RedisResult<()> {
[INFO] [stderr]     |              ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `lrange` is never used
[INFO] [stderr]    --> looklapi/src/common/redisutils/list.rs:162:14
[INFO] [stderr]     |
[INFO] [stderr] 162 | pub async fn lrange<T: DeserializeOwned>(
[INFO] [stderr]     |              ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `ltrim` is never used
[INFO] [stderr]    --> looklapi/src/common/redisutils/list.rs:183:14
[INFO] [stderr]     |
[INFO] [stderr] 183 | pub async fn ltrim(key: &str, start: isize, end: isize) -> RedisResult<()> {
[INFO] [stderr]     |              ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `sadd` is never used
[INFO] [stderr]  --> looklapi/src/common/redisutils/set.rs:7:14
[INFO] [stderr]   |
[INFO] [stderr] 7 | pub async fn sadd<T: Serialize>(key: &str, members: &[T]) -> RedisResult<usize> {
[INFO] [stderr]   |              ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `srem` is never used
[INFO] [stderr]   --> looklapi/src/common/redisutils/set.rs:32:14
[INFO] [stderr]    |
[INFO] [stderr] 32 | pub async fn srem(key: &str, members: &[&str]) -> RedisResult<usize> {
[INFO] [stderr]    |              ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `sismember` is never used
[INFO] [stderr]   --> looklapi/src/common/redisutils/set.rs:49:14
[INFO] [stderr]    |
[INFO] [stderr] 49 | pub async fn sismember<T: Serialize>(key: &str, member: &T) -> RedisResult<bool> {
[INFO] [stderr]    |              ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `smembers` is never used
[INFO] [stderr]   --> looklapi/src/common/redisutils/set.rs:63:14
[INFO] [stderr]    |
[INFO] [stderr] 63 | pub async fn smembers<T: DeserializeOwned>(key: &str) -> RedisResult<Vec<T>> {
[INFO] [stderr]    |              ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `scard` is never used
[INFO] [stderr]   --> looklapi/src/common/redisutils/set.rs:80:14
[INFO] [stderr]    |
[INFO] [stderr] 80 | pub async fn scard(key: &str) -> RedisResult<usize> {
[INFO] [stderr]    |              ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `spop` is never used
[INFO] [stderr]   --> looklapi/src/common/redisutils/set.rs:93:14
[INFO] [stderr]    |
[INFO] [stderr] 93 | pub async fn spop<T: DeserializeOwned>(key: &str) -> RedisResult<T> {
[INFO] [stderr]    |              ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `srandmember` is never used
[INFO] [stderr]    --> looklapi/src/common/redisutils/set.rs:107:14
[INFO] [stderr]     |
[INFO] [stderr] 107 | pub async fn srandmember<T: DeserializeOwned>(key: &str, count: usize) -> RedisResult<Vec<T>> {
[INFO] [stderr]     |              ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `sdiff` is never used
[INFO] [stderr]    --> looklapi/src/common/redisutils/set.rs:129:14
[INFO] [stderr]     |
[INFO] [stderr] 129 | pub async fn sdiff<T: DeserializeOwned>(key1: &str, key2: &str) -> RedisResult<Vec<T>> {
[INFO] [stderr]     |              ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `sinter` is never used
[INFO] [stderr]    --> looklapi/src/common/redisutils/set.rs:146:14
[INFO] [stderr]     |
[INFO] [stderr] 146 | pub async fn sinter<T: DeserializeOwned>(key1: &str, key2: &str) -> RedisResult<Vec<T>> {
[INFO] [stderr]     |              ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `sunion` is never used
[INFO] [stderr]    --> looklapi/src/common/redisutils/set.rs:163:14
[INFO] [stderr]     |
[INFO] [stderr] 163 | pub async fn sunion<T: DeserializeOwned>(key1: &str, key2: &str) -> RedisResult<Vec<T>> {
[INFO] [stderr]     |              ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `zadd` is never used
[INFO] [stderr]  --> looklapi/src/common/redisutils/zset.rs:7:14
[INFO] [stderr]   |
[INFO] [stderr] 7 | pub async fn zadd<T: Serialize>(key: &str, score: f64, member: &T) -> RedisResult<usize> {
[INFO] [stderr]   |              ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `zrem` is never used
[INFO] [stderr]   --> looklapi/src/common/redisutils/zset.rs:18:14
[INFO] [stderr]    |
[INFO] [stderr] 18 | pub async fn zrem(key: &str, members: &[&str]) -> RedisResult<usize> {
[INFO] [stderr]    |              ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `zscore` is never used
[INFO] [stderr]   --> looklapi/src/common/redisutils/zset.rs:32:14
[INFO] [stderr]    |
[INFO] [stderr] 32 | pub async fn zscore<T: Serialize>(key: &str, member: &T) -> RedisResult<f64> {
[INFO] [stderr]    |              ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `zincrby` is never used
[INFO] [stderr]   --> looklapi/src/common/redisutils/zset.rs:43:14
[INFO] [stderr]    |
[INFO] [stderr] 43 | pub async fn zincrby<T: Serialize>(key: &str, increment: f64, member: &T) -> RedisResult<f64> {
[INFO] [stderr]    |              ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `zcard` is never used
[INFO] [stderr]   --> looklapi/src/common/redisutils/zset.rs:56:14
[INFO] [stderr]    |
[INFO] [stderr] 56 | pub async fn zcard(key: &str) -> RedisResult<usize> {
[INFO] [stderr]    |              ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `zrangebyscore` is never used
[INFO] [stderr]   --> looklapi/src/common/redisutils/zset.rs:66:14
[INFO] [stderr]    |
[INFO] [stderr] 66 | pub async fn zrangebyscore<T: DeserializeOwned>(key: &str, min: f64, max: f64) -> RedisResult<Vec<T>> {
[INFO] [stderr]    |              ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `zrange` is never used
[INFO] [stderr]   --> looklapi/src/common/redisutils/zset.rs:77:14
[INFO] [stderr]    |
[INFO] [stderr] 77 | pub async fn zrange<T: DeserializeOwned>(key: &str, start: isize, stop: isize) -> RedisResult<Vec<T>> {
[INFO] [stderr]    |              ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `zrevrange` is never used
[INFO] [stderr]   --> looklapi/src/common/redisutils/zset.rs:88:14
[INFO] [stderr]    |
[INFO] [stderr] 88 | pub async fn zrevrange<T: DeserializeOwned>(key: &str, start: isize, stop: isize) -> RedisResult<Vec<T>> {
[INFO] [stderr]    |              ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `zrank` is never used
[INFO] [stderr]   --> looklapi/src/common/redisutils/zset.rs:99:14
[INFO] [stderr]    |
[INFO] [stderr] 99 | pub async fn zrank<T: Serialize>(key: &str, member: &T) -> RedisResult<Option<usize>> {
[INFO] [stderr]    |              ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `zrevrank` is never used
[INFO] [stderr]    --> looklapi/src/common/redisutils/zset.rs:110:14
[INFO] [stderr]     |
[INFO] [stderr] 110 | pub async fn zrevrank<T: Serialize>(key: &str, member: &T) -> RedisResult<Option<usize>> {
[INFO] [stderr]     |              ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `zremrangebyscore` is never used
[INFO] [stderr]    --> looklapi/src/common/redisutils/zset.rs:121:14
[INFO] [stderr]     |
[INFO] [stderr] 121 | pub async fn zremrangebyscore(key: &str, min: f64, max: f64) -> RedisResult<usize> {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `zremrangebyrank` is never used
[INFO] [stderr]    --> looklapi/src/common/redisutils/zset.rs:133:14
[INFO] [stderr]     |
[INFO] [stderr] 133 | pub async fn zremrangebyrank(key: &str, start: isize, stop: isize) -> RedisResult<usize> {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `lock` is never used
[INFO] [stderr]  --> looklapi/src/common/redisutils/locker.rs:6:14
[INFO] [stderr]   |
[INFO] [stderr] 6 | pub async fn lock(key: &str, expire_secs: u64) -> RedisResult<bool> {
[INFO] [stderr]   |              ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `unlock` is never used
[INFO] [stderr]   --> looklapi/src/common/redisutils/locker.rs:23:14
[INFO] [stderr]    |
[INFO] [stderr] 23 | pub async fn unlock(key: &str) -> RedisResult<()> {
[INFO] [stderr]    |              ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `try_lock` is never used
[INFO] [stderr]   --> looklapi/src/common/redisutils/locker.rs:34:14
[INFO] [stderr]    |
[INFO] [stderr] 34 | pub async fn try_lock(key: &str, expire_secs: u64, max_retry: usize, retry_interval_ms: u64) -> RedisResult<bool> {
[INFO] [stderr]    |              ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `multi_exec` is never used
[INFO] [stderr]  --> looklapi/src/common/redisutils/multi_cmds.rs:5:14
[INFO] [stderr]   |
[INFO] [stderr] 5 | pub async fn multi_exec(key: &str, commands: &[(String, Vec<&str>)]) -> RedisResult<()> {
[INFO] [stderr]   |              ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `eval` is never used
[INFO] [stderr]   --> looklapi/src/common/redisutils/multi_cmds.rs:75:14
[INFO] [stderr]    |
[INFO] [stderr] 75 | pub async fn eval(db_index: u8, script: &str, keys: &[&str], args: &[&str]) -> RedisResult<String> {
[INFO] [stderr]    |              ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAX_DB_INDEX` is never used
[INFO] [stderr]  --> looklapi/src/common/redisutils/redipool.rs:8:7
[INFO] [stderr]   |
[INFO] [stderr] 8 | const MAX_DB_INDEX: u8 = 15;
[INFO] [stderr]   |       ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `RedisPool` is never constructed
[INFO] [stderr]   --> looklapi/src/common/redisutils/redipool.rs:10:8
[INFO] [stderr]    |
[INFO] [stderr] 10 | struct RedisPool {
[INFO] [stderr]    |        ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `get_client`, and `get_connection` are never used
[INFO] [stderr]   --> looklapi/src/common/redisutils/redipool.rs:15:8
[INFO] [stderr]    |
[INFO] [stderr] 14 | impl RedisPool {
[INFO] [stderr]    | -------------- associated items in this implementation
[INFO] [stderr] 15 |     fn new() -> Self {
[INFO] [stderr]    |        ^^^
[INFO] [stderr] ...
[INFO] [stderr] 21 |     async fn get_client(&mut self, db_index: u8) -> RedisResult<&Client> {
[INFO] [stderr]    |              ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 61 |     async fn get_connection(&mut self, db_index: u8) -> RedisResult<Connection> {
[INFO] [stderr]    |              ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_db_index_from_key` is never used
[INFO] [stderr]   --> looklapi/src/common/redisutils/redipool.rs:72:4
[INFO] [stderr]    |
[INFO] [stderr] 72 | fn get_db_index_from_key(key: &str) -> u8 {
[INFO] [stderr]    |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_conn` is never used
[INFO] [stderr]   --> looklapi/src/common/redisutils/redipool.rs:87:14
[INFO] [stderr]    |
[INFO] [stderr] 87 | pub async fn get_conn(key: &str) -> RedisResult<Connection> {
[INFO] [stderr]    |              ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_conn0` is never used
[INFO] [stderr]   --> looklapi/src/common/redisutils/redipool.rs:94:14
[INFO] [stderr]    |
[INFO] [stderr] 94 | pub async fn get_conn0(db_index: u8) -> RedisResult<Connection> {
[INFO] [stderr]    |              ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `save_to_file`, `draw_image`, `draw_qr_code`, and `draw_head_img` are never used
[INFO] [stderr]    --> looklapi/src/commonapi/drawer/image_drawer.rs:54:12
[INFO] [stderr]     |
[INFO] [stderr]  12 | impl ImageDrawer {
[INFO] [stderr]     | ---------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  54 |     pub fn save_to_file(&self, filename: &str) -> anyhow::Result<()> {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 164 |     pub fn draw_image(&mut self, img: ImageContentModel) -> anyhow::Result<()> {
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 198 |     pub fn draw_qr_code(&mut self, qr_code: ImageContentModel) -> anyhow::Result<()> {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 204 |     pub fn draw_head_img(&mut self, head_img: ImageContentModel) -> anyhow::Result<()> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `draw_template_async`, `draw_image_async`, `draw_qr_code_async`, `draw_head_img_async`, and `draw_text_async` are never used
[INFO] [stderr]    --> looklapi/src/commonapi/drawer/image_drawer.rs:339:18
[INFO] [stderr]     |
[INFO] [stderr] 337 | impl ImageDrawer {
[INFO] [stderr]     | ---------------- methods in this implementation
[INFO] [stderr] 338 |     /// 绘制背景模板（异步）
[INFO] [stderr] 339 |     pub async fn draw_template_async(&mut self, template: ImageContentModel) -> anyhow::Result<()> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 385 |     pub async fn draw_image_async(&mut self, img: ImageContentModel) -> anyhow::Result<()> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 419 |     pub async fn draw_qr_code_async(&mut self, qr_code: ImageContentModel) -> anyhow::Result<()> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 425 |     pub async fn draw_head_img_async(&mut self, head_img: ImageContentModel) -> anyhow::Result<()> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 431 |     pub async fn draw_text_async(&mut self, text: TextModel) -> anyhow::Result<()> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `load_image_async` is never used
[INFO] [stderr]   --> looklapi/src/commonapi/drawer/image_helper.rs:18:14
[INFO] [stderr]    |
[INFO] [stderr] 18 | pub async fn load_image_async(path: &str) -> anyhow::Result<DynamicImage> {
[INFO] [stderr]    |              ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `load_image_from_url_async` is never used
[INFO] [stderr]   --> looklapi/src/commonapi/drawer/image_helper.rs:40:10
[INFO] [stderr]    |
[INFO] [stderr] 40 | async fn load_image_from_url_async(url: &str) -> anyhow::Result<DynamicImage> {
[INFO] [stderr]    |          ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `resize_image` is never used
[INFO] [stderr]   --> looklapi/src/commonapi/drawer/image_helper.rs:63:8
[INFO] [stderr]    |
[INFO] [stderr] 63 | pub fn resize_image(img: &DynamicImage, width: u32, height: u32) -> DynamicImage {
[INFO] [stderr]    |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `cover_image` is never used
[INFO] [stderr]   --> looklapi/src/commonapi/drawer/image_helper.rs:69:8
[INFO] [stderr]    |
[INFO] [stderr] 69 | pub fn cover_image(img: &DynamicImage, width: u32, height: u32) -> DynamicImage {
[INFO] [stderr]    |        ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `TextLine` is never constructed
[INFO] [stderr]  --> looklapi/src/commonapi/drawer/text_helper.rs:2:12
[INFO] [stderr]   |
[INFO] [stderr] 2 | pub struct TextLine {
[INFO] [stderr]   |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `process_text_for_drawing` is never used
[INFO] [stderr]  --> looklapi/src/commonapi/drawer/text_helper.rs:9:8
[INFO] [stderr]   |
[INFO] [stderr] 9 | pub fn process_text_for_drawing<F>(
[INFO] [stderr]   |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `calculate_text_lines_position` is never used
[INFO] [stderr]   --> looklapi/src/commonapi/drawer/text_helper.rs:60:8
[INFO] [stderr]    |
[INFO] [stderr] 60 | pub fn calculate_text_lines_position<F1, F2>(
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `login_validator_middleware` is never used
[INFO] [stderr]   --> looklapi/src/controller/middleware/request_context_middleware.rs:22:14
[INFO] [stderr]    |
[INFO] [stderr] 22 | pub async fn login_validator_middleware(
[INFO] [stderr]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `manager_validator_middleware` is never used
[INFO] [stderr]   --> looklapi/src/controller/middleware/request_context_middleware.rs:31:14
[INFO] [stderr]    |
[INFO] [stderr] 31 | pub async fn manager_validator_middleware(
[INFO] [stderr]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait `TestTrait` is never used
[INFO] [stderr]   --> looklapi/src/controller/test_controller.rs:51:7
[INFO] [stderr]    |
[INFO] [stderr] 51 | trait TestTrait {
[INFO] [stderr]    |       ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Test` is never constructed
[INFO] [stderr]   --> looklapi/src/controller/test_controller.rs:56:8
[INFO] [stderr]    |
[INFO] [stderr] 56 | struct Test;
[INFO] [stderr]    |        ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `TestProxy` is never constructed
[INFO] [stderr]   --> looklapi/src/controller/test_controller.rs:69:8
[INFO] [stderr]    |
[INFO] [stderr] 69 | struct TestProxy {
[INFO] [stderr]    |        ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `proxy_fn` and `other_fn` are never used
[INFO] [stderr]   --> looklapi/src/controller/test_controller.rs:74:8
[INFO] [stderr]    |
[INFO] [stderr] 73 | impl TestProxy {
[INFO] [stderr]    | -------------- methods in this implementation
[INFO] [stderr] 74 |     fn proxy_fn(&self) -> Result<(), AppError> {
[INFO] [stderr]    |        ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 81 |     fn other_fn(&self) {
[INFO] [stderr]    |        ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `serial` is never read
[INFO] [stderr]  --> looklapi/src/model/modelimpl/draw/image_content_model.rs:9:9
[INFO] [stderr]   |
[INFO] [stderr] 5 | pub struct ImageContentModel {
[INFO] [stderr]   |            ----------------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 9 |     pub serial: i32,
[INFO] [stderr]   |         ^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `ImageContentModel` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `radius` is never read
[INFO] [stderr]   --> looklapi/src/model/modelimpl/draw/rectangle_content_model.rs:13:9
[INFO] [stderr]    |
[INFO] [stderr]  5 | pub struct RectangleContentModel {
[INFO] [stderr]    |            --------------------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 13 |     pub radius: i32,
[INFO] [stderr]    |         ^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `RectangleContentModel` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: multiple fields are never read
[INFO] [stderr]   --> looklapi/src/model/modelimpl/draw/text_model.rs:19:9
[INFO] [stderr]    |
[INFO] [stderr] 11 | pub struct TextModel {
[INFO] [stderr]    |            --------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 19 |     pub font: String,
[INFO] [stderr]    |         ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 23 |     pub is_bold: bool,
[INFO] [stderr]    |         ^^^^^^^
[INFO] [stderr] 24 |     /// 是否倾斜
[INFO] [stderr] 25 |     pub is_italic: bool,
[INFO] [stderr]    |         ^^^^^^^^^
[INFO] [stderr] 26 |     /// 水平间距
[INFO] [stderr] 27 |     pub h_gap: f32,
[INFO] [stderr]    |         ^^^^^
[INFO] [stderr] 28 |     /// 行距
[INFO] [stderr] 29 |     pub v_gap: f32,
[INFO] [stderr]    |         ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 33 |     pub boundary: i32,
[INFO] [stderr]    |         ^^^^^^^^
[INFO] [stderr] 34 |     /// 行数限制
[INFO] [stderr] 35 |     pub row_limit: i32,
[INFO] [stderr]    |         ^^^^^^^^^
[INFO] [stderr] 36 |     /// 关联动态字符
[INFO] [stderr] 37 |     pub related_dynamic_text: Vec<Box<DynamicTextModel>>,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `TextModel` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> looklapi/src/model/modelimpl/draw/text_model.rs:42:12
[INFO] [stderr]    |
[INFO] [stderr] 40 | impl TextModel {
[INFO] [stderr]    | -------------- associated function in this implementation
[INFO] [stderr] 41 |     /// 创建静态文字模型实例
[INFO] [stderr] 42 |     pub fn new() -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `HTTP_REQUEST_HEADER` is never used
[INFO] [stderr]  --> looklapi/src/request_context.rs:4:11
[INFO] [stderr]   |
[INFO] [stderr] 4 | pub const HTTP_REQUEST_HEADER: HeaderName = HeaderName::from_static("http-request-header");
[INFO] [stderr]   |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `HTTP_REQUEST_EXTENSIONS` is never used
[INFO] [stderr]  --> looklapi/src/request_context.rs:5:11
[INFO] [stderr]   |
[INFO] [stderr] 5 | pub const HTTP_REQUEST_EXTENSIONS: HeaderName = HeaderName::from_static("http-request-extensions");
[INFO] [stderr]   |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `login_info` is never read
[INFO] [stderr]   --> looklapi/src/request_context.rs:11:9
[INFO] [stderr]    |
[INFO] [stderr]  9 | pub struct RequestContext {
[INFO] [stderr]    |            -------------- field in this struct
[INFO] [stderr] 10 |     pub header: HeaderMap,
[INFO] [stderr] 11 |     pub login_info: Option<LoginInfo>,
[INFO] [stderr]    |         ^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `RequestContext` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: variants `User` and `Admin` are never constructed
[INFO] [stderr]   --> looklapi/src/request_context.rs:17:5
[INFO] [stderr]    |
[INFO] [stderr] 16 | pub enum LoginInfo {
[INFO] [stderr]    |          --------- variants in this enum
[INFO] [stderr] 17 |     User(()),
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] 18 |     Admin(()),
[INFO] [stderr]    |     ^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `LoginInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: `looklapi` (bin "looklapi" test) generated 177 warnings (run `cargo fix --bin "looklapi" -p looklapi --tests` to apply 29 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.87s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/looklapi-2ec7534c415847c4)
[INFO] [stdout] 
[INFO] [stdout] running 3 tests
[INFO] [stdout] test app::appcontext::test::test_duplicate_registration ... ok
[INFO] [stdout] test app::appcontext::test::test_panic_capture ... FAILED
[INFO] [stdout] test app::appcontext::test::test_global_event_system ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- app::appcontext::test::test_panic_capture stdout ----
[INFO] [stdout] Starting panic capture test...
[INFO] [stdout] Observer subscribed for event type: TypeId(0xd00b3bf99382f571a7f00797c22406c3)
[INFO] [stdout] Publishing event with type ID: TypeId(0xd00b3bf99382f571a7f00797c22406c3)
[INFO] [stdout] Found 2 observers for event type
[INFO] [stdout] Observer subscribed for event type: TypeId(0xe6f444275d0ab8295dd2e75f70596c23)
[INFO] [stdout] Publishing event with type ID: TypeId(0xe6f444275d0ab8295dd2e75f70596c23)
[INFO] [stdout] Found 2 observers for event type
[INFO] [stdout] 
[INFO] [stdout] thread 'app::appcontext::test::test_panic_capture' (19) panicked at looklapi/src/app/appcontext/test.rs:150:5:
[INFO] [stdout] Normal observer should receive event
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x59a3dd63dd92 - std::backtrace_rs::backtrace::libunwind::trace::hff358a60abf734fc
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x59a3dd63dd92 - std::backtrace_rs::backtrace::trace_unsynchronized::h3b121f916dd95ec6
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x59a3dd63dd92 - std::sys::backtrace::_print_fmt::hde0a62ded68798e9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x59a3dd63dd92 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h93773fc827e3113d
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x59a3dd651c3a - core::fmt::rt::Argument::fmt::h01eff69902dad97f
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x59a3dd651c3a - core::fmt::write::hed7b5c73d82ecb7c
[INFO] [stdout]    6:     0x59a3dd608b36 - std::io::default_write_fmt::h2f696ff5b8bbaa4b
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x59a3dd608b36 - std::io::Write::write_fmt::h5e66814db8a9cfce
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x59a3dd61be89 - std::sys::backtrace::BacktraceLock::print::h8b1d6fcc5a56d1a3
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x59a3dd61be89 - std::panicking::default_hook::{{closure}}::h2be84df4f189ae36
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x59a3dd61bd21 - std::panicking::default_hook::hf0ea8939246f43a9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x59a3dc0f34ce - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h02d35e3888986252
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   12:     0x59a3dc0f34ce - test::test_main_with_exit_callback::{{closure}}::h939640a27d647173
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x59a3dd61c1b2 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::hc9df09ff391af3e7
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   14:     0x59a3dd61c1b2 - std::panicking::panic_with_hook::hb4bd9ac1123582a0
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x59a3dd61bf7a - std::panicking::panic_handler::{{closure}}::hde00dd15f5637fe2
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:691:13
[INFO] [stdout]   16:     0x59a3dd6162d9 - std::sys::backtrace::__rust_end_short_backtrace::hb72197fa777c1785
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x59a3dd5fd0cd - __rustc[4425a7e20b4c8619]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x59a3dd65d02c - core::panicking::panic_fmt::ha59b517dd231f4da
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x59a3dba949f9 - looklapi::app::appcontext::test::test_panic_capture::{{closure}}::hae49b7ec36c830c0
[INFO] [stdout]                                at /opt/rustwide/workdir/looklapi/src/app/appcontext/test.rs:150:5
[INFO] [stdout]   20:     0x59a3dba936f2 - <core::pin::Pin<P> as core::future::future::Future>::poll::h13800af3f35761f1
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/future/future.rs:133:9
[INFO] [stdout]   21:     0x59a3dba938cd - <core::pin::Pin<P> as core::future::future::Future>::poll::hc9452e0298e66e92
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/future/future.rs:133:9
[INFO] [stdout]   22:     0x59a3dbcb9d0d - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}::{{closure}}::{{closure}}::he5eb0c798a5f672e
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:753:70
[INFO] [stdout]   23:     0x59a3dbcb9a6b - tokio::task::coop::with_budget::h65c5feff5ac8790b
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/task/coop/mod.rs:167:5
[INFO] [stdout]   24:     0x59a3dbcb9a6b - tokio::task::coop::budget::h74631cee4cb4f28c
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/task/coop/mod.rs:133:5
[INFO] [stdout]   25:     0x59a3dbcb9a6b - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}::{{closure}}::h15bd7ec0798bc81f
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:753:25
[INFO] [stdout]   26:     0x59a3dbcb6d60 - tokio::runtime::scheduler::current_thread::Context::enter::h3252c857148bf4ea
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:442:19
[INFO] [stdout]   27:     0x59a3dbcb912d - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}::hf7504fa75eab5880
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:752:44
[INFO] [stdout]   28:     0x59a3dbcb8314 - tokio::runtime::scheduler::current_thread::CoreGuard::enter::{{closure}}::hc266b215fcccc6d9
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:840:68
[INFO] [stdout]   29:     0x59a3dbc3e3eb - tokio::runtime::context::scoped::Scoped<T>::set::h9e587681032d00bf
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/context/scoped.rs:40:9
[INFO] [stdout]   30:     0x59a3dbbe31f9 - tokio::runtime::context::set_scheduler::{{closure}}::h5bd2f90d0fdf0767
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/context.rs:176:38
[INFO] [stdout]   31:     0x59a3dbaa93d2 - std::thread::local::LocalKey<T>::try_with::hf853954726a7ef8f
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/local.rs:513:12
[INFO] [stdout]   32:     0x59a3dbaa74fe - std::thread::local::LocalKey<T>::with::hba5f04b37656b4e6
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/local.rs:477:20
[INFO] [stdout]   33:     0x59a3dbbe31ad - tokio::runtime::context::set_scheduler::hff1de1b9cca39663
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/context.rs:176:17
[INFO] [stdout]   34:     0x59a3dbcb7c80 - tokio::runtime::scheduler::current_thread::CoreGuard::enter::h2bca3bdff18ba85d
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:840:27
[INFO] [stdout]   35:     0x59a3dbcb83d6 - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::he0f66c26e9f391b5
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:740:24
[INFO] [stdout]   36:     0x59a3dbcb4720 - tokio::runtime::scheduler::current_thread::CurrentThread::block_on::{{closure}}::hff5c50e461ec6256
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:200:33
[INFO] [stdout]   37:     0x59a3dbc3eac3 - tokio::runtime::context::runtime::enter_runtime::hfd4ec7254f719ba8
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/context/runtime.rs:65:16
[INFO] [stdout]   38:     0x59a3dbcb4191 - tokio::runtime::scheduler::current_thread::CurrentThread::block_on::h88373fc93f68f668
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:188:9
[INFO] [stdout]   39:     0x59a3dbad9c34 - tokio::runtime::runtime::Runtime::block_on_inner::hd89bb1285d015084
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/runtime.rs:368:52
[INFO] [stdout]   40:     0x59a3dbad9dfc - tokio::runtime::runtime::Runtime::block_on::hd358c4d98fa36ce4
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/runtime.rs:342:18
[INFO] [stdout]   41:     0x59a3dba942a4 - looklapi::app::appcontext::test::test_panic_capture::h246696138997acf2
[INFO] [stdout]                                at /opt/rustwide/workdir/looklapi/src/app/appcontext/test.rs:155:43
[INFO] [stdout]   42:     0x59a3dba94337 - looklapi::app::appcontext::test::test_panic_capture::{{closure}}::h4a680b6e4f47d5e7
[INFO] [stdout]                                at /opt/rustwide/workdir/looklapi/src/app/appcontext/test.rs:126:30
[INFO] [stdout]   43:     0x59a3dbcc78a6 - core::ops::function::FnOnce::call_once::hb3feb8507d09b540
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   44:     0x59a3dc0f328b - core::ops::function::FnOnce::call_once::hddb3cd395c36bfbb
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   45:     0x59a3dc0f328b - test::__rust_begin_short_backtrace::h0b6a7601d9750bfa
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:663:18
[INFO] [stdout]   46:     0x59a3dc106c9a - test::run_test_in_process::{{closure}}::h444209903f00b347
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:686:74
[INFO] [stdout]   47:     0x59a3dc106c9a - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::hfb3ba8f46e537649
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   48:     0x59a3dc106c9a - std::panicking::catch_unwind::do_call::h1672a45911fcf9dc
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:581:40
[INFO] [stdout]   49:     0x59a3dc106c9a - std::panicking::catch_unwind::h0fadaee22787a6dd
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:544:19
[INFO] [stdout]   50:     0x59a3dc106c9a - std::panic::catch_unwind::hc47ad190f2c8e188
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panic.rs:359:14
[INFO] [stdout]   51:     0x59a3dc106c9a - test::run_test_in_process::hcd7faaf934f29999
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:686:27
[INFO] [stdout]   52:     0x59a3dc106c9a - test::run_test::{{closure}}::hddc4550da4871867
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:607:43
[INFO] [stdout]   53:     0x59a3dc0e10f4 - test::run_test::{{closure}}::h98ae26689f13ed94
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:637:41
[INFO] [stdout]   54:     0x59a3dc0e10f4 - std::sys::backtrace::__rust_begin_short_backtrace::h3ec4d1f21ad44588
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   55:     0x59a3dc0e4a92 - std::thread::lifecycle::spawn_unchecked::{{closure}}::{{closure}}::hd8bf2c73d479939f
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   56:     0x59a3dc0e4a92 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h3b4248f358af2491
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   57:     0x59a3dc0e4a92 - std::panicking::catch_unwind::do_call::hda10a64f4b8daebe
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:581:40
[INFO] [stdout]   58:     0x59a3dc0e4a92 - std::panicking::catch_unwind::h659e5ee8336ec8c7
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:544:19
[INFO] [stdout]   59:     0x59a3dc0e4a92 - std::panic::catch_unwind::h9d4d66a538912c18
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panic.rs:359:14
[INFO] [stdout]   60:     0x59a3dc0e4a92 - std::thread::lifecycle::spawn_unchecked::{{closure}}::h7557906bb51d79f1
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   61:     0x59a3dc0e4a92 - core::ops::function::FnOnce::call_once{{vtable.shim}}::h9e460d1d7fc83d35
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   62:     0x59a3dd61142f - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h61282da819d64ea9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   63:     0x59a3dd61142f - std::sys::thread::unix::Thread::new::thread_start::h982f9ea829d1b5fb
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/thread/unix.rs:127:17
[INFO] [stdout]   64:     0x7abd36fa9aa4 - <unknown>
[INFO] [stdout]   65:     0x7abd37036a64 - clone
[INFO] [stdout]   66:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- app::appcontext::test::test_global_event_system stdout ----
[INFO] [stdout] Starting global event system test...
[INFO] [stdout] Observer subscribed for event type: TypeId(0xd00b3bf99382f571a7f00797c22406c3)
[INFO] [stdout] Observer subscribed for event type: TypeId(0xe6f444275d0ab8295dd2e75f70596c23)
[INFO] [stdout] Publishing event with type ID: TypeId(0xd00b3bf99382f571a7f00797c22406c3)
[INFO] [stdout] Found 3 observers for event type
[INFO] [stdout] Publishing event with type ID: TypeId(0xe6f444275d0ab8295dd2e75f70596c23)
[INFO] [stdout] Found 2 observers for event type
[INFO] [stdout] 
[INFO] [stdout] thread 'app::appcontext::test::test_global_event_system' (18) panicked at looklapi/src/app/appcontext/test.rs:116:5:
[INFO] [stdout] AppEventBeanInjected should be received
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x59a3dd63dd92 - std::backtrace_rs::backtrace::libunwind::trace::hff358a60abf734fc
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x59a3dd63dd92 - std::backtrace_rs::backtrace::trace_unsynchronized::h3b121f916dd95ec6
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x59a3dd63dd92 - std::sys::backtrace::_print_fmt::hde0a62ded68798e9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x59a3dd63dd92 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h93773fc827e3113d
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x59a3dd651c3a - core::fmt::rt::Argument::fmt::h01eff69902dad97f
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x59a3dd651c3a - core::fmt::write::hed7b5c73d82ecb7c
[INFO] [stdout]    6:     0x59a3dd608b36 - std::io::default_write_fmt::h2f696ff5b8bbaa4b
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x59a3dd608b36 - std::io::Write::write_fmt::h5e66814db8a9cfce
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x59a3dd61be89 - std::sys::backtrace::BacktraceLock::print::h8b1d6fcc5a56d1a3
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x59a3dd61be89 - std::panicking::default_hook::{{closure}}::h2be84df4f189ae36
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x59a3dd61bd21 - std::panicking::default_hook::hf0ea8939246f43a9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x59a3dc0f34ce - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h02d35e3888986252
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   12:     0x59a3dc0f34ce - test::test_main_with_exit_callback::{{closure}}::h939640a27d647173
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x59a3dd61c1b2 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::hc9df09ff391af3e7
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   14:     0x59a3dd61c1b2 - std::panicking::panic_with_hook::hb4bd9ac1123582a0
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x59a3dd61bf7a - std::panicking::panic_handler::{{closure}}::hde00dd15f5637fe2
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:691:13
[INFO] [stdout]   16:     0x59a3dd6162d9 - std::sys::backtrace::__rust_end_short_backtrace::hb72197fa777c1785
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x59a3dd5fd0cd - __rustc[4425a7e20b4c8619]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x59a3dd65d02c - core::panicking::panic_fmt::ha59b517dd231f4da
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x59a3dba95302 - looklapi::app::appcontext::test::test_global_event_system::{{closure}}::h30ea19d7086295c8
[INFO] [stdout]                                at /opt/rustwide/workdir/looklapi/src/app/appcontext/test.rs:116:5
[INFO] [stdout]   20:     0x59a3dba936f2 - <core::pin::Pin<P> as core::future::future::Future>::poll::h13800af3f35761f1
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/future/future.rs:133:9
[INFO] [stdout]   21:     0x59a3dba938cd - <core::pin::Pin<P> as core::future::future::Future>::poll::hc9452e0298e66e92
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/future/future.rs:133:9
[INFO] [stdout]   22:     0x59a3dbcb9d0d - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}::{{closure}}::{{closure}}::he5eb0c798a5f672e
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:753:70
[INFO] [stdout]   23:     0x59a3dbcb9a6b - tokio::task::coop::with_budget::h65c5feff5ac8790b
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/task/coop/mod.rs:167:5
[INFO] [stdout]   24:     0x59a3dbcb9a6b - tokio::task::coop::budget::h74631cee4cb4f28c
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/task/coop/mod.rs:133:5
[INFO] [stdout]   25:     0x59a3dbcb9a6b - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}::{{closure}}::h15bd7ec0798bc81f
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:753:25
[INFO] [stdout]   26:     0x59a3dbcb6d60 - tokio::runtime::scheduler::current_thread::Context::enter::h3252c857148bf4ea
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:442:19
[INFO] [stdout]   27:     0x59a3dbcb912d - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}::hf7504fa75eab5880
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:752:44
[INFO] [stdout]   28:     0x59a3dbcb8314 - tokio::runtime::scheduler::current_thread::CoreGuard::enter::{{closure}}::hc266b215fcccc6d9
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:840:68
[INFO] [stdout]   29:     0x59a3dbc3e3eb - tokio::runtime::context::scoped::Scoped<T>::set::h9e587681032d00bf
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/context/scoped.rs:40:9
[INFO] [stdout]   30:     0x59a3dbbe31f9 - tokio::runtime::context::set_scheduler::{{closure}}::h5bd2f90d0fdf0767
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/context.rs:176:38
[INFO] [stdout]   31:     0x59a3dbaa93d2 - std::thread::local::LocalKey<T>::try_with::hf853954726a7ef8f
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/local.rs:513:12
[INFO] [stdout]   32:     0x59a3dbaa74fe - std::thread::local::LocalKey<T>::with::hba5f04b37656b4e6
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/local.rs:477:20
[INFO] [stdout]   33:     0x59a3dbbe31ad - tokio::runtime::context::set_scheduler::hff1de1b9cca39663
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/context.rs:176:17
[INFO] [stdout]   34:     0x59a3dbcb7c80 - tokio::runtime::scheduler::current_thread::CoreGuard::enter::h2bca3bdff18ba85d
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:840:27
[INFO] [stdout]   35:     0x59a3dbcb83d6 - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::he0f66c26e9f391b5
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:740:24
[INFO] [stdout]   36:     0x59a3dbcb4720 - tokio::runtime::scheduler::current_thread::CurrentThread::block_on::{{closure}}::hff5c50e461ec6256
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:200:33
[INFO] [stdout]   37:     0x59a3dbc3eac3 - tokio::runtime::context::runtime::enter_runtime::hfd4ec7254f719ba8
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/context/runtime.rs:65:16
[INFO] [stdout]   38:     0x59a3dbcb4191 - tokio::runtime::scheduler::current_thread::CurrentThread::block_on::h88373fc93f68f668
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:188:9
[INFO] [stdout]   39:     0x59a3dbad9c34 - tokio::runtime::runtime::Runtime::block_on_inner::hd89bb1285d015084
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/runtime.rs:368:52
[INFO] [stdout]   40:     0x59a3dbad9dfc - tokio::runtime::runtime::Runtime::block_on::hd358c4d98fa36ce4
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/runtime.rs:342:18
[INFO] [stdout]   41:     0x59a3dba94bb4 - looklapi::app::appcontext::test::test_global_event_system::h36c1fac62fef5543
[INFO] [stdout]                                at /opt/rustwide/workdir/looklapi/src/app/appcontext/test.rs:121:49
[INFO] [stdout]   42:     0x59a3dba95387 - looklapi::app::appcontext::test::test_global_event_system::{{closure}}::hfae710375d3b6ee5
[INFO] [stdout]                                at /opt/rustwide/workdir/looklapi/src/app/appcontext/test.rs:82:36
[INFO] [stdout]   43:     0x59a3dbcc75c6 - core::ops::function::FnOnce::call_once::hacd3539006d22092
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   44:     0x59a3dc0f328b - core::ops::function::FnOnce::call_once::hddb3cd395c36bfbb
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   45:     0x59a3dc0f328b - test::__rust_begin_short_backtrace::h0b6a7601d9750bfa
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:663:18
[INFO] [stdout]   46:     0x59a3dc106c9a - test::run_test_in_process::{{closure}}::h444209903f00b347
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:686:74
[INFO] [stdout]   47:     0x59a3dc106c9a - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::hfb3ba8f46e537649
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   48:     0x59a3dc106c9a - std::panicking::catch_unwind::do_call::h1672a45911fcf9dc
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:581:40
[INFO] [stdout]   49:     0x59a3dc106c9a - std::panicking::catch_unwind::h0fadaee22787a6dd
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:544:19
[INFO] [stdout]   50:     0x59a3dc106c9a - std::panic::catch_unwind::hc47ad190f2c8e188
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panic.rs:359:14
[INFO] [stdout]   51:     0x59a3dc106c9a - test::run_test_in_process::hcd7faaf934f29999
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:686:27
[INFO] [stdout]   52:     0x59a3dc106c9a - test::run_test::{{closure}}::hddc4550da4871867
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:607:43
[INFO] [stdout]   53:     0x59a3dc0e10f4 - test::run_test::{{closure}}::h98ae26689f13ed94
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:637:41
[INFO] [stdout]   54:     0x59a3dc0e10f4 - std::sys::backtrace::__rust_begin_short_backtrace::h3ec4d1f21ad44588
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   55:     0x59a3dc0e4a92 - std::thread::lifecycle::spawn_unchecked::{{closure}}::{{closure}}::hd8bf2c73d479939f
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   56:     0x59a3dc0e4a92 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h3b4248f358af2491
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   57:     0x59a3dc0e4a92 - std::panicking::catch_unwind::do_call::hda10a64f4b8daebe
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:581:40
[INFO] [stdout]   58:     0x59a3dc0e4a92 - std::panicking::catch_unwind::h659e5ee8336ec8c7
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:544:19
[INFO] [stdout]   59:     0x59a3dc0e4a92 - std::panic::catch_unwind::h9d4d66a538912c18
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panic.rs:359:14
[INFO] [stdout]   60:     0x59a3dc0e4a92 - std::thread::lifecycle::spawn_unchecked::{{closure}}::h7557906bb51d79f1
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   61:     0x59a3dc0e4a92 - core::ops::function::FnOnce::call_once{{vtable.shim}}::h9e460d1d7fc83d35
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   62:     0x59a3dd61142f - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h61282da819d64ea9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   63:     0x59a3dd61142f - std::sys::thread::unix::Thread::new::thread_start::h982f9ea829d1b5fb
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/thread/unix.rs:127:17
[INFO] [stdout]   64:     0x7abd36fa9aa4 - <unknown>
[INFO] [stdout]   65:     0x7abd37036a64 - clone
[INFO] [stdout]   66:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     app::appcontext::test::test_global_event_system
[INFO] [stdout]     app::appcontext::test::test_panic_capture
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 1 passed; 2 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.02s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `-p looklapi --bin looklapi`
[INFO] running `Command { std: "docker" "inspect" "1342864771a7689f33ce8458e684d2b5b1f7dd31a2c5437c5ae210987578066a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1342864771a7689f33ce8458e684d2b5b1f7dd31a2c5437c5ae210987578066a", kill_on_drop: false }`
[INFO] [stdout] 1342864771a7689f33ce8458e684d2b5b1f7dd31a2c5437c5ae210987578066a
