[INFO] cloning repository https://github.com/thorli9527/im-relation
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/thorli9527/im-relation" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fthorli9527%2Fim-relation", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fthorli9527%2Fim-relation'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] a002e8c26f73b7a132e3867cc23ff4dc6886d07d
[INFO] checking thorli9527/im-relation against try#0cb362313295507a2f4321c0e30cea0168f2fe71 for pr-138961-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fthorli9527%2Fim-relation" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-3-tc2/source/rust-toolchain.toml
[INFO] started tweaking git repo https://github.com/thorli9527/im-relation
[INFO] finished tweaking git repo https://github.com/thorli9527/im-relation
[INFO] tweaked toml for git repo https://github.com/thorli9527/im-relation written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/thorli9527/im-relation on toolchain 0cb362313295507a2f4321c0e30cea0168f2fe71
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+0cb362313295507a2f4321c0e30cea0168f2fe71" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/thorli9527/im-relation 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" "+0cb362313295507a2f4321c0e30cea0168f2fe71" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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:94a0c148923f5b2b52a63ef0eeb1882ad339ab61bce784c8077cbe41c61feb6c" "/opt/rustwide/cargo-home/bin/cargo" "+0cb362313295507a2f4321c0e30cea0168f2fe71" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 62f602239906a325b1f7f9498fa50fa2efc43c43daa26926115e17ddebef3b8f
[INFO] running `Command { std: "docker" "start" "-a" "62f602239906a325b1f7f9498fa50fa2efc43c43daa26926115e17ddebef3b8f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "62f602239906a325b1f7f9498fa50fa2efc43c43daa26926115e17ddebef3b8f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "62f602239906a325b1f7f9498fa50fa2efc43c43daa26926115e17ddebef3b8f", kill_on_drop: false }`
[INFO] [stdout] 62f602239906a325b1f7f9498fa50fa2efc43c43daa26926115e17ddebef3b8f
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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:94a0c148923f5b2b52a63ef0eeb1882ad339ab61bce784c8077cbe41c61feb6c" "/opt/rustwide/cargo-home/bin/cargo" "+0cb362313295507a2f4321c0e30cea0168f2fe71" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 4579806b980f646f0771d2a9102c2b38148754dc62e55714d96fb4d07d1ce7b6
[INFO] running `Command { std: "docker" "start" "-a" "4579806b980f646f0771d2a9102c2b38148754dc62e55714d96fb4d07d1ce7b6", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.97
[INFO] [stderr]    Compiling unicode-ident v1.0.18
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]     Checking cfg-if v1.0.1
[INFO] [stderr]    Compiling allocator-api2 v0.2.21
[INFO] [stderr]    Compiling typenum v1.18.0
[INFO] [stderr]    Compiling libc v0.2.175
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]     Checking memchr v2.7.5
[INFO] [stderr]    Compiling lock_api v0.4.13
[INFO] [stderr]    Compiling zerocopy v0.8.26
[INFO] [stderr]    Compiling log v0.4.27
[INFO] [stderr]    Compiling anyhow v1.0.99
[INFO] [stderr]    Compiling cc v1.2.32
[INFO] [stderr]    Compiling pin-project-lite v0.2.16
[INFO] [stderr]    Compiling futures-core v0.3.31
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling futures-sink v0.3.31
[INFO] [stderr]    Compiling icu_properties_data v2.0.1
[INFO] [stderr]    Compiling icu_normalizer_data v2.0.0
[INFO] [stderr]     Checking subtle v2.6.1
[INFO] [stderr]    Compiling tracing-core v0.1.34
[INFO] [stderr]    Compiling slab v0.4.11
[INFO] [stderr]    Compiling hashbrown v0.15.5
[INFO] [stderr]     Checking const-oid v0.9.6
[INFO] [stderr]    Compiling pin-utils v0.1.0
[INFO] [stderr]    Compiling futures-io v0.3.31
[INFO] [stderr]     Checking stable_deref_trait v1.2.0
[INFO] [stderr]    Compiling futures-task v0.3.31
[INFO] [stderr]    Compiling quote v1.0.40
[INFO] [stderr]    Compiling getrandom v0.3.3
[INFO] [stderr]    Compiling rustix v1.0.8
[INFO] [stderr]    Compiling socket2 v0.6.0
[INFO] [stderr]    Compiling syn v2.0.104
[INFO] [stderr]    Compiling mio v1.0.4
[INFO] [stderr]    Compiling getrandom v0.2.16
[INFO] [stderr]    Compiling futures-util v0.3.31
[INFO] [stderr]     Checking signal-hook-registry v1.4.6
[INFO] [stderr]    Compiling indexmap v2.10.0
[INFO] [stderr]    Compiling linux-raw-sys v0.9.4
[INFO] [stderr]    Compiling prettyplease v0.2.36
[INFO] [stderr]    Compiling regex-syntax v0.8.5
[INFO] [stderr]    Compiling fastrand v2.3.0
[INFO] [stderr]     Checking zeroize v1.8.1
[INFO] [stderr]    Compiling percent-encoding v2.3.1
[INFO] [stderr]    Compiling fixedbitset v0.5.7
[INFO] [stderr]    Compiling http v1.3.1
[INFO] [stderr]     Checking block-buffer v0.10.4
[INFO] [stderr]     Checking crypto-common v0.1.6
[INFO] [stderr]    Compiling futures-channel v0.3.31
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]    Compiling multimap v0.10.1
[INFO] [stderr]     Checking litemap v0.8.0
[INFO] [stderr]    Compiling rustls v0.23.31
[INFO] [stderr]     Checking writeable v0.6.1
[INFO] [stderr]    Compiling tower-service v0.3.3
[INFO] [stderr]    Compiling serde_json v1.0.142
[INFO] [stderr]    Compiling time-core v0.1.4
[INFO] [stderr]    Compiling try-lock v0.2.5
[INFO] [stderr]    Compiling num-conv v0.1.0
[INFO] [stderr]    Compiling petgraph v0.7.1
[INFO] [stderr]    Compiling atomic-waker v1.1.2
[INFO] [stderr]    Compiling time-macros v0.2.22
[INFO] [stderr]    Compiling want v0.3.1
[INFO] [stderr]     Checking form_urlencoded v1.2.1
[INFO] [stderr]    Compiling httparse v1.10.1
[INFO] [stderr]    Compiling sync_wrapper v1.0.2
[INFO] [stderr]    Compiling httpdate v1.0.3
[INFO] [stderr]    Compiling tower-layer v0.3.3
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]     Checking rustls-pki-types v1.12.0
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling mime v0.3.17
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]    Compiling axum-core v0.5.2
[INFO] [stderr]    Compiling regex-automata v0.4.9
[INFO] [stderr]    Compiling num-bigint-dig v0.8.4
[INFO] [stderr]    Compiling base64ct v1.8.0
[INFO] [stderr]    Compiling matchit v0.8.4
[INFO] [stderr]    Compiling socket2 v0.5.10
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling pem-rfc7468 v0.7.0
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]    Compiling der v0.7.10
[INFO] [stderr]     Checking concurrent-queue v2.5.0
[INFO] [stderr]     Checking rand_core v0.9.3
[INFO] [stderr]    Compiling powerfmt v0.2.0
[INFO] [stderr]    Compiling utf8_iter v1.0.4
[INFO] [stderr]    Compiling tinyvec v1.9.0
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]    Compiling deranged v0.4.0
[INFO] [stderr]    Compiling webpki-roots v1.0.2
[INFO] [stderr]     Checking event-listener v5.4.1
[INFO] [stderr]    Compiling crc-catalog v2.4.0
[INFO] [stderr]    Compiling spin v0.9.8
[INFO] [stderr]    Compiling byteorder v1.5.0
[INFO] [stderr]    Compiling parking v2.2.1
[INFO] [stderr]     Checking lazy_static v1.5.0
[INFO] [stderr]    Compiling num-iter v0.1.45
[INFO] [stderr]    Compiling crc v3.3.0
[INFO] [stderr]    Compiling spki v0.7.3
[INFO] [stderr]    Compiling webpki-roots v0.26.11
[INFO] [stderr]     Checking rand v0.9.2
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling crossbeam-queue v0.3.12
[INFO] [stderr]    Compiling hmac v0.12.1
[INFO] [stderr]    Compiling regex v1.11.1
[INFO] [stderr]    Compiling unicode-normalization v0.1.24
[INFO] [stderr]    Compiling pkcs8 v0.10.2
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]    Compiling hashlink v0.10.0
[INFO] [stderr]    Compiling unicode-bidi v0.3.18
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling time v0.3.41
[INFO] [stderr]     Checking ipnet v2.11.0
[INFO] [stderr]    Compiling ucd-trie v0.1.7
[INFO] [stderr]    Compiling unicode-properties v0.1.3
[INFO] [stderr]    Compiling libz-sys v1.1.22
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling pest v2.8.3
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]    Compiling pkcs1 v0.7.5
[INFO] [stderr]    Compiling hkdf v0.12.4
[INFO] [stderr]    Compiling const-random-macro v0.1.16
[INFO] [stderr]    Compiling stringprep v0.1.5
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]    Compiling atoi v2.0.0
[INFO] [stderr]    Compiling signature v2.2.0
[INFO] [stderr]    Compiling md-5 v0.10.6
[INFO] [stderr]     Checking aho-corasick v1.1.3
[INFO] [stderr]    Compiling hex v0.4.3
[INFO] [stderr]    Compiling dotenvy v0.15.7
[INFO] [stderr]    Compiling ident_case v1.0.1
[INFO] [stderr]    Compiling whoami v1.6.1
[INFO] [stderr]     Checking const-random v0.1.18
[INFO] [stderr]    Compiling cmake v0.1.54
[INFO] [stderr]     Checking utf-8 v0.7.6
[INFO] [stderr]    Compiling home v0.5.11
[INFO] [stderr]    Compiling erased-serde v0.4.9
[INFO] [stderr]    Compiling radium v0.7.0
[INFO] [stderr]    Compiling pest_meta v2.8.3
[INFO] [stderr]     Checking dlv-list v0.5.2
[INFO] [stderr]    Compiling proc-macro-error-attr2 v2.0.0
[INFO] [stderr]    Compiling rustls-webpki v0.103.4
[INFO] [stderr]     Checking utf8parse v0.2.2
[INFO] [stderr]     Checking tap v1.0.1
[INFO] [stderr]    Compiling rdkafka-sys v4.9.0+2.10.0
[INFO] [stderr]     Checking wyz v0.5.1
[INFO] [stderr]     Checking anstyle-parse v0.2.7
[INFO] [stderr]     Checking ordered-multimap v0.7.3
[INFO] [stderr]    Compiling portable-atomic v1.11.1
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling darling_core v0.20.11
[INFO] [stderr]    Compiling proc-macro-error2 v2.0.1
[INFO] [stderr]     Checking toml_parser v1.0.4
[INFO] [stderr]     Checking event-listener-strategy v0.5.4
[INFO] [stderr]     Checking num-bigint v0.4.6
[INFO] [stderr]     Checking toml_datetime v0.7.3
[INFO] [stderr]     Checking serde_spanned v1.0.3
[INFO] [stderr]     Checking num_cpus v1.17.0
[INFO] [stderr]    Compiling proc-macro-crate v3.3.0
[INFO] [stderr]     Checking encoding_rs v0.8.35
[INFO] [stderr]    Compiling pest_generator v2.8.3
[INFO] [stderr]     Checking anstyle-query v1.1.4
[INFO] [stderr]     Checking anstyle v1.0.11
[INFO] [stderr]     Checking is_terminal_polyfill v1.70.1
[INFO] [stderr]     Checking iri-string v0.7.9
[INFO] [stderr]     Checking arraydeque v0.5.1
[INFO] [stderr]     Checking funty v2.0.0
[INFO] [stderr]    Compiling moka v0.12.10
[INFO] [stderr]     Checking base64 v0.21.7
[INFO] [stderr]     Checking colorchoice v1.0.4
[INFO] [stderr]     Checking anstream v0.6.20
[INFO] [stderr]     Checking convert_case v0.6.0
[INFO] [stderr]     Checking bitvec v1.0.1
[INFO] [stderr]     Checking toml v0.9.8
[INFO] [stderr]     Checking async-lock v3.4.1
[INFO] [stderr]     Checking rust-ini v0.21.3
[INFO] [stderr]     Checking serde-untagged v0.1.9
[INFO] [stderr]     Checking serde_bytes v0.11.19
[INFO] [stderr]     Checking crossbeam-epoch v0.9.18
[INFO] [stderr]     Checking crossbeam-channel v0.5.15
[INFO] [stderr]     Checking pathdiff v0.2.3
[INFO] [stderr]     Checking iana-time-zone v0.1.63
[INFO] [stderr]     Checking jiff v0.2.15
[INFO] [stderr]     Checking tagptr v0.2.0
[INFO] [stderr]     Checking chrono v0.4.41
[INFO] [stderr]     Checking yaml-rust2 v0.10.4
[INFO] [stderr]     Checking twox-hash v2.1.1
[INFO] [stderr]     Checking strum v0.27.2
[INFO] [stderr]     Checking bytemuck v1.23.2
[INFO] [stderr]     Checking sysinfo v0.37.0
[INFO] [stderr]    Compiling proc-macro-hack v0.5.20+deprecated
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tokio-macros v2.5.0
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling tracing-attributes v0.1.30
[INFO] [stderr]    Compiling yoke-derive v0.8.0
[INFO] [stderr]    Compiling zerovec-derive v0.11.1
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling tokio v1.47.1
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling thiserror-impl v2.0.17
[INFO] [stderr]    Compiling pin-project-internal v1.1.10
[INFO] [stderr]    Compiling async-trait v0.1.88
[INFO] [stderr]    Compiling darling_macro v0.20.11
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]     Checking yoke v0.8.0
[INFO] [stderr]    Compiling num_enum_derive v0.7.4
[INFO] [stderr]    Compiling zerotrie v0.2.2
[INFO] [stderr]    Compiling zerovec v0.11.4
[INFO] [stderr]    Compiling tracing v0.1.41
[INFO] [stderr]    Compiling darling v0.20.11
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling axum-macros v0.5.0
[INFO] [stderr]    Compiling pin-project v1.1.10
[INFO] [stderr]    Compiling pest_derive v2.8.3
[INFO] [stderr]    Compiling validator_derive v0.20.0
[INFO] [stderr]     Checking env_filter v0.1.3
[INFO] [stderr]     Checking thiserror v2.0.17
[INFO] [stderr]    Compiling utoipa-gen v5.4.0
[INFO] [stderr]     Checking tungstenite v0.26.2
[INFO] [stderr]     Checking num_enum v0.7.4
[INFO] [stderr]     Checking tower v0.4.13
[INFO] [stderr]    Compiling strum_macros v0.27.2
[INFO] [stderr]     Checking roaring v0.11.2
[INFO] [stderr]     Checking tinystr v0.8.1
[INFO] [stderr]     Checking potential_utf v0.1.2
[INFO] [stderr]     Checking icu_locale_core v2.0.0
[INFO] [stderr]     Checking icu_collections v2.0.0
[INFO] [stderr]     Checking env_logger v0.11.8
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking icu_provider v2.0.0
[INFO] [stderr]     Checking fxhash v0.2.1
[INFO] [stderr]    Compiling mime_guess v2.0.5
[INFO] [stderr]     Checking icu_properties v2.0.1
[INFO] [stderr]     Checking http-range-header v0.4.2
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking arc-swap v1.7.1
[INFO] [stderr]     Checking sharded-slab v0.1.7
[INFO] [stderr]     Checking password-hash v0.5.0
[INFO] [stderr]     Checking blake2 v0.10.6
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking thread_local v1.1.9
[INFO] [stderr]    Compiling paste-impl v0.1.18
[INFO] [stderr]     Checking toml_write v0.1.2
[INFO] [stderr]     Checking argon2 v0.5.3
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]     Checking parking_lot_core v0.9.11
[INFO] [stderr]    Compiling bitflags v2.9.1
[INFO] [stderr]     Checking icu_normalizer v2.0.0
[INFO] [stderr]     Checking parking_lot v0.12.4
[INFO] [stderr]    Compiling itertools v0.14.0
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.0.3
[INFO] [stderr]    Compiling futures-intrusive v0.5.0
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking url v2.5.4
[INFO] [stderr]     Checking uuid v1.18.0
[INFO] [stderr]     Checking serde_path_to_error v0.1.17
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking ron v0.8.1
[INFO] [stderr]     Checking json5 v0.4.1
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking dashmap v6.1.0
[INFO] [stderr]     Checking rsa v0.9.8
[INFO] [stderr]     Checking paste v0.1.18
[INFO] [stderr]     Checking bson v2.15.0
[INFO] [stderr]     Checking validator v0.20.0
[INFO] [stderr]    Compiling tokio-stream v0.1.17
[INFO] [stderr]    Compiling tokio-util v0.7.16
[INFO] [stderr]     Checking handlers v0.10.0
[INFO] [stderr]    Compiling prost-derive v0.13.5
[INFO] [stderr]    Compiling prost-derive v0.14.1
[INFO] [stderr]     Checking serde_spanned v0.6.9
[INFO] [stderr]     Checking singleflight v0.3.0
[INFO] [stderr]     Checking tracing-subscriber v0.3.19
[INFO] [stderr]    Compiling tempfile v3.20.0
[INFO] [stderr]    Compiling h2 v0.4.12
[INFO] [stderr]    Compiling tower v0.5.2
[INFO] [stderr]    Compiling sqlx-core v0.8.6
[INFO] [stderr]     Checking config v0.15.16
[INFO] [stderr]    Compiling prost v0.13.5
[INFO] [stderr]    Compiling prost v0.14.1
[INFO] [stderr]    Compiling prost-types v0.13.5
[INFO] [stderr]    Compiling axum v0.8.4
[INFO] [stderr]    Compiling prost-types v0.14.1
[INFO] [stderr]     Checking utoipa v5.4.0
[INFO] [stderr]     Checking toml v0.8.23
[INFO] [stderr]    Compiling prost-build v0.13.5
[INFO] [stderr]    Compiling prost-build v0.14.1
[INFO] [stderr]     Checking deadpool-runtime v0.1.4
[INFO] [stderr]     Checking tokio-rustls v0.26.4
[INFO] [stderr]     Checking tokio-tungstenite v0.26.2
[INFO] [stderr]     Checking deadpool v0.12.2
[INFO] [stderr]    Compiling tonic-build v0.13.1
[INFO] [stderr]    Compiling sqlx-mysql v0.8.6
[INFO] [stderr]    Compiling sqlx-postgres v0.8.6
[INFO] [stderr]     Checking combine v4.6.7
[INFO] [stderr]     Checking tower-http v0.5.2
[INFO] [stderr]    Compiling msg_group v0.1.0 (/opt/rustwide/workdir/msg_group)
[INFO] [stderr]    Compiling msg_friend v0.1.0 (/opt/rustwide/workdir/msg_friend)
[INFO] [stderr]    Compiling app_socket v0.1.0 (/opt/rustwide/workdir/app_socket)
[INFO] [stderr]     Checking tower-http v0.6.6
[INFO] [stderr]    Compiling hyper v1.6.0
[INFO] [stderr]    Compiling hyper-util v0.1.16
[INFO] [stderr]    Compiling hyper-timeout v0.5.2
[INFO] [stderr]     Checking rdkafka v0.38.0
[INFO] [stderr]    Compiling tonic v0.13.1
[INFO] [stderr]    Compiling sqlx-macros-core v0.8.6
[INFO] [stderr]     Checking redis v0.31.0
[INFO] [stderr]     Checking hyper-rustls v0.27.7
[INFO] [stderr]    Compiling sqlx-macros v0.8.6
[INFO] [stderr]     Checking reqwest v0.12.24
[INFO] [stderr]    Compiling common v0.2.0 (/opt/rustwide/workdir/common)
[INFO] [stderr]    Compiling user_service v0.2.0 (/opt/rustwide/workdir/user_service)
[INFO] [stderr]    Compiling group_service v0.1.1 (/opt/rustwide/workdir/group_service)
[INFO] [stderr]    Compiling friend_service v0.2.0 (/opt/rustwide/workdir/friend_service)
[INFO] [stderr]     Checking sqlx v0.8.6
[INFO] [stderr]     Checking deadpool-redis v0.21.1
[INFO] [stderr]     Checking app_api v0.1.0 (/opt/rustwide/workdir/app_api)
[INFO] [stdout] warning: unused imports: `DeviceKeysRow`, `fetch_device_bundles`, and `upsert_device_keys`
[INFO] [stdout]   --> msg_friend/src/dao/mod.rs:14:23
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub use device_keys::{fetch_device_bundles, upsert_device_keys, DeviceKeysRow};
[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 imports: `FriendRequestRow`, `get_friend_request_by_id`, `mark_friend_request_decision`, and `upsert_friend_request`
[INFO] [stdout]   --> msg_friend/src/dao/mod.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     get_friend_request_by_id, mark_friend_request_decision, upsert_friend_request, FriendRequestRow,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DeviceKeysRow`, `fetch_device_bundles`, and `upsert_device_keys`
[INFO] [stdout]   --> msg_friend/src/dao/mod.rs:14:23
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub use device_keys::{fetch_device_bundles, upsert_device_keys, DeviceKeysRow};
[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 imports: `FriendRequestRow`, `get_friend_request_by_id`, `mark_friend_request_decision`, and `upsert_friend_request`
[INFO] [stdout]   --> msg_friend/src/dao/mod.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     get_friend_request_by_id, mark_friend_request_decision, upsert_friend_request, FriendRequestRow,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> msg_group/src/service/group_msg_service.rs:621:21
[INFO] [stdout]     |
[INFO] [stdout] 621 |                 let mut new_client = self.hot_client()?;
[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: use of deprecated associated function `common::infra::message::profile_event_content::ProfileEventType::from_i32`: Use the TryFrom<i32> implementation instead
[INFO] [stdout]    --> app_socket/src/server/server_tcp.rs:445:70
[INFO] [stdout]     |
[INFO] [stdout] 445 |     let event_type = msgpb::profile_event_content::ProfileEventType::from_i32(profile.event_type)
[INFO] [stdout]     |                                                                      ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `common::infra::grpc_group::group_service::GroupRoleType::from_i32`: Use the TryFrom<i32> implementation instead
[INFO] [stdout]    --> msg_group/src/service/group_msg_service.rs:673:49
[INFO] [stdout]     |
[INFO] [stdout] 673 |                 return Ok(hotpb::GroupRoleType::from_i32(member.role));
[INFO] [stdout]     |                                                 ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `common::infra::message::group_member_changed::Action::from_i32`: Use the TryFrom<i32> implementation instead
[INFO] [stdout]    --> msg_group/src/service/group_msg_service.rs:720:23
[INFO] [stdout]     |
[INFO] [stdout] 720 |         match Action::from_i32(payload.action) {
[INFO] [stdout]     |                       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sqlx::Executor`
[INFO] [stdout]   --> friend_service/src/service/friend_service_impl.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use sqlx::Executor as _;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> friend_service/src/db/elias_fano.rs:144:13
[INFO] [stdout]     |
[INFO] [stdout] 144 |         let mut pos_global: usize;
[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: use of deprecated associated function `common::infra::message::profile_event_content::ProfileEventType::from_i32`: Use the TryFrom<i32> implementation instead
[INFO] [stdout]    --> app_socket/src/server/server_tcp.rs:445:70
[INFO] [stdout]     |
[INFO] [stdout] 445 |     let event_type = msgpb::profile_event_content::ProfileEventType::from_i32(profile.event_type)
[INFO] [stdout]     |                                                                      ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DeviceKeysRow` is never constructed
[INFO] [stdout]  --> msg_friend/src/dao/device_keys.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct DeviceKeysRow {
[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 `upsert_device_keys` is never used
[INFO] [stdout]   --> msg_friend/src/dao/device_keys.rs:23:14
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub async fn upsert_device_keys(pool: &Pool<MySql>, row: &DeviceKeysRow) -> Result<u64> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fetch_device_bundles` is never used
[INFO] [stdout]   --> msg_friend/src/dao/device_keys.rs:44:14
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub async fn fetch_device_bundles(pool: &Pool<MySql>, uid: i64) -> Result<Vec<DeviceKeysRow>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FriendRequestRow` is never constructed
[INFO] [stdout]  --> msg_friend/src/dao/friend_requests.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct FriendRequestRow {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `upsert_friend_request` is never used
[INFO] [stdout]   --> msg_friend/src/dao/friend_requests.rs:33:14
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub async fn upsert_friend_request(pool: &Pool<MySql>, row: &FriendRequestRow) -> Result<u64> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_friend_request_by_id` is never used
[INFO] [stdout]   --> msg_friend/src/dao/friend_requests.rs:54:14
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub async fn get_friend_request_by_id(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mark_friend_request_decision` is never used
[INFO] [stdout]   --> msg_friend/src/dao/friend_requests.rs:79:14
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub async fn mark_friend_request_decision(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_message_by_id` is never used
[INFO] [stdout]    --> msg_friend/src/dao/messages.rs:133:14
[INFO] [stdout]     |
[INFO] [stdout] 133 | pub async fn get_message_by_id(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mark_delivered` is never used
[INFO] [stdout]    --> msg_friend/src/dao/messages.rs:162:14
[INFO] [stdout]     |
[INFO] [stdout] 162 | pub async fn mark_delivered(_pool: &Pool<MySql>, _msg_id: i64, _ts: i64) -> Result<u64> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mark_read` is never used
[INFO] [stdout]    --> msg_friend/src/dao/messages.rs:167:14
[INFO] [stdout]     |
[INFO] [stdout] 167 | pub async fn mark_read(_pool: &Pool<MySql>, _msg_id: i64, _ts: i64) -> Result<u64> {
[INFO] [stdout]     |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `recall_message` is never used
[INFO] [stdout]    --> msg_friend/src/dao/messages.rs:172:14
[INFO] [stdout]     |
[INFO] [stdout] 172 | pub async fn recall_message(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `copy_message_as_forward` is never used
[INFO] [stdout]    --> msg_friend/src/dao/messages.rs:182:14
[INFO] [stdout]     |
[INFO] [stdout] 182 | pub async fn copy_message_as_forward(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `kafka`, `shard_index`, and `shard_total` are never read
[INFO] [stdout]   --> msg_friend/src/server/mod.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct Services {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 31 |     kafka: Option<Arc<KafkaInstanceService>>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 32 |     shard_index: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 33 |     shard_total: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Services` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `kafka`, `shard_index`, and `shard_total` are never used
[INFO] [stdout]   --> msg_friend/src/server/mod.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl Services {
[INFO] [stdout]    | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn kafka(&self) -> Option<&Arc<KafkaInstanceService>> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn shard_index(&self) -> u32 {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn shard_total(&self) -> u32 {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `common::infra::grpc_group::group_service::GroupRoleType::from_i32`: Use the TryFrom<i32> implementation instead
[INFO] [stdout]    --> group_service/src/service/group_service_impl.rs:421:48
[INFO] [stdout]     |
[INFO] [stdout] 421 |             if let Some(role) = GroupRoleType::from_i32(m.role) {
[INFO] [stdout]     |                                                ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> msg_group/src/service/group_msg_service.rs:621:21
[INFO] [stdout]     |
[INFO] [stdout] 621 |                 let mut new_client = self.hot_client()?;
[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: use of deprecated associated function `common::infra::grpc_group::group_service::GroupRoleType::from_i32`: Use the TryFrom<i32> implementation instead
[INFO] [stdout]    --> group_service/src/service/group_service_impl.rs:437:48
[INFO] [stdout]     |
[INFO] [stdout] 437 |             if let Some(role) = GroupRoleType::from_i32(m.role) {
[INFO] [stdout]     |                                                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `common::infra::grpc_group::group_service::GroupRoleType::from_i32`: Use the TryFrom<i32> implementation instead
[INFO] [stdout]    --> msg_group/src/service/group_msg_service.rs:673:49
[INFO] [stdout]     |
[INFO] [stdout] 673 |                 return Ok(hotpb::GroupRoleType::from_i32(member.role));
[INFO] [stdout]     |                                                 ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `common::infra::message::group_member_changed::Action::from_i32`: Use the TryFrom<i32> implementation instead
[INFO] [stdout]    --> msg_group/src/service/group_msg_service.rs:720:23
[INFO] [stdout]     |
[INFO] [stdout] 720 |         match Action::from_i32(payload.action) {
[INFO] [stdout]     |                       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `common::infra::grpc_group::group_service::GroupRoleType::from_i32`: Use the TryFrom<i32> implementation instead
[INFO] [stdout]    --> group_service/src/service/group_service_impl.rs:421:48
[INFO] [stdout]     |
[INFO] [stdout] 421 |             if let Some(role) = GroupRoleType::from_i32(m.role) {
[INFO] [stdout]     |                                                ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `common::infra::grpc_group::group_service::GroupRoleType::from_i32`: Use the TryFrom<i32> implementation instead
[INFO] [stdout]    --> group_service/src/service/group_service_impl.rs:437:48
[INFO] [stdout]     |
[INFO] [stdout] 437 |             if let Some(role) = GroupRoleType::from_i32(m.role) {
[INFO] [stdout]     |                                                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `common::infra::grpc_group::group_service::GroupRoleType::from_i32`: Use the TryFrom<i32> implementation instead
[INFO] [stdout]   --> group_service/src/member/list_wrapper.rs:42:24
[INFO] [stdout]    |
[INFO] [stdout] 42 |         GroupRoleType::from_i32(v).unwrap_or(GroupRoleType::Member)
[INFO] [stdout]    |                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `apply_schema_from_ddl` is never used
[INFO] [stdout]  --> friend_service/src/db/mod.rs:9:14
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub async fn apply_schema_from_ddl(pool: &Arc<MySqlPool>, ddl: &str) -> Result<()> {
[INFO] [stdout]   |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EliasFano` is never constructed
[INFO] [stdout]  --> friend_service/src/db/elias_fano.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct EliasFano {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> friend_service/src/db/elias_fano.rs:17:12
[INFO] [stdout]     |
[INFO] [stdout]  15 | impl EliasFano {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout]  16 |     /// 由**严格递增**的去重数组构建；U 取 `max(x)+1`
[INFO] [stdout]  17 |     pub fn from_sorted(sorted: &[u64]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  79 |     pub fn len(&self) -> usize {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  87 |     pub fn max_value(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn iter(&self) -> EliasFanoIter<'_> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn contains(&self, target: u64) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn to_vec(&self) -> Vec<u64> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EliasFanoIter` is never constructed
[INFO] [stdout]    --> friend_service/src/db/elias_fano.rs:127:12
[INFO] [stdout]     |
[INFO] [stdout] 127 | pub struct EliasFanoIter<'a> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `FriendId` is never used
[INFO] [stdout]  --> friend_service/src/db/friend_list_ef.rs:9:10
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub type FriendId = u64;
[INFO] [stdout]   |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RelationError` is never used
[INFO] [stdout]   --> friend_service/src/db/friend_list_ef.rs:12:10
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub enum RelationError {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FriendListEf` is never constructed
[INFO] [stdout]   --> friend_service/src/db/friend_list_ef.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct FriendListEf {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> friend_service/src/db/friend_list_ef.rs:51:12
[INFO] [stdout]     |
[INFO] [stdout]  49 | impl FriendListEf {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout]  50 |     #[inline]
[INFO] [stdout]  51 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  66 |     fn smallvec_remove_one(v: &mut SmallVec<[FriendId; 8]>, x: FriendId) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  77 |     fn smallvec_contains(v: &SmallVec<[FriendId; 8]>, x: FriendId) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     fn clear_alias_deltas_for(&self, uid: FriendId) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn set_alias<S: Into<String>>(
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn get_alias(&self, other: UID) -> Result<Option<String>, RelationError> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 134 |     pub fn contains(&self, other: UID) -> Result<bool, RelationError> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn set_base_from_sorted(&self, sorted_unique: &[FriendId]) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn add(&self, other: UID) -> Result<bool, RelationError> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 200 |     pub fn add_with_alias<S: Into<String>>(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 217 |     pub fn remove(&self, other: UID) -> Result<bool, RelationError> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 241 |     pub fn snapshot_all(&self) -> Vec<FriendId> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 292 |     pub fn snapshot_all_detailed(&self) -> Vec<(FriendId, Option<String>)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 315 |     pub fn get_page(&self, page: usize, page_size: usize) -> Vec<FriendId> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 326 |     pub fn get_page_detailed(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 341 |     pub fn online_with_global(&self, global_online: &RB64) -> Vec<FriendId> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 354 |     pub fn maybe_compact(&self, add_thresh: usize, del_thresh: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 409 |     pub fn base_len(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 413 |     pub fn delta_add_len(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 417 |     pub fn delta_del_len(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 421 |     pub fn alias_add_len(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 425 |     pub fn alias_del_len(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `rt` and `persist` are never read
[INFO] [stdout]   --> friend_service/src/hot_shard_store.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub struct HotShardStore<K, V>
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 46 |     rt: Handle,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 47 |     persist: Option<PersistFn<K, V>>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `insert_cold`, `contains_key`, `len`, and `hot_cache` are never used
[INFO] [stdout]    --> friend_service/src/hot_shard_store.rs:88:12
[INFO] [stdout]     |
[INFO] [stdout]  50 | / impl<K, V> HotShardStore<K, V>
[INFO] [stdout]  51 | | where
[INFO] [stdout]  52 | |     K: Eq + Hash + Clone + Send + Sync + 'static,
[INFO] [stdout]  53 | |     V: Clone + Send + Sync + 'static,
[INFO] [stdout]     | |_____________________________________- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  88 |       pub fn insert_cold(&self, key: K, value: V) {
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |       pub fn contains_key(&self, key: &K) -> bool {
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |       pub fn len(&self) -> usize {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |       pub fn hot_cache(&self) -> &SegmentedCache<K, ()> {
[INFO] [stdout]     |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `persist` is never used
[INFO] [stdout]    --> friend_service/src/hot_shard_store.rs:248:12
[INFO] [stdout]     |
[INFO] [stdout] 208 | / impl<K, V> Builder<K, V>
[INFO] [stdout] 209 | | where
[INFO] [stdout] 210 | |     K: Eq + Hash + Clone + Send + Sync + 'static,
[INFO] [stdout] 211 | |     V: Clone + Send + Sync + 'static,
[INFO] [stdout]     | |_____________________________________- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 248 |       pub fn persist(mut self, persist: PersistFn<K, V>) -> Self {
[INFO] [stdout]     |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `with_chunk` are never used
[INFO] [stdout]   --> friend_service/src/store/mysql.rs:65:12
[INFO] [stdout]    |
[INFO] [stdout] 63 | impl FriendStorage {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 64 |     /// 使用全局连接池
[INFO] [stdout] 65 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 78 |     pub fn with_chunk(mut self, n: usize) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `common::infra::grpc_group::group_service::GroupRoleType::from_i32`: Use the TryFrom<i32> implementation instead
[INFO] [stdout]   --> group_service/src/member/list_wrapper.rs:42:24
[INFO] [stdout]    |
[INFO] [stdout] 42 |         GroupRoleType::from_i32(v).unwrap_or(GroupRoleType::Member)
[INFO] [stdout]    |                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `common::infra::grpc_group::group_service::GroupRoleType::from_i32`: Use the TryFrom<i32> implementation instead
[INFO] [stdout]    --> group_service/src/service/group_service_impl.rs:324:41
[INFO] [stdout]     |
[INFO] [stdout] 324 |         let Some(role) = GroupRoleType::from_i32(r.role) else {
[INFO] [stdout]     |                                         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `common::infra::grpc_group::group_service::GroupRoleType::from_i32`: Use the TryFrom<i32> implementation instead
[INFO] [stdout]    --> group_service/src/service/group_service_impl.rs:324:41
[INFO] [stdout]     |
[INFO] [stdout] 324 |         let Some(role) = GroupRoleType::from_i32(r.role) else {
[INFO] [stdout]     |                                         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sqlx::Executor`
[INFO] [stdout]   --> friend_service/src/service/friend_service_impl.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use sqlx::Executor as _;
[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: `Executor`
[INFO] [stdout]  --> group_service/src/profile/mysql_storage.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | use sqlx::{Executor, Row};
[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: `Executor`
[INFO] [stdout]  --> group_service/src/profile/mysql_storage.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | use sqlx::{Executor, Row};
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> friend_service/src/db/elias_fano.rs:144:13
[INFO] [stdout]     |
[INFO] [stdout] 144 |         let mut pos_global: usize;
[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: associated items `new`, `touch`, `is_hot`, `warmup`, and `shard_count` are never used
[INFO] [stdout]    --> group_service/src/hot_cold.rs:66:12
[INFO] [stdout]     |
[INFO] [stdout]  64 | impl<S: GroupStorage> HotColdFacade<S> {
[INFO] [stdout]     | -------------------------------------- associated items in this implementation
[INFO] [stdout]  65 |     /// 旧签名：快速构造（保留兼容）
[INFO] [stdout]  66 |     pub fn new(map: Arc<ShardMap>, storage: Arc<S>, hot_capacity: u64, hot_tti_secs: u64) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |     pub fn touch(&self, gid: GroupId) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn is_hot(&self, gid: GroupId) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub async fn warmup(&self, gids: &[GroupId]) {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 352 |     pub fn shard_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> group_service/src/member/list_wrapper.rs:128:12
[INFO] [stdout]     |
[INFO] [stdout]  16 | impl MemberListWrapper {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn add_many(&self, list: Vec<MemberRef>) -> Result<(), MemberListError> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 208 |     pub fn get_alias(&self, uid: UID) -> Result<Option<String>, MemberListError> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 215 |     pub fn get_role(&self, uid: UID) -> Result<GroupRoleType, MemberListError> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn is_owner(&self, uid: UID) -> Result<bool, MemberListError> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 229 |     pub fn owner_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 322 |     pub fn contains(&self, uid: UID) -> Result<bool, MemberListError> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub fn clear(&self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `per_group_shard` is never read
[INFO] [stdout]   --> group_service/src/member/shard_map.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub struct ShardMap {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 38 |     per_group_shard: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ShardMap` 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 `shard_count`, `get_all_arc`, and `set_page_size_bounds` are never used
[INFO] [stdout]    --> group_service/src/member/shard_map.rs:95:12
[INFO] [stdout]     |
[INFO] [stdout]  52 | impl ShardMap {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  95 |     pub fn shard_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 298 |     pub fn get_all_arc(&self, gid: GroupId) -> Option<Arc<[MemberRef]>> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 367 |     pub fn set_page_size_bounds(&mut self, min_size: usize, max_size: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `invalidate` and `touch` are never used
[INFO] [stdout]   --> group_service/src/profile/cache.rs:92:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl<S: GroupProfileStorage> GroupProfileCache<S> {
[INFO] [stdout]    | ------------------------------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 92 |     pub fn invalidate(&self, gid: i64) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 96 |     pub fn touch(&self, gid: i64) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `with_chunk_size` and `stream_all_members` are never used
[INFO] [stdout]    --> group_service/src/store/mysql.rs:32:12
[INFO] [stdout]     |
[INFO] [stdout]  22 | impl MySqlStore {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  32 |     pub fn with_chunk_size(mut self, n: usize) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub async fn stream_all_members<F>(&self, gid: GroupId, mut handle: F) -> Result<()>
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DeviceKeysRow` is never constructed
[INFO] [stdout]  --> msg_friend/src/dao/device_keys.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct DeviceKeysRow {
[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 `upsert_device_keys` is never used
[INFO] [stdout]   --> msg_friend/src/dao/device_keys.rs:23:14
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub async fn upsert_device_keys(pool: &Pool<MySql>, row: &DeviceKeysRow) -> Result<u64> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fetch_device_bundles` is never used
[INFO] [stdout]   --> msg_friend/src/dao/device_keys.rs:44:14
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub async fn fetch_device_bundles(pool: &Pool<MySql>, uid: i64) -> Result<Vec<DeviceKeysRow>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FriendRequestRow` is never constructed
[INFO] [stdout]  --> msg_friend/src/dao/friend_requests.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct FriendRequestRow {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `upsert_friend_request` is never used
[INFO] [stdout]   --> msg_friend/src/dao/friend_requests.rs:33:14
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub async fn upsert_friend_request(pool: &Pool<MySql>, row: &FriendRequestRow) -> Result<u64> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_friend_request_by_id` is never used
[INFO] [stdout]   --> msg_friend/src/dao/friend_requests.rs:54:14
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub async fn get_friend_request_by_id(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mark_friend_request_decision` is never used
[INFO] [stdout]   --> msg_friend/src/dao/friend_requests.rs:79:14
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub async fn mark_friend_request_decision(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_message_by_id` is never used
[INFO] [stdout]    --> msg_friend/src/dao/messages.rs:133:14
[INFO] [stdout]     |
[INFO] [stdout] 133 | pub async fn get_message_by_id(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mark_delivered` is never used
[INFO] [stdout]    --> msg_friend/src/dao/messages.rs:162:14
[INFO] [stdout]     |
[INFO] [stdout] 162 | pub async fn mark_delivered(_pool: &Pool<MySql>, _msg_id: i64, _ts: i64) -> Result<u64> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mark_read` is never used
[INFO] [stdout]    --> msg_friend/src/dao/messages.rs:167:14
[INFO] [stdout]     |
[INFO] [stdout] 167 | pub async fn mark_read(_pool: &Pool<MySql>, _msg_id: i64, _ts: i64) -> Result<u64> {
[INFO] [stdout]     |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `recall_message` is never used
[INFO] [stdout]    --> msg_friend/src/dao/messages.rs:172:14
[INFO] [stdout]     |
[INFO] [stdout] 172 | pub async fn recall_message(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `copy_message_as_forward` is never used
[INFO] [stdout]    --> msg_friend/src/dao/messages.rs:182:14
[INFO] [stdout]     |
[INFO] [stdout] 182 | pub async fn copy_message_as_forward(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `kafka`, `shard_index`, and `shard_total` are never read
[INFO] [stdout]   --> msg_friend/src/server/mod.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct Services {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 31 |     kafka: Option<Arc<KafkaInstanceService>>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 32 |     shard_index: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 33 |     shard_total: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Services` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `kafka`, `shard_index`, and `shard_total` are never used
[INFO] [stdout]   --> msg_friend/src/server/mod.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl Services {
[INFO] [stdout]    | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn kafka(&self) -> Option<&Arc<KafkaInstanceService>> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn shard_index(&self) -> u32 {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn shard_total(&self) -> u32 {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `apply_schema_from_ddl` is never used
[INFO] [stdout]  --> friend_service/src/db/mod.rs:9:14
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub async fn apply_schema_from_ddl(pool: &Arc<MySqlPool>, ddl: &str) -> Result<()> {
[INFO] [stdout]   |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EliasFano` is never constructed
[INFO] [stdout]  --> friend_service/src/db/elias_fano.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct EliasFano {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> friend_service/src/db/elias_fano.rs:17:12
[INFO] [stdout]     |
[INFO] [stdout]  15 | impl EliasFano {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout]  16 |     /// 由**严格递增**的去重数组构建；U 取 `max(x)+1`
[INFO] [stdout]  17 |     pub fn from_sorted(sorted: &[u64]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  79 |     pub fn len(&self) -> usize {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  87 |     pub fn max_value(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn iter(&self) -> EliasFanoIter<'_> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn contains(&self, target: u64) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn to_vec(&self) -> Vec<u64> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EliasFanoIter` is never constructed
[INFO] [stdout]    --> friend_service/src/db/elias_fano.rs:127:12
[INFO] [stdout]     |
[INFO] [stdout] 127 | pub struct EliasFanoIter<'a> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `FriendId` is never used
[INFO] [stdout]  --> friend_service/src/db/friend_list_ef.rs:9:10
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub type FriendId = u64;
[INFO] [stdout]   |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RelationError` is never used
[INFO] [stdout]   --> friend_service/src/db/friend_list_ef.rs:12:10
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub enum RelationError {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FriendListEf` is never constructed
[INFO] [stdout]   --> friend_service/src/db/friend_list_ef.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct FriendListEf {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> friend_service/src/db/friend_list_ef.rs:51:12
[INFO] [stdout]     |
[INFO] [stdout]  49 | impl FriendListEf {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout]  50 |     #[inline]
[INFO] [stdout]  51 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  66 |     fn smallvec_remove_one(v: &mut SmallVec<[FriendId; 8]>, x: FriendId) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  77 |     fn smallvec_contains(v: &SmallVec<[FriendId; 8]>, x: FriendId) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     fn clear_alias_deltas_for(&self, uid: FriendId) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn set_alias<S: Into<String>>(
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn get_alias(&self, other: UID) -> Result<Option<String>, RelationError> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 134 |     pub fn contains(&self, other: UID) -> Result<bool, RelationError> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn set_base_from_sorted(&self, sorted_unique: &[FriendId]) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn add(&self, other: UID) -> Result<bool, RelationError> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 200 |     pub fn add_with_alias<S: Into<String>>(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 217 |     pub fn remove(&self, other: UID) -> Result<bool, RelationError> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 241 |     pub fn snapshot_all(&self) -> Vec<FriendId> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 292 |     pub fn snapshot_all_detailed(&self) -> Vec<(FriendId, Option<String>)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 315 |     pub fn get_page(&self, page: usize, page_size: usize) -> Vec<FriendId> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 326 |     pub fn get_page_detailed(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 341 |     pub fn online_with_global(&self, global_online: &RB64) -> Vec<FriendId> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 354 |     pub fn maybe_compact(&self, add_thresh: usize, del_thresh: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 409 |     pub fn base_len(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 413 |     pub fn delta_add_len(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 417 |     pub fn delta_del_len(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 421 |     pub fn alias_add_len(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 425 |     pub fn alias_del_len(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `rt` and `persist` are never read
[INFO] [stdout]   --> friend_service/src/hot_shard_store.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub struct HotShardStore<K, V>
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 46 |     rt: Handle,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 47 |     persist: Option<PersistFn<K, V>>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `insert_cold`, `contains_key`, `len`, and `hot_cache` are never used
[INFO] [stdout]    --> friend_service/src/hot_shard_store.rs:88:12
[INFO] [stdout]     |
[INFO] [stdout]  50 | / impl<K, V> HotShardStore<K, V>
[INFO] [stdout]  51 | | where
[INFO] [stdout]  52 | |     K: Eq + Hash + Clone + Send + Sync + 'static,
[INFO] [stdout]  53 | |     V: Clone + Send + Sync + 'static,
[INFO] [stdout]     | |_____________________________________- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  88 |       pub fn insert_cold(&self, key: K, value: V) {
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |       pub fn contains_key(&self, key: &K) -> bool {
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |       pub fn len(&self) -> usize {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |       pub fn hot_cache(&self) -> &SegmentedCache<K, ()> {
[INFO] [stdout]     |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `persist` is never used
[INFO] [stdout]    --> friend_service/src/hot_shard_store.rs:248:12
[INFO] [stdout]     |
[INFO] [stdout] 208 | / impl<K, V> Builder<K, V>
[INFO] [stdout] 209 | | where
[INFO] [stdout] 210 | |     K: Eq + Hash + Clone + Send + Sync + 'static,
[INFO] [stdout] 211 | |     V: Clone + Send + Sync + 'static,
[INFO] [stdout]     | |_____________________________________- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 248 |       pub fn persist(mut self, persist: PersistFn<K, V>) -> Self {
[INFO] [stdout]     |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `with_chunk` are never used
[INFO] [stdout]   --> friend_service/src/store/mysql.rs:65:12
[INFO] [stdout]    |
[INFO] [stdout] 63 | impl FriendStorage {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 64 |     /// 使用全局连接池
[INFO] [stdout] 65 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 78 |     pub fn with_chunk(mut self, n: usize) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `touch`, `is_hot`, `warmup`, and `shard_count` are never used
[INFO] [stdout]    --> group_service/src/hot_cold.rs:66:12
[INFO] [stdout]     |
[INFO] [stdout]  64 | impl<S: GroupStorage> HotColdFacade<S> {
[INFO] [stdout]     | -------------------------------------- associated items in this implementation
[INFO] [stdout]  65 |     /// 旧签名：快速构造（保留兼容）
[INFO] [stdout]  66 |     pub fn new(map: Arc<ShardMap>, storage: Arc<S>, hot_capacity: u64, hot_tti_secs: u64) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |     pub fn touch(&self, gid: GroupId) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn is_hot(&self, gid: GroupId) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub async fn warmup(&self, gids: &[GroupId]) {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 352 |     pub fn shard_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> group_service/src/member/list_wrapper.rs:128:12
[INFO] [stdout]     |
[INFO] [stdout]  16 | impl MemberListWrapper {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn add_many(&self, list: Vec<MemberRef>) -> Result<(), MemberListError> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 208 |     pub fn get_alias(&self, uid: UID) -> Result<Option<String>, MemberListError> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 215 |     pub fn get_role(&self, uid: UID) -> Result<GroupRoleType, MemberListError> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn is_owner(&self, uid: UID) -> Result<bool, MemberListError> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 229 |     pub fn owner_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 322 |     pub fn contains(&self, uid: UID) -> Result<bool, MemberListError> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub fn clear(&self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `per_group_shard` is never read
[INFO] [stdout]   --> group_service/src/member/shard_map.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub struct ShardMap {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 38 |     per_group_shard: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ShardMap` 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 `shard_count`, `get_all_arc`, and `set_page_size_bounds` are never used
[INFO] [stdout]    --> group_service/src/member/shard_map.rs:95:12
[INFO] [stdout]     |
[INFO] [stdout]  52 | impl ShardMap {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  95 |     pub fn shard_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 298 |     pub fn get_all_arc(&self, gid: GroupId) -> Option<Arc<[MemberRef]>> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 367 |     pub fn set_page_size_bounds(&mut self, min_size: usize, max_size: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `invalidate` and `touch` are never used
[INFO] [stdout]   --> group_service/src/profile/cache.rs:92:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl<S: GroupProfileStorage> GroupProfileCache<S> {
[INFO] [stdout]    | ------------------------------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 92 |     pub fn invalidate(&self, gid: i64) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 96 |     pub fn touch(&self, gid: i64) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `with_chunk_size` and `stream_all_members` are never used
[INFO] [stdout]    --> group_service/src/store/mysql.rs:32:12
[INFO] [stdout]     |
[INFO] [stdout]  22 | impl MySqlStore {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  32 |     pub fn with_chunk_size(mut self, n: usize) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub async fn stream_all_members<F>(&self, gid: GroupId, mut handle: F) -> Result<()>
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `first` is never read
[INFO] [stdout]    --> user_service/src/service/user_service_impl.rs:774:13
[INFO] [stdout]     |
[INFO] [stdout] 774 |             first = false;
[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: struct `StatsSnapshot` is never constructed
[INFO] [stdout]   --> user_service/src/hot_cold.rs:74:12
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub struct StatsSnapshot {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `snapshot` is never used
[INFO] [stdout]    --> user_service/src/hot_cold.rs:112:8
[INFO] [stdout]     |
[INFO] [stdout] 104 | impl Stats {
[INFO] [stdout]     | ---------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 112 |     fn snapshot(&self) -> StatsSnapshot {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `stats` and `invalidate_by_id` are never used
[INFO] [stdout]    --> user_service/src/hot_cold.rs:394:12
[INFO] [stdout]     |
[INFO] [stdout] 358 | / impl<R, D, N> ClientHot<R, D, N>
[INFO] [stdout] 359 | | where
[INFO] [stdout] 360 | |     R: ClientReadRepo + Send + Sync + 'static,
[INFO] [stdout] 361 | |     D: DirectoryReadRepo + Send + Sync + 'static,
[INFO] [stdout] 362 | |     N: Normalizer,
[INFO] [stdout]     | |__________________- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 394 |       pub fn stats(&self) -> StatsSnapshot {
[INFO] [stdout]     |              ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 765 |       pub async fn invalidate_by_id(&self, id: i64) {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> user_service/src/online_store.rs:53:12
[INFO] [stdout]     |
[INFO] [stdout]  35 | impl OnlineStore {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  53 |     pub fn shard_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn remove(&self, uid: UID) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     pub fn insert_many<I>(&self, ids: I)
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 146 |     pub fn remove_many<I>(&self, ids: I)
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     pub fn len(&self) -> u64 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 198 |     pub fn len_by_shard(&self, idx: usize) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 208 |     pub fn with_shard_map<F, R>(&self, idx: usize, f: F) -> Option<R>
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 219 |     pub fn shard_snapshot(&self, idx: usize) -> Option<Vec<u64>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `first` is never read
[INFO] [stdout]    --> user_service/src/service/user_service_impl.rs:774:13
[INFO] [stdout]     |
[INFO] [stdout] 774 |             first = false;
[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: struct `StatsSnapshot` is never constructed
[INFO] [stdout]   --> user_service/src/hot_cold.rs:74:12
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub struct StatsSnapshot {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `snapshot` is never used
[INFO] [stdout]    --> user_service/src/hot_cold.rs:112:8
[INFO] [stdout]     |
[INFO] [stdout] 104 | impl Stats {
[INFO] [stdout]     | ---------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 112 |     fn snapshot(&self) -> StatsSnapshot {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `stats` and `invalidate_by_id` are never used
[INFO] [stdout]    --> user_service/src/hot_cold.rs:394:12
[INFO] [stdout]     |
[INFO] [stdout] 358 | / impl<R, D, N> ClientHot<R, D, N>
[INFO] [stdout] 359 | | where
[INFO] [stdout] 360 | |     R: ClientReadRepo + Send + Sync + 'static,
[INFO] [stdout] 361 | |     D: DirectoryReadRepo + Send + Sync + 'static,
[INFO] [stdout] 362 | |     N: Normalizer,
[INFO] [stdout]     | |__________________- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 394 |       pub fn stats(&self) -> StatsSnapshot {
[INFO] [stdout]     |              ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 765 |       pub async fn invalidate_by_id(&self, id: i64) {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> user_service/src/online_store.rs:53:12
[INFO] [stdout]     |
[INFO] [stdout]  35 | impl OnlineStore {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  53 |     pub fn shard_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn remove(&self, uid: UID) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     pub fn insert_many<I>(&self, ids: I)
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 146 |     pub fn remove_many<I>(&self, ids: I)
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     pub fn len(&self) -> u64 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 198 |     pub fn len_by_shard(&self, idx: usize) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 208 |     pub fn with_shard_map<F, R>(&self, idx: usize, f: F) -> Option<R>
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 219 |     pub fn shard_snapshot(&self, idx: usize) -> Option<Vec<u64>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 47s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: num-bigint-dig v0.8.4
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`
[INFO] running `Command { std: "docker" "inspect" "4579806b980f646f0771d2a9102c2b38148754dc62e55714d96fb4d07d1ce7b6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4579806b980f646f0771d2a9102c2b38148754dc62e55714d96fb4d07d1ce7b6", kill_on_drop: false }`
[INFO] [stdout] 4579806b980f646f0771d2a9102c2b38148754dc62e55714d96fb4d07d1ce7b6
