[INFO] cloning repository https://github.com/naufalandya/experiment-cli-backend
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/naufalandya/experiment-cli-backend" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnaufalandya%2Fexperiment-cli-backend", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnaufalandya%2Fexperiment-cli-backend'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] be25d444fb84050593f0b809b50dcde71e072422
[INFO] checking naufalandya/experiment-cli-backend against try#84addd32a13fa2d3f62fe5d99031611147b7fb13 for pr-147565-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnaufalandya%2Fexperiment-cli-backend" "/workspace/builds/worker-1-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/naufalandya/experiment-cli-backend
[INFO] finished tweaking git repo https://github.com/naufalandya/experiment-cli-backend
[INFO] tweaked toml for git repo https://github.com/naufalandya/experiment-cli-backend written to /workspace/builds/worker-1-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/naufalandya/experiment-cli-backend on toolchain 84addd32a13fa2d3f62fe5d99031611147b7fb13
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+84addd32a13fa2d3f62fe5d99031611147b7fb13" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/naufalandya/experiment-cli-backend 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" "+84addd32a13fa2d3f62fe5d99031611147b7fb13" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: unused manifest key: source
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+84addd32a13fa2d3f62fe5d99031611147b7fb13" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 825970c20ecb2abede1687fa7e7457395b473c411b3368b96047768d00cf4c0b
[INFO] running `Command { std: "docker" "start" "-a" "825970c20ecb2abede1687fa7e7457395b473c411b3368b96047768d00cf4c0b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "825970c20ecb2abede1687fa7e7457395b473c411b3368b96047768d00cf4c0b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "825970c20ecb2abede1687fa7e7457395b473c411b3368b96047768d00cf4c0b", kill_on_drop: false }`
[INFO] [stdout] 825970c20ecb2abede1687fa7e7457395b473c411b3368b96047768d00cf4c0b
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+84addd32a13fa2d3f62fe5d99031611147b7fb13" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] ba896d847a9b64f25f7b5eafebb88b06d880c343e6b31e1243e223543b30076a
[INFO] running `Command { std: "docker" "start" "-a" "ba896d847a9b64f25f7b5eafebb88b06d880c343e6b31e1243e223543b30076a", kill_on_drop: false }`
[INFO] [stderr] warning: unused manifest key: source
[INFO] [stderr]    Compiling proc-macro2 v1.0.101
[INFO] [stderr]    Compiling libc v0.2.175
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]     Checking cfg-if v1.0.3
[INFO] [stderr]     Checking log v0.4.28
[INFO] [stderr]    Compiling find-msvc-tools v0.1.1
[INFO] [stderr]     Checking slab v0.4.11
[INFO] [stderr]    Compiling zerocopy v0.8.27
[INFO] [stderr]     Checking tracing-core v0.1.34
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]     Checking percent-encoding v2.3.2
[INFO] [stderr]    Compiling quote v1.0.40
[INFO] [stderr]     Checking foldhash v0.1.5
[INFO] [stderr]     Checking hashbrown v0.15.5
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]    Compiling syn v2.0.106
[INFO] [stderr]     Checking mio v1.0.4
[INFO] [stderr]     Checking socket2 v0.6.0
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]     Checking signal-hook-registry v1.4.6
[INFO] [stderr]    Compiling cc v1.2.36
[INFO] [stderr]     Checking getrandom v0.2.16
[INFO] [stderr]     Checking bitflags v2.9.4
[INFO] [stderr]     Checking indexmap v2.11.1
[INFO] [stderr]    Compiling bytes v1.10.1
[INFO] [stderr]    Compiling anyhow v1.0.100
[INFO] [stderr]    Compiling serde_json v1.0.143
[INFO] [stderr]    Compiling thiserror v2.0.16
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling once_cell v1.21.3
[INFO] [stderr]    Compiling time-core v0.1.6
[INFO] [stderr]    Compiling stable_deref_trait v1.2.0
[INFO] [stderr]     Checking deranged v0.5.3
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]    Compiling time-macros v0.2.24
[INFO] [stderr]    Compiling getrandom v0.3.3
[INFO] [stderr]     Checking form_urlencoded v1.2.2
[INFO] [stderr]    Compiling rustls v0.23.31
[INFO] [stderr]    Compiling pin-project-lite v0.2.16
[INFO] [stderr]     Checking concurrent-queue v2.5.0
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking block-padding v0.3.3
[INFO] [stderr]    Compiling allocator-api2 v0.2.21
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking inout v0.1.4
[INFO] [stderr]     Checking socket2 v0.5.10
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling typenum v1.18.0
[INFO] [stderr]    Compiling rustversion v1.0.22
[INFO] [stderr]     Checking cipher v0.4.4
[INFO] [stderr]     Checking rand_core v0.9.3
[INFO] [stderr]     Checking hmac v0.12.1
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling writeable v0.6.1
[INFO] [stderr]    Compiling litemap v0.8.0
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking pem-rfc7468 v0.7.0
[INFO] [stderr]     Checking event-listener v5.4.1
[INFO] [stderr]     Checking time v0.3.43
[INFO] [stderr]    Compiling openssl-src v300.5.3+3.5.4
[INFO] [stderr]     Checking http-body v0.4.6
[INFO] [stderr]     Checking sha2 v0.10.9
[INFO] [stderr]     Checking aho-corasick v1.1.3
[INFO] [stderr]     Checking const-oid v0.9.6
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]    Compiling subtle v2.6.1
[INFO] [stderr]     Checking regex-syntax v0.8.6
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]     Checking flagset v0.4.7
[INFO] [stderr]     Checking adler2 v2.0.1
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]    Compiling openssl-sys v0.9.109
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling crypto-common v0.1.6
[INFO] [stderr]     Checking rand v0.9.2
[INFO] [stderr]    Compiling zstd-sys v2.0.16+zstd.1.5.7
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]    Compiling bigdecimal v0.4.8
[INFO] [stderr]    Compiling zeroize v1.8.1
[INFO] [stderr]    Compiling rustls-pki-types v1.12.0
[INFO] [stderr]    Compiling icu_normalizer_data v2.0.0
[INFO] [stderr]    Compiling icu_properties_data v2.0.1
[INFO] [stderr]    Compiling indexmap v1.9.3
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.0
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling zerovec-derive v0.11.1
[INFO] [stderr]    Compiling tracing-attributes v0.1.30
[INFO] [stderr]    Compiling tokio-macros v2.5.0
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]     Checking yoke v0.8.0
[INFO] [stderr]     Checking zerovec v0.11.4
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]     Checking zerotrie v0.2.2
[INFO] [stderr]     Checking tinystr v0.8.1
[INFO] [stderr]     Checking potential_utf v0.1.3
[INFO] [stderr]     Checking icu_locale_core v2.0.0
[INFO] [stderr]    Compiling thiserror-impl v2.0.16
[INFO] [stderr]     Checking icu_provider v2.0.0
[INFO] [stderr]     Checking icu_collections v2.0.0
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]     Checking icu_properties v2.0.1
[INFO] [stderr]     Checking parking_lot_core v0.9.11
[INFO] [stderr]     Checking icu_normalizer v2.0.0
[INFO] [stderr]     Checking parking_lot v0.12.4
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]     Checking tokio v1.47.1
[INFO] [stderr]    Compiling itertools v0.12.1
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking url v2.5.7
[INFO] [stderr]    Compiling der_derive v0.7.3
[INFO] [stderr]     Checking regex-automata v0.4.10
[INFO] [stderr]    Compiling prost-derive v0.12.6
[INFO] [stderr]    Compiling asn1-rs-impl v0.2.0
[INFO] [stderr]     Checking der v0.7.10
[INFO] [stderr]     Checking rustls-webpki v0.103.4
[INFO] [stderr]    Compiling asn1-rs-derive v0.6.0
[INFO] [stderr]    Compiling rustix v1.1.1
[INFO] [stderr]    Compiling futures-core v0.3.31
[INFO] [stderr]    Compiling home v0.5.11
[INFO] [stderr]     Checking asn1-rs v0.7.1
[INFO] [stderr]     Checking spki v0.7.3
[INFO] [stderr]     Checking regex v1.11.2
[INFO] [stderr]     Checking tokio-util v0.7.16
[INFO] [stderr]     Checking tokio-stream v0.1.17
[INFO] [stderr]     Checking h2 v0.3.27
[INFO] [stderr]    Compiling pin-project-internal v1.1.10
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]     Checking flate2 v1.1.2
[INFO] [stderr]    Compiling axum-core v0.3.4
[INFO] [stderr]     Checking crossbeam-epoch v0.9.18
[INFO] [stderr]    Compiling zstd-safe v7.2.4
[INFO] [stderr]     Checking alloc-no-stdlib v2.0.4
[INFO] [stderr]     Checking linux-raw-sys v0.11.0
[INFO] [stderr]     Checking local-waker v0.1.4
[INFO] [stderr]    Compiling rayon-core v1.13.0
[INFO] [stderr]    Compiling oid-registry v0.8.1
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]    Compiling lock_api v0.4.13
[INFO] [stderr]     Checking pin-project v1.1.10
[INFO] [stderr]     Checking alloc-stdlib v0.2.2
[INFO] [stderr]     Checking crossbeam-deque v0.8.6
[INFO] [stderr]     Checking x509-cert v0.2.5
[INFO] [stderr]    Compiling itertools v0.10.5
[INFO] [stderr]    Compiling actix-macros v0.2.4
[INFO] [stderr]    Compiling num-integer v0.1.46
[INFO] [stderr]     Checking event-listener-strategy v0.5.4
[INFO] [stderr]    Compiling axum v0.6.20
[INFO] [stderr]     Checking pbkdf2 v0.12.2
[INFO] [stderr]     Checking salsa20 v0.10.2
[INFO] [stderr]     Checking hyper v0.14.32
[INFO] [stderr]    Compiling futures-sink v0.3.31
[INFO] [stderr]    Compiling openssl v0.10.73
[INFO] [stderr]    Compiling unicode-xid v0.2.6
[INFO] [stderr]    Compiling memchr v2.7.5
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]    Compiling utf8_iter v1.0.4
[INFO] [stderr]    Compiling tinyvec v1.10.0
[INFO] [stderr]    Compiling derive_more-impl v2.0.1
[INFO] [stderr]    Compiling prost-derive v0.11.9
[INFO] [stderr]     Checking scrypt v0.11.0
[INFO] [stderr]     Checking cms v0.2.3
[INFO] [stderr]    Compiling num-bigint v0.4.6
[INFO] [stderr]     Checking actix-rt v2.11.0
[INFO] [stderr]     Checking tower v0.4.13
[INFO] [stderr]     Checking brotli-decompressor v5.0.0
[INFO] [stderr]     Checking actix-utils v3.0.1
[INFO] [stderr]     Checking der-parser v10.0.0
[INFO] [stderr]     Checking tokio-io-timeout v1.2.1
[INFO] [stderr]     Checking prost v0.12.6
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling async-stream-impl v0.3.6
[INFO] [stderr]    Compiling webpki-roots v1.0.2
[INFO] [stderr]     Checking futures-lite v2.6.1
[INFO] [stderr]    Compiling libm v0.2.15
[INFO] [stderr]     Checking aes v0.8.4
[INFO] [stderr]     Checking cbc v0.1.2
[INFO] [stderr]    Compiling bytestring v1.4.0
[INFO] [stderr]    Compiling cookie v0.16.2
[INFO] [stderr]     Checking actix-service v2.0.3
[INFO] [stderr]    Compiling cpufeatures v0.2.17
[INFO] [stderr]    Compiling ryu v1.0.20
[INFO] [stderr]    Compiling fixedbitset v0.4.2
[INFO] [stderr]    Compiling io-lifetimes v1.0.11
[INFO] [stderr]    Compiling futures-task v0.3.31
[INFO] [stderr]    Compiling regex-lite v0.1.7
[INFO] [stderr]    Compiling itoa v1.0.15
[INFO] [stderr]    Compiling futures-io v0.3.31
[INFO] [stderr]    Compiling prettyplease v0.1.25
[INFO] [stderr]    Compiling iana-time-zone v0.1.63
[INFO] [stderr]    Compiling fastrand v2.3.0
[INFO] [stderr]    Compiling linux-raw-sys v0.4.15
[INFO] [stderr]    Compiling parking v2.2.1
[INFO] [stderr]    Compiling tempfile v3.21.0
[INFO] [stderr]    Compiling chrono v0.4.42
[INFO] [stderr]    Compiling actix-router v0.5.3
[INFO] [stderr]    Compiling crc v3.3.0
[INFO] [stderr]    Compiling petgraph v0.6.5
[INFO] [stderr]     Checking x509-parser v0.17.0
[INFO] [stderr]     Checking async-stream v0.3.6
[INFO] [stderr]     Checking pkcs5 v0.7.1
[INFO] [stderr]     Checking rustls-native-certs v0.7.3
[INFO] [stderr]    Compiling webpki-roots v0.26.11
[INFO] [stderr]     Checking brotli v8.0.2
[INFO] [stderr]     Checking hyper-timeout v0.4.1
[INFO] [stderr]     Checking derive_more v2.0.1
[INFO] [stderr]    Compiling futures-intrusive v0.5.0
[INFO] [stderr]     Checking pkcs12 v0.1.0
[INFO] [stderr]    Compiling prost v0.11.9
[INFO] [stderr]     Checking zstd v0.13.3
[INFO] [stderr]    Compiling unicode-normalization v0.1.24
[INFO] [stderr]     Checking local-channel v0.1.5
[INFO] [stderr]    Compiling crossbeam-queue v0.3.12
[INFO] [stderr]     Checking actix-codec v0.5.2
[INFO] [stderr]     Checking h2 v0.4.12
[INFO] [stderr]     Checking des v0.8.1
[INFO] [stderr]     Checking rc2 v0.8.1
[INFO] [stderr]    Compiling hashlink v0.10.0
[INFO] [stderr]     Checking encoding_rs v0.8.35
[INFO] [stderr]    Compiling polling v2.8.0
[INFO] [stderr]    Compiling rustix v0.37.28
[INFO] [stderr]    Compiling base64 v0.22.1
[INFO] [stderr]    Compiling strsim v0.11.1
[INFO] [stderr]     Checking cookie-factory v0.3.3
[INFO] [stderr]    Compiling prettyplease v0.2.37
[INFO] [stderr]    Compiling unicode-bidi v0.3.18
[INFO] [stderr]    Compiling unicode-properties v0.1.3
[INFO] [stderr]    Compiling stringprep v0.1.5
[INFO] [stderr]    Compiling darling_core v0.20.11
[INFO] [stderr]     Checking amq-protocol-types v7.2.3
[INFO] [stderr]     Checking actix-http v3.11.1
[INFO] [stderr]     Checking tonic v0.11.0
[INFO] [stderr]     Checking p12-keystore v0.1.5
[INFO] [stderr]    Compiling sqlx-core v0.8.6
[INFO] [stderr]    Compiling hkdf v0.12.4
[INFO] [stderr]    Compiling prost-types v0.11.9
[INFO] [stderr]     Checking hyper v1.7.0
[INFO] [stderr]     Checking rustls-connector v0.20.2
[INFO] [stderr]    Compiling which v4.4.2
[INFO] [stderr]    Compiling actix-web-codegen v4.3.0
[INFO] [stderr]     Checking actix-server v2.6.0
[INFO] [stderr]     Checking rayon v1.11.0
[INFO] [stderr]     Checking polling v3.10.0
[INFO] [stderr]    Compiling futures-channel v0.3.31
[INFO] [stderr]     Checking async-channel v2.5.0
[INFO] [stderr]     Checking async-lock v3.4.1
[INFO] [stderr]     Checking opentelemetry v0.23.0
[INFO] [stderr]    Compiling md-5 v0.10.6
[INFO] [stderr]    Compiling atoi v2.0.0
[INFO] [stderr]     Checking ordered-float v4.6.0
[INFO] [stderr]    Compiling async-io v1.13.0
[INFO] [stderr]     Checking byteorder v1.5.0
[INFO] [stderr]    Compiling multimap v0.8.3
[INFO] [stderr]     Checking glob v0.3.3
[INFO] [stderr]    Compiling lazy_static v1.5.0
[INFO] [stderr]     Checking fastrand v1.9.0
[INFO] [stderr]     Checking waker-fn v1.2.0
[INFO] [stderr]     Checking impl-more v0.1.9
[INFO] [stderr]    Compiling whoami v1.6.1
[INFO] [stderr]    Compiling doc-comment v0.3.3
[INFO] [stderr]     Checking linux-raw-sys v0.3.8
[INFO] [stderr]    Compiling protobuf v2.28.0
[INFO] [stderr]     Checking futures-lite v1.13.0
[INFO] [stderr]    Compiling sqlx-postgres v0.8.6
[INFO] [stderr]     Checking actix-web v4.11.0
[INFO] [stderr]    Compiling prost-build v0.11.9
[INFO] [stderr]     Checking opentelemetry_sdk v0.23.0
[INFO] [stderr]     Checking async-lock v2.8.0
[INFO] [stderr]     Checking hyper-util v0.1.16
[INFO] [stderr]     Checking async-io v2.5.0
[INFO] [stderr]     Checking tower v0.5.2
[INFO] [stderr]     Checking blocking v1.6.2
[INFO] [stderr]    Compiling prost-types v0.12.6
[INFO] [stderr]    Compiling darling_macro v0.20.11
[INFO] [stderr]     Checking tcp-stream v0.28.0
[INFO] [stderr]     Checking amq-protocol-uri v7.2.3
[INFO] [stderr]     Checking async-executor v1.13.3
[INFO] [stderr]     Checking socket2 v0.4.10
[INFO] [stderr]     Checking anstyle-query v1.1.4
[INFO] [stderr]    Compiling amq-protocol v7.2.3
[INFO] [stderr]     Checking http-range-header v0.3.1
[INFO] [stderr]     Checking weezl v0.1.10
[INFO] [stderr]    Compiling prometheus v0.13.4
[INFO] [stderr]    Compiling multimap v0.10.1
[INFO] [stderr]     Checking tower-http v0.6.6
[INFO] [stderr]     Checking anstream v0.6.20
[INFO] [stderr]    Compiling prost-build v0.12.6
[INFO] [stderr]    Compiling derive_more v0.99.20
[INFO] [stderr]     Checking async-global-executor v3.1.0
[INFO] [stderr]     Checking amq-protocol-tcp v7.2.3
[INFO] [stderr]    Compiling darling v0.20.11
[INFO] [stderr]    Compiling tonic-build v0.8.4
[INFO] [stderr]     Checking jpeg-decoder v0.3.2
[INFO] [stderr]     Checking env_filter v0.1.3
[INFO] [stderr]    Compiling sqlx-macros-core v0.8.6
[INFO] [stderr]     Checking reactor-trait v1.1.0
[INFO] [stderr]     Checking executor-trait v2.1.2
[INFO] [stderr]     Checking zune-inflate v0.2.54
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking half v2.6.0
[INFO] [stderr]     Checking thread_local v1.1.9
[INFO] [stderr]     Checking nu-ansi-term v0.50.1
[INFO] [stderr]    Compiling lapin v2.5.4
[INFO] [stderr]     Checking bit_field v0.10.3
[INFO] [stderr]     Checking xml-rs v0.8.27
[INFO] [stderr]     Checking color_quant v1.1.0
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]     Checking bytemuck v1.23.2
[INFO] [stderr]     Checking lebe v0.5.3
[INFO] [stderr]    Compiling rust_decimal v1.37.2
[INFO] [stderr]    Compiling parse-size v1.1.0
[INFO] [stderr]     Checking jiff v0.2.15
[INFO] [stderr]     Checking exr v1.73.0
[INFO] [stderr]    Compiling actix-multipart-derive v0.6.1
[INFO] [stderr]     Checking dashmap v6.1.0
[INFO] [stderr]     Checking xmltree v0.11.0
[INFO] [stderr]     Checking qoi v0.4.1
[INFO] [stderr]     Checking gif v0.13.3
[INFO] [stderr]     Checking tracing-subscriber v0.3.20
[INFO] [stderr]     Checking png v0.17.16
[INFO] [stderr]     Checking async-global-executor-trait v2.2.0
[INFO] [stderr]    Compiling sqlx-macros v0.8.6
[INFO] [stderr]     Checking async-reactor-trait v1.1.0
[INFO] [stderr]    Compiling addons-new-general-service v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Checking pinky-swear v6.2.1
[INFO] [stderr]     Checking tiff v0.9.1
[INFO] [stderr]     Checking tower-http v0.4.4
[INFO] [stderr]     Checking opentelemetry-proto v0.6.0
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking combine v4.6.7
[INFO] [stderr]     Checking simple_asn1 v0.6.3
[INFO] [stderr]    Compiling derivative v2.2.0
[INFO] [stderr]     Checking env_logger v0.11.8
[INFO] [stderr]     Checking serde_plain v1.0.2
[INFO] [stderr]    Compiling async-recursion v1.1.1
[INFO] [stderr]     Checking password-hash v0.5.0
[INFO] [stderr]     Checking pem v3.0.6
[INFO] [stderr]     Checking blake2 v0.10.6
[INFO] [stderr]     Checking is-terminal v0.4.16
[INFO] [stderr]     Checking termcolor v1.4.1
[INFO] [stderr]     Checking humantime v2.2.0
[INFO] [stderr]     Checking sha1_smol v1.0.1
[INFO] [stderr]     Checking sqlx v0.8.6
[INFO] [stderr]     Checking argon2 v0.5.3
[INFO] [stderr]     Checking env_logger v0.10.2
[INFO] [stderr]     Checking jsonwebtoken v9.3.1
[INFO] [stderr]     Checking actix-multipart v0.6.2
[INFO] [stderr]     Checking opentelemetry-otlp v0.16.0
[INFO] [stderr]     Checking image v0.24.9
[INFO] [stderr]     Checking tonic-web v0.11.0
[INFO] [stderr] warning: addons-new-general-service@0.1.0: server_protos: ["./proto/server/api.proto", "./proto/server/common.proto", "./proto/server/response.proto", "./proto/server/request.proto"]
[INFO] [stderr] warning: addons-new-general-service@0.1.0: client_protos: ["./proto/client/auth/api.proto", "./proto/client/role/api.proto"]
[INFO] [stderr]     Checking tracing-opentelemetry v0.24.0
[INFO] [stderr]     Checking actix-cors v0.6.5
[INFO] [stderr]     Checking actix-web-prom v0.6.0
[INFO] [stderr]     Checking tower-http v0.2.5
[INFO] [stderr]     Checking sysinfo v0.30.13
[INFO] [stderr]     Checking tonic-health v0.11.0
[INFO] [stderr]     Checking uuid v1.18.1
[INFO] [stderr]     Checking redis v0.32.5
[INFO] [stderr]    Compiling native-tls v0.2.14
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking hyper-tls v0.6.0
[INFO] [stderr]     Checking reqwest v0.12.23
[INFO] [stderr]     Checking minio v0.3.0
[INFO] [stdout] warning: unused import: `post`
[INFO] [stdout]  --> src/controllers/hello_controllers.rs:1:22
[INFO] [stdout]   |
[INFO] [stdout] 1 | use actix_web::{get, post, web::{self}, HttpResponse, Responder};
[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: `post`
[INFO] [stdout]  --> src/controllers/hello_controllers.rs:1:22
[INFO] [stdout]   |
[INFO] [stdout] 1 | use actix_web::{get, post, web::{self}, HttpResponse, Responder};
[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: `body`
[INFO] [stdout]  --> src/controllers/auth/auth_controllers.rs:1:17
[INFO] [stdout]   |
[INFO] [stdout] 1 | use actix_web::{body, get, post, web::{self}, HttpRequest, HttpResponse, HttpMessage, Responder};
[INFO] [stdout]   |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `body`
[INFO] [stdout]  --> src/controllers/auth/auth_controllers.rs:1:17
[INFO] [stdout]   |
[INFO] [stdout] 1 | use actix_web::{body, get, post, web::{self}, HttpRequest, HttpResponse, HttpMessage, Responder};
[INFO] [stdout]   |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `body` and `get`
[INFO] [stdout]  --> src/controllers/menu/menu_controllers.rs:1:17
[INFO] [stdout]   |
[INFO] [stdout] 1 | use actix_web::{body, get, post, web::{self}, HttpResponse, Responder};
[INFO] [stdout]   |                 ^^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `body` and `get`
[INFO] [stdout]  --> src/controllers/menu/menu_controllers.rs:1:17
[INFO] [stdout]   |
[INFO] [stdout] 1 | use actix_web::{body, get, post, web::{self}, HttpResponse, Responder};
[INFO] [stdout]   |                 ^^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Argon2`, `PasswordHasher`, `PasswordVerifier`, and `SaltString`
[INFO] [stdout]  --> src/controllers/menu/menu_controllers.rs:3:14
[INFO] [stdout]   |
[INFO] [stdout] 3 | use argon2::{PasswordVerifier, Argon2, password_hash::{SaltString, PasswordHasher}};
[INFO] [stdout]   |              ^^^^^^^^^^^^^^^^  ^^^^^^                  ^^^^^^^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Argon2`, `PasswordHasher`, `PasswordVerifier`, and `SaltString`
[INFO] [stdout]  --> src/controllers/menu/menu_controllers.rs:3:14
[INFO] [stdout]   |
[INFO] [stdout] 3 | use argon2::{PasswordVerifier, Argon2, password_hash::{SaltString, PasswordHasher}};
[INFO] [stdout]   |              ^^^^^^^^^^^^^^^^  ^^^^^^                  ^^^^^^^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::rngs::OsRng`
[INFO] [stdout]  --> src/controllers/menu/menu_controllers.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use rand::rngs::OsRng;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::rngs::OsRng`
[INFO] [stdout]  --> src/controllers/menu/menu_controllers.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use rand::rngs::OsRng;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Algorithm`, `EncodingKey`, and `Header`
[INFO] [stdout]  --> src/controllers/menu/menu_controllers.rs:5:20
[INFO] [stdout]   |
[INFO] [stdout] 5 | use jsonwebtoken::{EncodingKey, Header, Algorithm};
[INFO] [stdout]   |                    ^^^^^^^^^^^  ^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `Utc`
[INFO] [stdout]  --> src/controllers/menu/menu_controllers.rs:6:14
[INFO] [stdout]   |
[INFO] [stdout] 6 | use chrono::{Utc, Duration};
[INFO] [stdout]   |              ^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Algorithm`, `EncodingKey`, and `Header`
[INFO] [stdout]  --> src/controllers/menu/menu_controllers.rs:5:20
[INFO] [stdout]   |
[INFO] [stdout] 5 | use jsonwebtoken::{EncodingKey, Header, Algorithm};
[INFO] [stdout]   |                    ^^^^^^^^^^^  ^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `Utc`
[INFO] [stdout]  --> src/controllers/menu/menu_controllers.rs:6:14
[INFO] [stdout]   |
[INFO] [stdout] 6 | use chrono::{Utc, Duration};
[INFO] [stdout]   |              ^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AuthRequest`, `Claims`, and `auth::AuthProvider`
[INFO] [stdout]   --> src/controllers/menu/menu_controllers.rs:13:17
[INFO] [stdout]    |
[INFO] [stdout] 13 |                 AuthRequest,
[INFO] [stdout]    |                 ^^^^^^^^^^^
[INFO] [stdout] 14 |                 Claims
[INFO] [stdout]    |                 ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |         provider::{auth::AuthProvider, menu::MenuProvider}, 
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AuthRequest`, `Claims`, and `auth::AuthProvider`
[INFO] [stdout]   --> src/controllers/menu/menu_controllers.rs:13:17
[INFO] [stdout]    |
[INFO] [stdout] 13 |                 AuthRequest,
[INFO] [stdout]    |                 ^^^^^^^^^^^
[INFO] [stdout] 14 |                 Claims
[INFO] [stdout]    |                 ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |         provider::{auth::AuthProvider, menu::MenuProvider}, 
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Deserialize`
[INFO] [stdout]  --> src/model/common.rs:1:13
[INFO] [stdout]   |
[INFO] [stdout] 1 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Deserialize`
[INFO] [stdout]  --> src/model/common.rs:1:13
[INFO] [stdout]   |
[INFO] [stdout] 1 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sqlx::FromRow`
[INFO] [stdout]  --> src/model/auth.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use sqlx::FromRow;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sqlx::FromRow`
[INFO] [stdout]  --> src/model/auth.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use sqlx::FromRow;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> src/model/auth.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> src/model/auth.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/model/implementation.rs:4:11
[INFO] [stdout]   |
[INFO] [stdout] 4 |     web::{self, Json},
[INFO] [stdout]   |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/model/implementation.rs:4:11
[INFO] [stdout]   |
[INFO] [stdout] 4 |     web::{self, Json},
[INFO] [stdout]   |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `once_cell::sync::Lazy`
[INFO] [stdout]  --> src/validation/schema/menu.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use once_cell::sync::Lazy;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `once_cell::sync::Lazy`
[INFO] [stdout]  --> src/validation/schema/menu.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use once_cell::sync::Lazy;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Timestamp`
[INFO] [stdout]  --> src/utils/common.rs:4:18
[INFO] [stdout]   |
[INFO] [stdout] 4 | use uuid::{Uuid, Timestamp};
[INFO] [stdout]   |                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Timestamp`
[INFO] [stdout]  --> src/utils/common.rs:4:18
[INFO] [stdout]   |
[INFO] [stdout] 4 | use uuid::{Uuid, Timestamp};
[INFO] [stdout]   |                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Serialize`
[INFO] [stdout]  --> src/utils/structs.rs:1:26
[INFO] [stdout]   |
[INFO] [stdout] 1 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `common::ApiResponse`
[INFO] [stdout]  --> src/provider/squad.rs:2:35
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::model::{squads::Squad, common::ApiResponse};
[INFO] [stdout]   |                                   ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Serialize`
[INFO] [stdout]  --> src/utils/structs.rs:1:26
[INFO] [stdout]   |
[INFO] [stdout] 1 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `common::ApiResponse`
[INFO] [stdout]  --> src/provider/squad.rs:2:35
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::model::{squads::Squad, common::ApiResponse};
[INFO] [stdout]   |                                   ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HttpResponse`, `Responder`, `get`, and `web`
[INFO] [stdout]  --> src/provider/squad.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 | use actix_web::{get, web, HttpResponse, Responder};
[INFO] [stdout]   |                 ^^^  ^^^  ^^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Level`, `info`, and `span`
[INFO] [stdout]  --> src/provider/squad.rs:5:15
[INFO] [stdout]   |
[INFO] [stdout] 5 | use tracing::{info, span, Level};
[INFO] [stdout]   |               ^^^^  ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HttpResponse`, `Responder`, `get`, and `web`
[INFO] [stdout]  --> src/provider/squad.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 | use actix_web::{get, web, HttpResponse, Responder};
[INFO] [stdout]   |                 ^^^  ^^^  ^^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Level`, `info`, and `span`
[INFO] [stdout]  --> src/provider/squad.rs:5:15
[INFO] [stdout]   |
[INFO] [stdout] 5 | use tracing::{info, span, Level};
[INFO] [stdout]   |               ^^^^  ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `LocalBoxFuture`
[INFO] [stdout]   --> src/main.rs:18:42
[INFO] [stdout]    |
[INFO] [stdout] 18 | use futures_util::future::{TryFutureExt, LocalBoxFuture};
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `redis::init_redis`
[INFO] [stdout]   --> src/main.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 |     redis::init_redis,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::Mutex`
[INFO] [stdout]   --> src/main.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | use tokio::sync::Mutex;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `actix_web::dev::ServiceResponse`
[INFO] [stdout]   --> src/main.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | use actix_web::dev::ServiceResponse;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `LocalBoxFuture`
[INFO] [stdout]   --> src/main.rs:18:42
[INFO] [stdout]    |
[INFO] [stdout] 18 | use futures_util::future::{TryFutureExt, LocalBoxFuture};
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `redis::init_redis`
[INFO] [stdout]   --> src/main.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 |     redis::init_redis,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::Mutex`
[INFO] [stdout]   --> src/main.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | use tokio::sync::Mutex;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `actix_web::dev::ServiceResponse`
[INFO] [stdout]   --> src/main.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | use actix_web::dev::ServiceResponse;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::encode`: Use Engine::encode
[INFO] [stdout]  --> src/utils/common.rs:8:14
[INFO] [stdout]   |
[INFO] [stdout] 8 | use base64::{encode as b64_encode, decode as b64_decode};
[INFO] [stdout]   |              ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::decode`: Use Engine::decode
[INFO] [stdout]  --> src/utils/common.rs:8:36
[INFO] [stdout]   |
[INFO] [stdout] 8 | use base64::{encode as b64_encode, decode as b64_decode};
[INFO] [stdout]   |                                    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::encode`: Use Engine::encode
[INFO] [stdout]   --> src/utils/common.rs:65:5
[INFO] [stdout]    |
[INFO] [stdout] 65 |     b64_encode(input)
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::decode`: Use Engine::decode
[INFO] [stdout]   --> src/utils/common.rs:70:5
[INFO] [stdout]    |
[INFO] [stdout] 70 |     b64_decode(input)
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::encode`: Use Engine::encode
[INFO] [stdout]    --> src/utils/common.rs:314:13
[INFO] [stdout]     |
[INFO] [stdout] 314 |     base64::encode(mac.finalize().into_bytes())
[INFO] [stdout]     |             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::encode`: Use Engine::encode
[INFO] [stdout]  --> src/utils/common.rs:8:14
[INFO] [stdout]   |
[INFO] [stdout] 8 | use base64::{encode as b64_encode, decode as b64_decode};
[INFO] [stdout]   |              ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::decode`: Use Engine::decode
[INFO] [stdout]  --> src/utils/common.rs:8:36
[INFO] [stdout]   |
[INFO] [stdout] 8 | use base64::{encode as b64_encode, decode as b64_decode};
[INFO] [stdout]   |                                    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::encode`: Use Engine::encode
[INFO] [stdout]   --> src/utils/common.rs:65:5
[INFO] [stdout]    |
[INFO] [stdout] 65 |     b64_encode(input)
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::decode`: Use Engine::decode
[INFO] [stdout]   --> src/utils/common.rs:70:5
[INFO] [stdout]    |
[INFO] [stdout] 70 |     b64_decode(input)
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::encode`: Use Engine::encode
[INFO] [stdout]    --> src/utils/common.rs:314:13
[INFO] [stdout]     |
[INFO] [stdout] 314 |     base64::encode(mac.finalize().into_bytes())
[INFO] [stdout]     |             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `chrono::DateTime::<Tz>::from_utc`: Use TimeZone::from_utc_datetime() or DateTime::from_naive_utc_and_offset instead
[INFO] [stdout]   --> src/utils/common.rs:43:31
[INFO] [stdout]    |
[INFO] [stdout] 43 |     let dt = DateTime::<Utc>::from_utc(NaiveDateTime::from_timestamp_opt(ts, 0).unwrap(), Utc);
[INFO] [stdout]    |                               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDateTime::from_timestamp_opt`: use `DateTime::from_timestamp` instead
[INFO] [stdout]   --> src/utils/common.rs:43:55
[INFO] [stdout]    |
[INFO] [stdout] 43 |     let dt = DateTime::<Utc>::from_utc(NaiveDateTime::from_timestamp_opt(ts, 0).unwrap(), Utc);
[INFO] [stdout]    |                                                       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `chrono::DateTime::<Tz>::from_utc`: Use TimeZone::from_utc_datetime() or DateTime::from_naive_utc_and_offset instead
[INFO] [stdout]   --> src/utils/common.rs:43:31
[INFO] [stdout]    |
[INFO] [stdout] 43 |     let dt = DateTime::<Utc>::from_utc(NaiveDateTime::from_timestamp_opt(ts, 0).unwrap(), Utc);
[INFO] [stdout]    |                               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDateTime::from_timestamp_opt`: use `DateTime::from_timestamp` instead
[INFO] [stdout]   --> src/utils/common.rs:43:55
[INFO] [stdout]    |
[INFO] [stdout] 43 |     let dt = DateTime::<Utc>::from_utc(NaiveDateTime::from_timestamp_opt(ts, 0).unwrap(), Utc);
[INFO] [stdout]    |                                                       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/middlewares/middleware.rs:68:20
[INFO] [stdout]    |
[INFO] [stdout] 68 |     fn call(&self, mut req: ServiceRequest) -> Self::Future {
[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]   --> src/middlewares/middleware.rs:68:20
[INFO] [stdout]    |
[INFO] [stdout] 68 |     fn call(&self, mut req: ServiceRequest) -> Self::Future {
[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]   --> src/utils/common.rs:97:9
[INFO] [stdout]    |
[INFO] [stdout] 97 |     let mut chars: Vec<char> = s.chars().rev().collect();
[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]   --> src/utils/common.rs:97:9
[INFO] [stdout]    |
[INFO] [stdout] 97 |     let mut chars: Vec<char> = s.chars().rev().collect();
[INFO] [stdout]    |         ----^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `grpc_port` and `general_service` are never read
[INFO] [stdout]  --> src/config/environment.rs:4:9
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct AppConfig {
[INFO] [stdout]   |            --------- fields in this struct
[INFO] [stdout] 4 |     pub grpc_port: String,
[INFO] [stdout]   |         ^^^^^^^^^
[INFO] [stdout] 5 |     pub http_port: String,     // <── ganti ini
[INFO] [stdout] 6 |     pub general_service: String,
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connect_auth_client` is never used
[INFO] [stdout]  --> src/config/grpc.rs:5:14
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub async fn connect_auth_client(url: &str) -> Result<AuthClient<Channel>, tonic::transport::Error> {
[INFO] [stdout]   |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connect_general_client` is never used
[INFO] [stdout]  --> src/config/grpc.rs:9:14
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub async fn connect_general_client(url: &str) -> Result<UserServiceClient<Channel>, tonic::transport::Error> {
[INFO] [stdout]   |              ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init_redis` is never used
[INFO] [stdout]  --> src/config/redis.rs:5:14
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub async fn init_redis() -> MultiplexedConnection {
[INFO] [stdout]   |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]    --> src/middlewares/middleware.rs:141:25
[INFO] [stdout]     |
[INFO] [stdout] 141 | pub struct CustomHeader(pub String);
[INFO] [stdout]     |            ------------ ^^^^^^^^^^
[INFO] [stdout]     |            |
[INFO] [stdout]     |            field in this struct
[INFO] [stdout]     |
[INFO] [stdout]     = help: consider removing this field
[INFO] [stdout]     = note: `CustomHeader` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Required`, `RegexMismatch`, `Length`, and `Range` are never constructed
[INFO] [stdout]   --> src/validation/validation.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub enum ValidationError {
[INFO] [stdout]    |          --------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 15 |     Required(String),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     RegexMismatch(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     Length(String, usize, usize),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 28 |     #[error("Field '{0}' value out of range (min={1}, max={2})")]
[INFO] [stdout] 29 |     Range(String, f64, f64),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ValidationError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Number`, `Bool`, `Json`, `Date`, `Array`, and `Custom` are never constructed
[INFO] [stdout]   --> src/validation/validation.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub enum Rule {
[INFO] [stdout]    |          ---- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 45 |     Number { min: f64, max: f64, message: Option<String> },
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 46 |     Bool { message: Option<String> },
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 47 |     Regex { pattern: &'static str, message: Option<String> },
[INFO] [stdout] 48 |     Json { message: Option<String> },
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 49 |     Enum { values: Vec<&'static str>, message: Option<String> },
[INFO] [stdout] 50 |     Date { message: Option<String> },
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 51 |     Array { min: usize, max: usize, message: Option<String> },
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 52 |     Custom { func: fn(&Value) -> Result<(), String> },
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Rule` 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: field `value` is never read
[INFO] [stdout]    --> src/validation/validation.rs:240:9
[INFO] [stdout]     |
[INFO] [stdout] 237 | pub struct AttackDetection {
[INFO] [stdout]     |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 240 |     pub value: String,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `AttackDetection` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_variable` is never used
[INFO] [stdout]    --> src/validation/validation.rs:286:8
[INFO] [stdout]     |
[INFO] [stdout] 286 | pub fn validate_variable(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `secure_validate_variable` is never used
[INFO] [stdout]    --> src/validation/validation.rs:295:8
[INFO] [stdout]     |
[INFO] [stdout] 295 | pub fn secure_validate_variable(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `encode_str` is never used
[INFO] [stdout]   --> src/utils/common.rs:20:8
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub fn encode_str(input: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decode_str` is never used
[INFO] [stdout]   --> src/utils/common.rs:25:8
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub fn decode_str(input: &str) -> Result<String, String> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_uuid` is never used
[INFO] [stdout]   --> src/utils/common.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub fn generate_uuid() -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `now_timestamp` is never used
[INFO] [stdout]   --> src/utils/common.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub fn now_timestamp() -> i64 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `timestamp_to_datetime` is never used
[INFO] [stdout]   --> src/utils/common.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub fn timestamp_to_datetime(ts: i64) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_string` is never used
[INFO] [stdout]   --> src/utils/common.rs:48:8
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub fn random_string(len: usize) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hash_sha256` is never used
[INFO] [stdout]   --> src/utils/common.rs:57:8
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub fn hash_sha256(input: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `encode_base64` is never used
[INFO] [stdout]   --> src/utils/common.rs:64:8
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub fn encode_base64(input: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decode_base64` is never used
[INFO] [stdout]   --> src/utils/common.rs:69:8
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub fn decode_base64(input: &str) -> Result<String, String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `now_millis` is never used
[INFO] [stdout]   --> src/utils/common.rs:76:8
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub fn now_millis() -> u128 {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize_str` is never used
[INFO] [stdout]   --> src/utils/common.rs:85:8
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub fn normalize_str(input: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_blank` is never used
[INFO] [stdout]   --> src/utils/common.rs:90:8
[INFO] [stdout]    |
[INFO] [stdout] 90 | pub fn is_blank(input: &str) -> bool {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_number` is never used
[INFO] [stdout]   --> src/utils/common.rs:95:8
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub fn format_number(n: i64) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_json` is never used
[INFO] [stdout]    --> src/utils/common.rs:109:8
[INFO] [stdout]     |
[INFO] [stdout] 109 | pub fn parse_json(input: &str) -> Result<Value, String> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `map_to_json` is never used
[INFO] [stdout]    --> src/utils/common.rs:114:8
[INFO] [stdout]     |
[INFO] [stdout] 114 | pub fn map_to_json(map: &HashMap<String, String>) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `seconds_since` is never used
[INFO] [stdout]    --> src/utils/common.rs:119:8
[INFO] [stdout]     |
[INFO] [stdout] 119 | pub fn seconds_since(ts: i64) -> i64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `add_days` is never used
[INFO] [stdout]    --> src/utils/common.rs:124:8
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub fn add_days(days: i64) -> String {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_valid_email` is never used
[INFO] [stdout]    --> src/utils/common.rs:129:8
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub fn is_valid_email(email: &str) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `capitalize_first` is never used
[INFO] [stdout]    --> src/utils/common.rs:134:8
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub fn capitalize_first(input: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `to_slug` is never used
[INFO] [stdout]    --> src/utils/common.rs:143:8
[INFO] [stdout]     |
[INFO] [stdout] 143 | pub fn to_slug(input: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_env` is never used
[INFO] [stdout]    --> src/utils/common.rs:155:8
[INFO] [stdout]     |
[INFO] [stdout] 155 | pub fn get_env(key: &str, default: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `to_i64` is never used
[INFO] [stdout]    --> src/utils/common.rs:160:8
[INFO] [stdout]     |
[INFO] [stdout] 160 | pub fn to_i64(input: &str) -> Result<i64, String> {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `to_f64` is never used
[INFO] [stdout]    --> src/utils/common.rs:165:8
[INFO] [stdout]     |
[INFO] [stdout] 165 | pub fn to_f64(input: &str) -> Result<f64, String> {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clamp` is never used
[INFO] [stdout]    --> src/utils/common.rs:170:8
[INFO] [stdout]     |
[INFO] [stdout] 170 | pub fn clamp(value: i64, min: i64, max: i64) -> i64 {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_otp` is never used
[INFO] [stdout]    --> src/utils/common.rs:181:8
[INFO] [stdout]     |
[INFO] [stdout] 181 | pub fn generate_otp(len: usize) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `json_get` is never used
[INFO] [stdout]    --> src/utils/common.rs:187:8
[INFO] [stdout]     |
[INFO] [stdout] 187 | pub fn json_get<'a>(v: &'a Value, key: &str) -> Option<&'a Value> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `human_readable_size` is never used
[INFO] [stdout]    --> src/utils/common.rs:192:8
[INFO] [stdout]     |
[INFO] [stdout] 192 | pub fn human_readable_size(bytes: usize) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `file_exists` is never used
[INFO] [stdout]    --> src/utils/common.rs:210:8
[INFO] [stdout]     |
[INFO] [stdout] 210 | pub fn file_exists(path: &str) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_file_to_string` is never used
[INFO] [stdout]    --> src/utils/common.rs:215:8
[INFO] [stdout]     |
[INFO] [stdout] 215 | pub fn read_file_to_string(path: &str) -> Result<String, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_valid_password` is never used
[INFO] [stdout]    --> src/utils/common.rs:220:8
[INFO] [stdout]     |
[INFO] [stdout] 220 | pub fn is_valid_password(pw: &str) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `chunk_str` is never used
[INFO] [stdout]    --> src/utils/common.rs:230:8
[INFO] [stdout]     |
[INFO] [stdout] 230 | pub fn chunk_str(input: &str, size: usize) -> Vec<String> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mask_sensitive` is never used
[INFO] [stdout]    --> src/utils/common.rs:239:8
[INFO] [stdout]     |
[INFO] [stdout] 239 | pub fn mask_sensitive(input: &str, visible: usize) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `email_domain` is never used
[INFO] [stdout]    --> src/utils/common.rs:248:8
[INFO] [stdout]     |
[INFO] [stdout] 248 | pub fn email_domain(email: &str) -> Option<&str> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `merge_maps` is never used
[INFO] [stdout]    --> src/utils/common.rs:253:8
[INFO] [stdout]     |
[INFO] [stdout] 253 | pub fn merge_maps<K: Eq + std::hash::Hash, V>(
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `frequency_count` is never used
[INFO] [stdout]    --> src/utils/common.rs:264:8
[INFO] [stdout]     |
[INFO] [stdout] 264 | pub fn frequency_count<T: Eq + std::hash::Hash>(items: &[T]) -> HashMap<&T, usize> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `human_duration` is never used
[INFO] [stdout]    --> src/utils/common.rs:273:8
[INFO] [stdout]     |
[INFO] [stdout] 273 | pub fn human_duration(seconds: i64) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_expired` is never used
[INFO] [stdout]    --> src/utils/common.rs:289:8
[INFO] [stdout]     |
[INFO] [stdout] 289 | pub fn is_expired(ts: i64, ttl_secs: i64) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `constant_time_eq` is never used
[INFO] [stdout]    --> src/utils/common.rs:294:8
[INFO] [stdout]     |
[INFO] [stdout] 294 | pub fn constant_time_eq(a: &str, b: &str) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sign_token` is never used
[INFO] [stdout]    --> src/utils/common.rs:306:8
[INFO] [stdout]     |
[INFO] [stdout] 306 | pub fn sign_token(secret: &str, data: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `file_extension` is never used
[INFO] [stdout]    --> src/utils/common.rs:318:8
[INFO] [stdout]     |
[INFO] [stdout] 318 | pub fn file_extension(path: &str) -> Option<&str> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `list_files` is never used
[INFO] [stdout]    --> src/utils/common.rs:323:8
[INFO] [stdout]     |
[INFO] [stdout] 323 | pub fn list_files(path: &str) -> Result<Vec<String>, String> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_host` is never used
[INFO] [stdout]    --> src/utils/common.rs:335:8
[INFO] [stdout]     |
[INFO] [stdout] 335 | pub fn extract_host(url: &str) -> Option<String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_query` is never used
[INFO] [stdout]    --> src/utils/common.rs:340:8
[INFO] [stdout]     |
[INFO] [stdout] 340 | pub fn parse_query(query: &str) -> HashMap<String, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `grpc_port` and `general_service` are never read
[INFO] [stdout]  --> src/config/environment.rs:4:9
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct AppConfig {
[INFO] [stdout]   |            --------- fields in this struct
[INFO] [stdout] 4 |     pub grpc_port: String,
[INFO] [stdout]   |         ^^^^^^^^^
[INFO] [stdout] 5 |     pub http_port: String,     // <── ganti ini
[INFO] [stdout] 6 |     pub general_service: String,
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connect_auth_client` is never used
[INFO] [stdout]  --> src/config/grpc.rs:5:14
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub async fn connect_auth_client(url: &str) -> Result<AuthClient<Channel>, tonic::transport::Error> {
[INFO] [stdout]   |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connect_general_client` is never used
[INFO] [stdout]  --> src/config/grpc.rs:9:14
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub async fn connect_general_client(url: &str) -> Result<UserServiceClient<Channel>, tonic::transport::Error> {
[INFO] [stdout]   |              ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init_redis` is never used
[INFO] [stdout]  --> src/config/redis.rs:5:14
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub async fn init_redis() -> MultiplexedConnection {
[INFO] [stdout]   |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]    --> src/middlewares/middleware.rs:141:25
[INFO] [stdout]     |
[INFO] [stdout] 141 | pub struct CustomHeader(pub String);
[INFO] [stdout]     |            ------------ ^^^^^^^^^^
[INFO] [stdout]     |            |
[INFO] [stdout]     |            field in this struct
[INFO] [stdout]     |
[INFO] [stdout]     = help: consider removing this field
[INFO] [stdout]     = note: `CustomHeader` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Required`, `RegexMismatch`, `Length`, and `Range` are never constructed
[INFO] [stdout]   --> src/validation/validation.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub enum ValidationError {
[INFO] [stdout]    |          --------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 15 |     Required(String),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     RegexMismatch(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     Length(String, usize, usize),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 28 |     #[error("Field '{0}' value out of range (min={1}, max={2})")]
[INFO] [stdout] 29 |     Range(String, f64, f64),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ValidationError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Number`, `Bool`, `Json`, `Date`, `Array`, and `Custom` are never constructed
[INFO] [stdout]   --> src/validation/validation.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub enum Rule {
[INFO] [stdout]    |          ---- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 45 |     Number { min: f64, max: f64, message: Option<String> },
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 46 |     Bool { message: Option<String> },
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 47 |     Regex { pattern: &'static str, message: Option<String> },
[INFO] [stdout] 48 |     Json { message: Option<String> },
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 49 |     Enum { values: Vec<&'static str>, message: Option<String> },
[INFO] [stdout] 50 |     Date { message: Option<String> },
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 51 |     Array { min: usize, max: usize, message: Option<String> },
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 52 |     Custom { func: fn(&Value) -> Result<(), String> },
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Rule` 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: field `value` is never read
[INFO] [stdout]    --> src/validation/validation.rs:240:9
[INFO] [stdout]     |
[INFO] [stdout] 237 | pub struct AttackDetection {
[INFO] [stdout]     |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 240 |     pub value: String,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `AttackDetection` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_variable` is never used
[INFO] [stdout]    --> src/validation/validation.rs:286:8
[INFO] [stdout]     |
[INFO] [stdout] 286 | pub fn validate_variable(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `secure_validate_variable` is never used
[INFO] [stdout]    --> src/validation/validation.rs:295:8
[INFO] [stdout]     |
[INFO] [stdout] 295 | pub fn secure_validate_variable(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `encode_str` is never used
[INFO] [stdout]   --> src/utils/common.rs:20:8
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub fn encode_str(input: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decode_str` is never used
[INFO] [stdout]   --> src/utils/common.rs:25:8
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub fn decode_str(input: &str) -> Result<String, String> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_uuid` is never used
[INFO] [stdout]   --> src/utils/common.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub fn generate_uuid() -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `now_timestamp` is never used
[INFO] [stdout]   --> src/utils/common.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub fn now_timestamp() -> i64 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `timestamp_to_datetime` is never used
[INFO] [stdout]   --> src/utils/common.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub fn timestamp_to_datetime(ts: i64) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_string` is never used
[INFO] [stdout]   --> src/utils/common.rs:48:8
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub fn random_string(len: usize) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hash_sha256` is never used
[INFO] [stdout]   --> src/utils/common.rs:57:8
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub fn hash_sha256(input: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `encode_base64` is never used
[INFO] [stdout]   --> src/utils/common.rs:64:8
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub fn encode_base64(input: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decode_base64` is never used
[INFO] [stdout]   --> src/utils/common.rs:69:8
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub fn decode_base64(input: &str) -> Result<String, String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `now_millis` is never used
[INFO] [stdout]   --> src/utils/common.rs:76:8
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub fn now_millis() -> u128 {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize_str` is never used
[INFO] [stdout]   --> src/utils/common.rs:85:8
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub fn normalize_str(input: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_blank` is never used
[INFO] [stdout]   --> src/utils/common.rs:90:8
[INFO] [stdout]    |
[INFO] [stdout] 90 | pub fn is_blank(input: &str) -> bool {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_number` is never used
[INFO] [stdout]   --> src/utils/common.rs:95:8
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub fn format_number(n: i64) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_json` is never used
[INFO] [stdout]    --> src/utils/common.rs:109:8
[INFO] [stdout]     |
[INFO] [stdout] 109 | pub fn parse_json(input: &str) -> Result<Value, String> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `map_to_json` is never used
[INFO] [stdout]    --> src/utils/common.rs:114:8
[INFO] [stdout]     |
[INFO] [stdout] 114 | pub fn map_to_json(map: &HashMap<String, String>) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `seconds_since` is never used
[INFO] [stdout]    --> src/utils/common.rs:119:8
[INFO] [stdout]     |
[INFO] [stdout] 119 | pub fn seconds_since(ts: i64) -> i64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `add_days` is never used
[INFO] [stdout]    --> src/utils/common.rs:124:8
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub fn add_days(days: i64) -> String {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_valid_email` is never used
[INFO] [stdout]    --> src/utils/common.rs:129:8
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub fn is_valid_email(email: &str) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `capitalize_first` is never used
[INFO] [stdout]    --> src/utils/common.rs:134:8
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub fn capitalize_first(input: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `to_slug` is never used
[INFO] [stdout]    --> src/utils/common.rs:143:8
[INFO] [stdout]     |
[INFO] [stdout] 143 | pub fn to_slug(input: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_env` is never used
[INFO] [stdout]    --> src/utils/common.rs:155:8
[INFO] [stdout]     |
[INFO] [stdout] 155 | pub fn get_env(key: &str, default: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `to_i64` is never used
[INFO] [stdout]    --> src/utils/common.rs:160:8
[INFO] [stdout]     |
[INFO] [stdout] 160 | pub fn to_i64(input: &str) -> Result<i64, String> {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `to_f64` is never used
[INFO] [stdout]    --> src/utils/common.rs:165:8
[INFO] [stdout]     |
[INFO] [stdout] 165 | pub fn to_f64(input: &str) -> Result<f64, String> {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clamp` is never used
[INFO] [stdout]    --> src/utils/common.rs:170:8
[INFO] [stdout]     |
[INFO] [stdout] 170 | pub fn clamp(value: i64, min: i64, max: i64) -> i64 {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_otp` is never used
[INFO] [stdout]    --> src/utils/common.rs:181:8
[INFO] [stdout]     |
[INFO] [stdout] 181 | pub fn generate_otp(len: usize) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `json_get` is never used
[INFO] [stdout]    --> src/utils/common.rs:187:8
[INFO] [stdout]     |
[INFO] [stdout] 187 | pub fn json_get<'a>(v: &'a Value, key: &str) -> Option<&'a Value> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `human_readable_size` is never used
[INFO] [stdout]    --> src/utils/common.rs:192:8
[INFO] [stdout]     |
[INFO] [stdout] 192 | pub fn human_readable_size(bytes: usize) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `file_exists` is never used
[INFO] [stdout]    --> src/utils/common.rs:210:8
[INFO] [stdout]     |
[INFO] [stdout] 210 | pub fn file_exists(path: &str) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_file_to_string` is never used
[INFO] [stdout]    --> src/utils/common.rs:215:8
[INFO] [stdout]     |
[INFO] [stdout] 215 | pub fn read_file_to_string(path: &str) -> Result<String, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_valid_password` is never used
[INFO] [stdout]    --> src/utils/common.rs:220:8
[INFO] [stdout]     |
[INFO] [stdout] 220 | pub fn is_valid_password(pw: &str) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `chunk_str` is never used
[INFO] [stdout]    --> src/utils/common.rs:230:8
[INFO] [stdout]     |
[INFO] [stdout] 230 | pub fn chunk_str(input: &str, size: usize) -> Vec<String> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mask_sensitive` is never used
[INFO] [stdout]    --> src/utils/common.rs:239:8
[INFO] [stdout]     |
[INFO] [stdout] 239 | pub fn mask_sensitive(input: &str, visible: usize) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `email_domain` is never used
[INFO] [stdout]    --> src/utils/common.rs:248:8
[INFO] [stdout]     |
[INFO] [stdout] 248 | pub fn email_domain(email: &str) -> Option<&str> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `merge_maps` is never used
[INFO] [stdout]    --> src/utils/common.rs:253:8
[INFO] [stdout]     |
[INFO] [stdout] 253 | pub fn merge_maps<K: Eq + std::hash::Hash, V>(
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `frequency_count` is never used
[INFO] [stdout]    --> src/utils/common.rs:264:8
[INFO] [stdout]     |
[INFO] [stdout] 264 | pub fn frequency_count<T: Eq + std::hash::Hash>(items: &[T]) -> HashMap<&T, usize> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `human_duration` is never used
[INFO] [stdout]    --> src/utils/common.rs:273:8
[INFO] [stdout]     |
[INFO] [stdout] 273 | pub fn human_duration(seconds: i64) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_expired` is never used
[INFO] [stdout]    --> src/utils/common.rs:289:8
[INFO] [stdout]     |
[INFO] [stdout] 289 | pub fn is_expired(ts: i64, ttl_secs: i64) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `constant_time_eq` is never used
[INFO] [stdout]    --> src/utils/common.rs:294:8
[INFO] [stdout]     |
[INFO] [stdout] 294 | pub fn constant_time_eq(a: &str, b: &str) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sign_token` is never used
[INFO] [stdout]    --> src/utils/common.rs:306:8
[INFO] [stdout]     |
[INFO] [stdout] 306 | pub fn sign_token(secret: &str, data: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `file_extension` is never used
[INFO] [stdout]    --> src/utils/common.rs:318:8
[INFO] [stdout]     |
[INFO] [stdout] 318 | pub fn file_extension(path: &str) -> Option<&str> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `list_files` is never used
[INFO] [stdout]    --> src/utils/common.rs:323:8
[INFO] [stdout]     |
[INFO] [stdout] 323 | pub fn list_files(path: &str) -> Result<Vec<String>, String> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_host` is never used
[INFO] [stdout]    --> src/utils/common.rs:335:8
[INFO] [stdout]     |
[INFO] [stdout] 335 | pub fn extract_host(url: &str) -> Option<String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_query` is never used
[INFO] [stdout]    --> src/utils/common.rs:340:8
[INFO] [stdout]     |
[INFO] [stdout] 340 | pub fn parse_query(query: &str) -> HashMap<String, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 37s
[INFO] running `Command { std: "docker" "inspect" "ba896d847a9b64f25f7b5eafebb88b06d880c343e6b31e1243e223543b30076a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ba896d847a9b64f25f7b5eafebb88b06d880c343e6b31e1243e223543b30076a", kill_on_drop: false }`
[INFO] [stdout] ba896d847a9b64f25f7b5eafebb88b06d880c343e6b31e1243e223543b30076a
