[INFO] fetching crate firecloud-cli 0.2.0...
[INFO] checking firecloud-cli-0.2.0 against master#cf79d034aa3d8f396d407aafce6f1ccd818e710e for pr-155657
[INFO] extracting crate firecloud-cli 0.2.0 into /workspace/builds/worker-3-tc1/source
[INFO] started tweaking crates.io crate firecloud-cli 0.2.0
[INFO] finished tweaking crates.io crate firecloud-cli 0.2.0
[INFO] tweaked toml for crates.io crate firecloud-cli 0.2.0 written to /workspace/builds/worker-3-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate firecloud-cli 0.2.0 on toolchain cf79d034aa3d8f396d407aafce6f1ccd818e710e
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+cf79d034aa3d8f396d407aafce6f1ccd818e710e" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate firecloud-cli 0.2.0 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" "+cf79d034aa3d8f396d407aafce6f1ccd818e710e" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded rtoolbox v0.0.3
[INFO] [stderr]   Downloaded libp2p v0.54.1
[INFO] [stderr]   Downloaded rw-stream-sink v0.4.0
[INFO] [stderr]   Downloaded data-encoding-macro v0.1.18
[INFO] [stderr]   Downloaded data-encoding-macro-internal v0.1.16
[INFO] [stderr]   Downloaded tracing v0.1.43
[INFO] [stderr]   Downloaded unsigned-varint v0.8.0
[INFO] [stderr]   Downloaded multiaddr v0.18.2
[INFO] [stderr]   Downloaded multihash v0.19.3
[INFO] [stderr]   Downloaded match-lookup v0.1.1
[INFO] [stderr]   Downloaded libp2p-yamux v0.46.0
[INFO] [stderr]   Downloaded unsigned-varint v0.7.2
[INFO] [stderr]   Downloaded libp2p-upnp v0.3.0
[INFO] [stderr]   Downloaded libp2p-swarm-derive v0.35.0
[INFO] [stderr]   Downloaded libp2p-identity v0.2.12
[INFO] [stderr]   Downloaded yamux v0.12.1
[INFO] [stderr]   Downloaded multistream-select v0.13.0
[INFO] [stderr]   Downloaded libp2p-tcp v0.42.0
[INFO] [stderr]   Downloaded tracing-core v0.1.35
[INFO] [stderr]   Downloaded yamux v0.13.8
[INFO] [stderr]   Downloaded libp2p-core v0.42.0
[INFO] [stderr]   Downloaded igd-next v0.14.3
[INFO] [stderr]   Downloaded if-watch v3.2.1
[INFO] [stderr]   Downloaded futures-bounded v0.2.4
[INFO] [stderr]   Downloaded quick-protobuf v0.8.1
[INFO] [stderr]   Downloaded quick-protobuf-codec v0.3.1
[INFO] [stderr]   Downloaded libp2p-tls v0.5.0
[INFO] [stderr]   Downloaded windows-core v0.53.0
[INFO] [stderr]   Downloaded rtnetlink v0.13.1
[INFO] [stderr]   Downloaded if-addrs v0.10.2
[INFO] [stderr]   Downloaded libp2p-request-response v0.27.0
[INFO] [stderr]   Downloaded cbor4ii v0.3.3
[INFO] [stderr]   Downloaded libp2p-quic v0.11.1
[INFO] [stderr]   Downloaded libp2p-swarm v0.45.1
[INFO] [stderr]   Downloaded libp2p-relay v0.18.0
[INFO] [stderr]   Downloaded rustls-pki-types v1.13.1
[INFO] [stderr]   Downloaded libp2p-ping v0.45.0
[INFO] [stderr]   Downloaded libp2p-metrics v0.15.0
[INFO] [stderr]   Downloaded prometheus-client-derive-encode v0.4.2
[INFO] [stderr]   Downloaded rpassword v7.4.0
[INFO] [stderr]   Downloaded rcgen v0.11.3
[INFO] [stderr]   Downloaded libp2p-noise v0.45.0
[INFO] [stderr]   Downloaded chacha20poly1305 v0.10.1
[INFO] [stderr]   Downloaded prometheus-client v0.22.3
[INFO] [stderr]   Downloaded futures-ticker v0.0.3
[INFO] [stderr]   Downloaded libp2p-dcutr v0.12.0
[INFO] [stderr]   Downloaded libp2p-dns v0.42.0
[INFO] [stderr]   Downloaded libp2p-connection-limits v0.4.0
[INFO] [stderr]   Downloaded libp2p-identify v0.45.0
[INFO] [stderr]   Downloaded libp2p-mdns v0.46.0
[INFO] [stderr]   Downloaded libp2p-allow-block-list v0.4.0
[INFO] [stderr]   Downloaded firecloud-storage v0.2.0
[INFO] [stderr]   Downloaded firecloud-crypto v0.2.0
[INFO] [stderr]   Downloaded fs2 v0.4.3
[INFO] [stderr]   Downloaded firecloud-core v0.2.0
[INFO] [stderr]   Downloaded libp2p-kad v0.46.2
[INFO] [stderr]   Downloaded hickory-resolver v0.24.4
[INFO] [stderr]   Downloaded libp2p-gossipsub v0.47.0
[INFO] [stderr]   Downloaded directories v5.0.1
[INFO] [stderr]   Downloaded fastcdc v3.2.1
[INFO] [stderr]   Downloaded firecloud-net v0.2.0
[INFO] [stderr]   Downloaded comfy-table v7.2.2
[INFO] [stderr]   Downloaded hickory-proto v0.24.4
[INFO] [stderr]   Downloaded sled v0.34.7
[INFO] [stderr]   Downloaded snow v0.9.6
[INFO] [stderr]   Downloaded windows v0.53.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+cf79d034aa3d8f396d407aafce6f1ccd818e710e" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 998ca0b463d9c6ccc24ade54f7980a89b97cdd771509eacc0994d2bfe4cdf9e9
[INFO] running `Command { std: "docker" "start" "-a" "998ca0b463d9c6ccc24ade54f7980a89b97cdd771509eacc0994d2bfe4cdf9e9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "998ca0b463d9c6ccc24ade54f7980a89b97cdd771509eacc0994d2bfe4cdf9e9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "998ca0b463d9c6ccc24ade54f7980a89b97cdd771509eacc0994d2bfe4cdf9e9", kill_on_drop: false }`
[INFO] [stdout] 998ca0b463d9c6ccc24ade54f7980a89b97cdd771509eacc0994d2bfe4cdf9e9
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+cf79d034aa3d8f396d407aafce6f1ccd818e710e" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 86e292e1f59d6ae81f979e3821ffc5ca2357573c001cf5b1bdfeea339b214193
[INFO] running `Command { std: "docker" "start" "-a" "86e292e1f59d6ae81f979e3821ffc5ca2357573c001cf5b1bdfeea339b214193", kill_on_drop: false }`
[INFO] [stderr]    Compiling quote v1.0.42
[INFO] [stderr]     Checking subtle v2.6.1
[INFO] [stderr]    Compiling zerocopy v0.8.31
[INFO] [stderr]     Checking futures-io v0.3.31
[INFO] [stderr]     Checking futures-core v0.3.31
[INFO] [stderr]     Checking futures-sink v0.3.31
[INFO] [stderr]     Checking futures-task v0.3.31
[INFO] [stderr]    Compiling libc v0.2.178
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking crypto-common v0.1.7
[INFO] [stderr]     Checking num_cpus v1.17.0
[INFO] [stderr]     Checking tracing-core v0.1.35
[INFO] [stderr]    Compiling curve25519-dalek v4.1.3
[INFO] [stderr]     Checking mio v1.1.1
[INFO] [stderr]     Checking data-encoding v2.9.0
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]     Checking arrayref v0.3.9
[INFO] [stderr]     Checking unsigned-varint v0.8.0
[INFO] [stderr]     Checking quick-protobuf v0.8.1
[INFO] [stderr]     Checking core2 v0.4.0
[INFO] [stderr]     Checking const-str v0.4.3
[INFO] [stderr]     Checking futures-channel v0.3.31
[INFO] [stderr]    Compiling syn v2.0.111
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking bs58 v0.5.1
[INFO] [stderr]     Checking base-x v0.2.11
[INFO] [stderr]     Checking futures-timer v3.0.3
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking web-time v1.1.0
[INFO] [stderr]     Checking unsigned-varint v0.7.2
[INFO] [stderr]     Checking void v1.0.2
[INFO] [stderr]     Checking either v1.15.0
[INFO] [stderr]     Checking getrandom v0.3.4
[INFO] [stderr]     Checking lru v0.12.5
[INFO] [stderr]    Compiling time-core v0.1.6
[INFO] [stderr]    Compiling num-conv v0.1.0
[INFO] [stderr]     Checking deranged v0.5.5
[INFO] [stderr]     Checking anyhow v1.0.100
[INFO] [stderr]     Checking sha2 v0.10.9
[INFO] [stderr]     Checking hmac v0.12.1
[INFO] [stderr]     Checking nom v7.1.3
[INFO] [stderr]    Compiling rustls v0.23.35
[INFO] [stderr]     Checking rand_core v0.9.3
[INFO] [stderr]     Checking socket2 v0.5.10
[INFO] [stderr]     Checking nix v0.26.4
[INFO] [stderr]     Checking hkdf v0.12.4
[INFO] [stderr]    Compiling quinn-udp v0.5.14
[INFO] [stderr]     Checking spin v0.5.2
[INFO] [stderr]    Compiling rustix v1.1.2
[INFO] [stderr]     Checking untrusted v0.7.1
[INFO] [stderr]    Compiling crunchy v0.2.4
[INFO] [stderr]    Compiling time-macros v0.2.24
[INFO] [stderr]     Checking pem v3.0.6
[INFO] [stderr]    Compiling quinn v0.11.9
[INFO] [stderr]    Compiling snow v0.9.6
[INFO] [stderr]     Checking inout v0.1.4
[INFO] [stderr]    Compiling prometheus-client v0.22.3
[INFO] [stderr]     Checking lru-slab v0.1.2
[INFO] [stderr]    Compiling unicode-segmentation v1.12.0
[INFO] [stderr]     Checking rustc-hash v2.1.1
[INFO] [stderr]    Compiling parking_lot_core v0.8.6
[INFO] [stderr]     Checking constant_time_eq v0.3.1
[INFO] [stderr]     Checking nohash-hasher v0.2.0
[INFO] [stderr]     Checking linked-hash-map v0.5.6
[INFO] [stderr]     Checking uuid v1.19.0
[INFO] [stderr]     Checking universal-hash v0.5.1
[INFO] [stderr]     Checking instant v0.1.13
[INFO] [stderr]     Checking base64ct v1.8.0
[INFO] [stderr]     Checking dtoa v1.0.10
[INFO] [stderr]    Compiling zstd-safe v7.2.4
[INFO] [stderr]     Checking opaque-debug v0.3.1
[INFO] [stderr]     Checking poly1305 v0.8.0
[INFO] [stderr]     Checking uint v0.9.5
[INFO] [stderr]     Checking regex v1.12.2
[INFO] [stderr]     Checking lru-cache v0.1.2
[INFO] [stderr]     Checking blake2 v0.10.6
[INFO] [stderr]     Checking aead v0.5.2
[INFO] [stderr]    Compiling unicase v2.8.1
[INFO] [stderr]     Checking password-hash v0.5.0
[INFO] [stderr]     Checking ciborium-io v0.2.2
[INFO] [stderr]    Compiling portable-atomic v1.11.1
[INFO] [stderr]     Checking hex_fmt v0.3.0
[INFO] [stderr]    Compiling convert_case v0.10.0
[INFO] [stderr]    Compiling serde_json v1.0.145
[INFO] [stderr]    Compiling document-features v0.2.12
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]     Checking parking_lot v0.11.2
[INFO] [stderr]     Checking signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling mime_guess v2.0.5
[INFO] [stderr]     Checking fxhash v0.2.1
[INFO] [stderr]     Checking fs2 v0.4.3
[INFO] [stderr]     Checking argon2 v0.5.3
[INFO] [stderr]    Compiling cc v1.2.49
[INFO] [stderr]     Checking twox-hash v2.1.2
[INFO] [stderr]     Checking lz4_flex v0.11.5
[INFO] [stderr]     Checking sled v0.34.7
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]     Checking rtoolbox v0.0.3
[INFO] [stderr]     Checking fastcdc v3.2.1
[INFO] [stderr]     Checking number_prefix v0.4.0
[INFO] [stderr]     Checking shell-words v1.1.1
[INFO] [stderr]     Checking rpassword v7.4.0
[INFO] [stderr]     Checking directories v5.0.1
[INFO] [stderr]     Checking humantime v2.3.0
[INFO] [stderr]     Checking colored v3.1.1
[INFO] [stderr]     Checking rusticata-macros v4.1.0
[INFO] [stderr]     Checking time v0.3.44
[INFO] [stderr]     Checking indicatif v0.17.11
[INFO] [stderr]     Checking tempfile v3.23.0
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling ring v0.16.20
[INFO] [stderr]    Compiling zstd-sys v2.0.16+zstd.1.5.7
[INFO] [stderr]    Compiling blake3 v1.8.2
[INFO] [stderr]     Checking yasna v0.5.2
[INFO] [stderr]    Compiling match-lookup v0.1.1
[INFO] [stderr]     Checking base256emoji v1.0.2
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling zerocopy-derive v0.8.31
[INFO] [stderr]    Compiling zeroize_derive v1.4.2
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling thiserror-impl v2.0.17
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling curve25519-dalek-derive v0.1.1
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling pin-project-internal v1.1.10
[INFO] [stderr]    Compiling data-encoding-macro-internal v0.1.16
[INFO] [stderr]    Compiling libp2p-swarm-derive v0.35.0
[INFO] [stderr]    Compiling asn1-rs-impl v0.2.0
[INFO] [stderr]     Checking zeroize v1.8.2
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]     Checking rustls-pki-types v1.13.1
[INFO] [stderr]    Compiling asn1-rs-derive v0.5.1
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling enum-as-inner v0.6.1
[INFO] [stderr]     Checking rustls-webpki v0.101.7
[INFO] [stderr]     Checking data-encoding-macro v0.1.18
[INFO] [stderr]     Checking multibase v0.9.2
[INFO] [stderr]     Checking cipher v0.4.4
[INFO] [stderr]     Checking rustls-webpki v0.103.8
[INFO] [stderr]     Checking rcgen v0.11.3
[INFO] [stderr]     Checking thiserror v2.0.17
[INFO] [stderr]    Compiling prometheus-client-derive-encode v0.4.2
[INFO] [stderr]     Checking chacha20 v0.9.1
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking pin-project v1.1.10
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]     Checking chacha20poly1305 v0.10.1
[INFO] [stderr]     Checking netlink-packet-utils v0.5.2
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]    Compiling clap_derive v4.5.49
[INFO] [stderr]     Checking tracing v0.1.43
[INFO] [stderr]     Checking zstd v0.13.3
[INFO] [stderr]     Checking dialoguer v0.11.0
[INFO] [stderr]     Checking yoke v0.8.1
[INFO] [stderr]     Checking asn1-rs v0.6.2
[INFO] [stderr]     Checking netlink-packet-core v0.7.0
[INFO] [stderr]     Checking zerovec v0.11.5
[INFO] [stderr]     Checking zerotrie v0.2.3
[INFO] [stderr]     Checking netlink-packet-route v0.17.1
[INFO] [stderr]     Checking ed25519-dalek v2.2.0
[INFO] [stderr]     Checking x25519-dalek v2.0.1
[INFO] [stderr]     Checking tracing-subscriber v0.3.22
[INFO] [stderr]     Checking derive_more v2.1.1
[INFO] [stderr]     Checking crossterm v0.29.0
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking tinystr v0.8.2
[INFO] [stderr]     Checking potential_utf v0.1.4
[INFO] [stderr]     Checking icu_collections v2.1.1
[INFO] [stderr]     Checking icu_locale_core v2.1.1
[INFO] [stderr]     Checking comfy-table v7.2.2
[INFO] [stderr]     Checking der-parser v9.0.0
[INFO] [stderr]     Checking oid-registry v0.7.1
[INFO] [stderr]     Checking bytes v1.11.0
[INFO] [stderr]     Checking multihash v0.19.3
[INFO] [stderr]     Checking chrono v0.4.42
[INFO] [stderr]     Checking cbor4ii v0.3.3
[INFO] [stderr]     Checking toml_datetime v0.6.11
[INFO] [stderr]     Checking serde_spanned v0.6.9
[INFO] [stderr]     Checking bincode v1.3.3
[INFO] [stderr]     Checking clap v4.5.53
[INFO] [stderr]     Checking icu_provider v2.1.1
[INFO] [stderr]     Checking toml_edit v0.22.27
[INFO] [stderr]     Checking icu_properties v2.1.1
[INFO] [stderr]     Checking icu_normalizer v2.1.1
[INFO] [stderr]     Checking x509-parser v0.16.0
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking futures-bounded v0.2.4
[INFO] [stderr]     Checking tokio v1.48.0
[INFO] [stderr]     Checking asynchronous-codec v0.7.0
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking half v2.7.1
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking rw-stream-sink v0.4.0
[INFO] [stderr]     Checking multistream-select v0.13.0
[INFO] [stderr]     Checking futures-ticker v0.0.3
[INFO] [stderr]     Checking quick-protobuf-codec v0.3.1
[INFO] [stderr]     Checking ciborium-ll v0.2.2
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking futures-rustls v0.26.0
[INFO] [stderr]     Checking ciborium v0.2.2
[INFO] [stderr]     Checking rand v0.9.2
[INFO] [stderr]     Checking firecloud-core v0.2.0
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking quinn-proto v0.11.13
[INFO] [stderr]     Checking yamux v0.13.8
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking url v2.5.7
[INFO] [stderr]     Checking libp2p-identity v0.2.12
[INFO] [stderr]     Checking yamux v0.12.1
[INFO] [stderr]     Checking firecloud-crypto v0.2.0
[INFO] [stderr]     Checking multiaddr v0.18.2
[INFO] [stderr]     Checking toml v0.8.23
[INFO] [stderr]     Checking libp2p-core v0.42.0
[INFO] [stderr]     Checking libp2p-tls v0.5.0
[INFO] [stderr]     Checking libp2p-noise v0.45.0
[INFO] [stderr]     Checking libp2p-yamux v0.46.0
[INFO] [stderr]     Checking libp2p-swarm v0.45.1
[INFO] [stderr]     Checking netlink-sys v0.8.7
[INFO] [stderr]     Checking hickory-proto v0.24.4
[INFO] [stderr]     Checking firecloud-storage v0.2.0
[INFO] [stderr]     Checking netlink-proto v0.11.5
[INFO] [stderr]     Checking rtnetlink v0.13.1
[INFO] [stderr]     Checking if-watch v3.2.1
[INFO] [stderr]     Checking libp2p-quic v0.11.1
[INFO] [stderr]     Checking libp2p-tcp v0.42.0
[INFO] [stderr]     Checking libp2p-allow-block-list v0.4.0
[INFO] [stderr]     Checking libp2p-gossipsub v0.47.0
[INFO] [stderr]     Checking libp2p-relay v0.18.0
[INFO] [stderr]     Checking libp2p-connection-limits v0.4.0
[INFO] [stderr]     Checking libp2p-kad v0.46.2
[INFO] [stderr]     Checking libp2p-identify v0.45.0
[INFO] [stderr]     Checking libp2p-dcutr v0.12.0
[INFO] [stderr]     Checking libp2p-request-response v0.27.0
[INFO] [stderr]     Checking libp2p-ping v0.45.0
[INFO] [stderr]     Checking hickory-resolver v0.24.4
[INFO] [stderr]     Checking libp2p-mdns v0.46.0
[INFO] [stderr]     Checking libp2p-dns v0.42.0
[INFO] [stderr]     Checking libp2p v0.54.1
[INFO] [stderr]     Checking firecloud-net v0.2.0
[INFO] [stderr]     Checking firecloud-cli v0.2.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `firecloud_net::FireCloudNode`
[INFO] [stdout]  --> src/commands/setup.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use firecloud_net::FireCloudNode;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]    --> src/commands/demo.rs:157:9
[INFO] [stdout]     |
[INFO] [stdout] 157 |     use std::collections::HashMap;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow`
[INFO] [stdout]  --> src/commands/friend.rs:2:14
[INFO] [stdout]   |
[INFO] [stdout] 2 | use anyhow::{anyhow, Context, Result};
[INFO] [stdout]   |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow`
[INFO] [stdout]  --> src/commands/message.rs:3:14
[INFO] [stdout]   |
[INFO] [stdout] 3 | use anyhow::{anyhow, Context, Result};
[INFO] [stdout]   |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tracing::info`
[INFO] [stdout]  --> src/commands/storage.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use tracing::info;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `firecloud_net::FireCloudNode`
[INFO] [stdout]  --> src/commands/setup.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use firecloud_net::FireCloudNode;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]    --> src/commands/demo.rs:157:9
[INFO] [stdout]     |
[INFO] [stdout] 157 |     use std::collections::HashMap;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow`
[INFO] [stdout]  --> src/commands/friend.rs:2:14
[INFO] [stdout]   |
[INFO] [stdout] 2 | use anyhow::{anyhow, Context, Result};
[INFO] [stdout]   |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow`
[INFO] [stdout]  --> src/commands/message.rs:3:14
[INFO] [stdout]   |
[INFO] [stdout] 3 | use anyhow::{anyhow, Context, Result};
[INFO] [stdout]   |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tracing::info`
[INFO] [stdout]  --> src/commands/storage.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use tracing::info;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `data_dir`
[INFO] [stdout]  --> src/commands/network.rs:8:18
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub async fn run(data_dir: PathBuf, live: bool) -> Result<()> {
[INFO] [stdout]   |                  ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_data_dir`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `peers_found` is never read
[INFO] [stdout]    --> src/commands/upload.rs:187:27
[INFO] [stdout]     |
[INFO] [stdout] 187 |     let mut peers_found = false;  // Track if any peers were found
[INFO] [stdout]     |                           ^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 225 |         peers_found = true;
[INFO] [stdout]     |         ------------------ `peers_found` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `request_id`
[INFO] [stdout]    --> src/commands/node.rs:503:52
[INFO] [stdout]     |
[INFO] [stdout] 503 |                 NodeEvent::MessageResponse { peer, request_id, response } => {
[INFO] [stdout]     |                                                    ^^^^^^^^^^ help: try ignoring the field: `request_id: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `request_id`
[INFO] [stdout]    --> src/commands/node.rs:526:50
[INFO] [stdout]     |
[INFO] [stdout] 526 |                 NodeEvent::MessageFailed { peer, request_id, error } => {
[INFO] [stdout]     |                                                  ^^^^^^^^^^ help: try ignoring the field: `request_id: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `data_dir`
[INFO] [stdout]  --> src/commands/demo.rs:9:44
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub async fn demo_upload(file_path: &Path, data_dir: PathBuf) -> Result<()> {
[INFO] [stdout]   |                                            ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_data_dir`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `file_name`
[INFO] [stdout]    --> src/commands/demo.rs:281:5
[INFO] [stdout]     |
[INFO] [stdout] 281 |     file_name: &str,
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_file_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `file_size`
[INFO] [stdout]    --> src/commands/demo.rs:282:5
[INFO] [stdout]     |
[INFO] [stdout] 282 |     file_size: u64,
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_file_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `data_dir`
[INFO] [stdout]    --> src/commands/demo.rs:431:44
[INFO] [stdout]     |
[INFO] [stdout] 431 | pub async fn demo_network(live_view: bool, data_dir: PathBuf) -> Result<()> {
[INFO] [stdout]     |                                            ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_data_dir`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `data_dir`
[INFO] [stdout]    --> src/commands/demo.rs:558:60
[INFO] [stdout]     |
[INFO] [stdout] 558 | pub async fn demo_share(file_path: &Path, recipient: &str, data_dir: PathBuf) -> Result<()> {
[INFO] [stdout]     |                                                            ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_data_dir`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `file_size`
[INFO] [stdout]    --> src/commands/demo.rs:563:9
[INFO] [stdout]     |
[INFO] [stdout] 563 |     let file_size = metadata.len();
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_file_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `data_dir`
[INFO] [stdout]  --> src/commands/network.rs:8:18
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub async fn run(data_dir: PathBuf, live: bool) -> Result<()> {
[INFO] [stdout]   |                  ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_data_dir`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `peers_found` is never read
[INFO] [stdout]    --> src/commands/upload.rs:187:27
[INFO] [stdout]     |
[INFO] [stdout] 187 |     let mut peers_found = false;  // Track if any peers were found
[INFO] [stdout]     |                           ^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 225 |         peers_found = true;
[INFO] [stdout]     |         ------------------ `peers_found` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `request_id`
[INFO] [stdout]    --> src/commands/node.rs:503:52
[INFO] [stdout]     |
[INFO] [stdout] 503 |                 NodeEvent::MessageResponse { peer, request_id, response } => {
[INFO] [stdout]     |                                                    ^^^^^^^^^^ help: try ignoring the field: `request_id: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `request_id`
[INFO] [stdout]    --> src/commands/node.rs:526:50
[INFO] [stdout]     |
[INFO] [stdout] 526 |                 NodeEvent::MessageFailed { peer, request_id, error } => {
[INFO] [stdout]     |                                                  ^^^^^^^^^^ help: try ignoring the field: `request_id: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_daemon` is never used
[INFO] [stdout]   --> src/commands/node.rs:19:14
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub async fn run_daemon(
[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 `run` is never used
[INFO] [stdout]   --> src/commands/node.rs:83:14
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub async fn run(
[INFO] [stdout]    |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]  --> src/commands/chunk.rs:9:14
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub async fn run(file_path: PathBuf) -> Result<()> {
[INFO] [stdout]   |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `demo_upload` is never used
[INFO] [stdout]  --> src/commands/demo.rs:9:14
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub async fn demo_upload(file_path: &Path, data_dir: PathBuf) -> Result<()> {
[INFO] [stdout]   |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `novelty_1_network_discovery` is never used
[INFO] [stdout]   --> src/commands/demo.rs:47:10
[INFO] [stdout]    |
[INFO] [stdout] 47 | async fn novelty_1_network_discovery(node: &mut FireCloudNode) -> Result<(Vec<(libp2p::PeerId, Duration)>, Vec<(libp2p::PeerId, Dura...
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `novelty_4_compression` is never used
[INFO] [stdout]    --> src/commands/demo.rs:156:10
[INFO] [stdout]     |
[INFO] [stdout] 156 | async fn novelty_4_compression(file_path: &Path, file_name: &str, file_size: u64) -> Result<u64> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_shannon_entropy` is never used
[INFO] [stdout]    --> src/commands/demo.rs:237:4
[INFO] [stdout]     |
[INFO] [stdout] 237 | fn calculate_shannon_entropy(data: &[u8]) -> f64 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compress_lz4` is never used
[INFO] [stdout]    --> src/commands/demo.rs:262:4
[INFO] [stdout]     |
[INFO] [stdout] 262 | fn compress_lz4(data: &[u8]) -> Result<Vec<u8>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compress_zstd` is never used
[INFO] [stdout]    --> src/commands/demo.rs:269:4
[INFO] [stdout]     |
[INFO] [stdout] 269 | fn compress_zstd(data: &[u8], level: i32) -> Result<Vec<u8>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `novelty_3_erasure_placement` is never used
[INFO] [stdout]    --> src/commands/demo.rs:280:10
[INFO] [stdout]     |
[INFO] [stdout] 280 | async fn novelty_3_erasure_placement(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_upload_summary` is never used
[INFO] [stdout]    --> src/commands/demo.rs:384:4
[INFO] [stdout]     |
[INFO] [stdout] 384 | fn print_upload_summary(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `demo_network` is never used
[INFO] [stdout]    --> src/commands/demo.rs:431:14
[INFO] [stdout]     |
[INFO] [stdout] 431 | pub async fn demo_network(live_view: bool, data_dir: PathBuf) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `demo_benchmark` is never used
[INFO] [stdout]    --> src/commands/demo.rs:516:14
[INFO] [stdout]     |
[INFO] [stdout] 516 | pub async fn demo_benchmark(compare_dropbox: bool) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `demo_share` is never used
[INFO] [stdout]    --> src/commands/demo.rs:558:14
[INFO] [stdout]     |
[INFO] [stdout] 558 | pub async fn demo_share(file_path: &Path, recipient: &str, data_dir: PathBuf) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FriendStatus` is never used
[INFO] [stdout]   --> src/commands/friend.rs:53:10
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub enum FriendStatus {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Friend` is never constructed
[INFO] [stdout]   --> src/commands/friend.rs:65:12
[INFO] [stdout]    |
[INFO] [stdout] 65 | pub struct Friend {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FriendList` is never constructed
[INFO] [stdout]   --> src/commands/friend.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub struct FriendList {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/commands/friend.rs:81:12
[INFO] [stdout]     |
[INFO] [stdout]  79 | impl FriendList {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  80 |     /// Load friend list from disk
[INFO] [stdout]  81 |     pub fn load(data_dir: &PathBuf) -> Result<Self> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub fn save(&self, data_dir: &PathBuf) -> Result<()> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     pub fn add_friend(&mut self, peer_id: PeerId, name: Option<String>) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub fn accept_friend(&mut self, peer_id: PeerId) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub fn remove_friend(&mut self, peer_id: &PeerId) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn is_friend(&self, peer_id: &PeerId) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn find_friend(&self, identifier: &str) -> Option<&Friend> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 193 |     pub fn get_accepted_friends(&self) -> Vec<&Friend> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 200 |     pub fn get_pending_received(&self) -> Vec<&Friend> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 207 |     pub fn get_pending_sent(&self) -> Vec<&Friend> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn update_last_seen(&mut self, peer_id: &PeerId) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     pub fn increment_messages(&mut self, peer_id: &PeerId) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 228 |     fn get_local_peer_id(&self) -> Result<PeerId> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_friend_node` is never used
[INFO] [stdout]    --> src/commands/friend.rs:237:10
[INFO] [stdout]     |
[INFO] [stdout] 237 | async fn create_friend_node() -> Result<FireCloudNode> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_friend_command` is never used
[INFO] [stdout]    --> src/commands/friend.rs:249:14
[INFO] [stdout]     |
[INFO] [stdout] 249 | pub async fn handle_friend_command(cmd: FriendCommand, data_dir: PathBuf) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `health` is never used
[INFO] [stdout]  --> src/commands/health.rs:7:14
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub async fn health(_data_dir: &Path) -> Result<()> {
[INFO] [stdout]   |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]  --> src/commands/info.rs:7:14
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub async fn run(data_dir: PathBuf) -> Result<()> {
[INFO] [stdout]   |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]  --> src/commands/init.rs:8:14
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub async fn run(data_dir: PathBuf) -> Result<()> {
[INFO] [stdout]   |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]  --> src/commands/list.rs:8:14
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub async fn run(data_dir: PathBuf) -> Result<()> {
[INFO] [stdout]   |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_size` is never used
[INFO] [stdout]   --> src/commands/list.rs:44:4
[INFO] [stdout]    |
[INFO] [stdout] 44 | fn format_size(bytes: u64) -> String {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MESSAGE_SIZE` is never used
[INFO] [stdout]   --> src/commands/message.rs:21:7
[INFO] [stdout]    |
[INFO] [stdout] 21 | const MESSAGE_SIZE: usize = 1024;
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MIN_DELAY_MS` is never used
[INFO] [stdout]   --> src/commands/message.rs:24:7
[INFO] [stdout]    |
[INFO] [stdout] 24 | const MIN_DELAY_MS: u64 = 100;
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_DELAY_MS` is never used
[INFO] [stdout]   --> src/commands/message.rs:27:7
[INFO] [stdout]    |
[INFO] [stdout] 27 | const MAX_DELAY_MS: u64 = 500;
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Message` is never constructed
[INFO] [stdout]   --> src/commands/message.rs:73:12
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub struct Message {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DecryptedMessage` is never constructed
[INFO] [stdout]   --> src/commands/message.rs:97:12
[INFO] [stdout]    |
[INFO] [stdout] 97 | pub struct DecryptedMessage {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MessageStore` is never constructed
[INFO] [stdout]    --> src/commands/message.rs:108:12
[INFO] [stdout]     |
[INFO] [stdout] 108 | pub struct MessageStore {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/commands/message.rs:118:12
[INFO] [stdout]     |
[INFO] [stdout] 116 | impl MessageStore {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 117 |     /// Load message store from disk
[INFO] [stdout] 118 |     pub fn load(data_dir: &PathBuf) -> Result<Self> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn save(&self, data_dir: &PathBuf) -> Result<()> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 151 |     pub fn add_message(&mut self, message: Message) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn get_conversation(&self, peer_id: &PeerId, limit: usize) -> Vec<&Message> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn get_inbox(&self, limit: usize) -> Vec<&Message> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub fn mark_read(&mut self, message_id: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub fn mark_delivered(&mut self, message_id: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 206 |     pub fn clear_conversation(&mut self, peer_id: &PeerId) -> Result<usize> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 219 |     fn get_local_peer_id(&self) -> PeerId {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `encrypt_message` is never used
[INFO] [stdout]    --> src/commands/message.rs:226:8
[INFO] [stdout]     |
[INFO] [stdout] 226 | pub fn encrypt_message(content: &str, _recipient: &PeerId) -> Result<Vec<u8>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decrypt_message` is never used
[INFO] [stdout]    --> src/commands/message.rs:258:8
[INFO] [stdout]     |
[INFO] [stdout] 258 | pub fn decrypt_message(encrypted: &[u8], _sender: &PeerId) -> Result<String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_message_node` is never used
[INFO] [stdout]    --> src/commands/message.rs:286:10
[INFO] [stdout]     |
[INFO] [stdout] 286 | async fn create_message_node() -> Result<FireCloudNode> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_message_command` is never used
[INFO] [stdout]    --> src/commands/message.rs:298:14
[INFO] [stdout]     |
[INFO] [stdout] 298 | pub async fn handle_message_command(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]  --> src/commands/peers.rs:7:14
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub async fn run(_data_dir: PathBuf) -> Result<()> {
[INFO] [stdout]   |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `quota` is never used
[INFO] [stdout]  --> src/commands/quota.rs:8:14
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub async fn quota(data_dir: &Path) -> Result<()> {
[INFO] [stdout]   |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_quota` is never used
[INFO] [stdout]   --> src/commands/quota.rs:44:14
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub async fn set_quota(data_dir: &Path, limit_gb: f64) -> Result<()> {
[INFO] [stdout]    |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_bytes` is never used
[INFO] [stdout]   --> src/commands/quota.rs:58:4
[INFO] [stdout]    |
[INFO] [stdout] 58 | fn format_bytes(bytes: u64) -> String {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]  --> src/commands/status.rs:9:14
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub async fn run(data_dir: PathBuf) -> Result<()> {
[INFO] [stdout]   |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init` is never used
[INFO] [stdout]   --> src/commands/storage.rs:10:14
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub async fn init(data_dir: PathBuf, quota_gb: Option<u64>) -> Result<()> {
[INFO] [stdout]    |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `stats` is never used
[INFO] [stdout]   --> src/commands/storage.rs:88:14
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub async fn stats(data_dir: PathBuf) -> Result<()> {
[INFO] [stdout]    |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `list_providers` is never used
[INFO] [stdout]    --> src/commands/storage.rs:123:14
[INFO] [stdout]     |
[INFO] [stdout] 123 | pub async fn list_providers(_data_dir: PathBuf) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_header` is never used
[INFO] [stdout]  --> src/ui.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn print_header(title: &str) {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_box` is never used
[INFO] [stdout]   --> src/ui.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn print_box(title: &str, content: &[&str]) {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `success` is never used
[INFO] [stdout]   --> src/ui.rs:27:8
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub fn success(msg: &str) {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `info` is never used
[INFO] [stdout]   --> src/ui.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub fn info(msg: &str) {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `warning` is never used
[INFO] [stdout]   --> src/ui.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub fn warning(msg: &str) {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `error` is never used
[INFO] [stdout]   --> src/ui.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub fn error(msg: &str) {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `novelty` is never used
[INFO] [stdout]   --> src/ui.rs:47:8
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub fn novelty(number: u8, title: &str, content: &[&str]) {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_progress_bar` is never used
[INFO] [stdout]   --> src/ui.rs:57:8
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub fn create_progress_bar(total: u64, message: &str) -> ProgressBar {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_spinner` is never used
[INFO] [stdout]   --> src/ui.rs:70:8
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub fn create_spinner(message: &str) -> ProgressBar {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_comparison_table` is never used
[INFO] [stdout]   --> src/ui.rs:84:8
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub fn print_comparison_table(rows: Vec<(&str, &str, &str, &str)>) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_network_topology` is never used
[INFO] [stdout]    --> src/ui.rs:108:8
[INFO] [stdout]     |
[INFO] [stdout] 108 | pub fn print_network_topology(local_peers: &[(String, u32)], regional_peers: &[(String, u32)], global_peers: &[(String, u32)]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_piece_distribution` is never used
[INFO] [stdout]    --> src/ui.rs:142:8
[INFO] [stdout]     |
[INFO] [stdout] 142 | pub fn print_piece_distribution(file_name: &str, file_size: &str, local: usize, regional: usize, global: usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_benchmark` is never used
[INFO] [stdout]    --> src/ui.rs:158:8
[INFO] [stdout]     |
[INFO] [stdout] 158 | pub fn print_benchmark(name: &str, our_time: f64, their_time: f64, speedup: f64) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_status` is never used
[INFO] [stdout]    --> src/ui.rs:175:8
[INFO] [stdout]     |
[INFO] [stdout] 175 | pub fn print_status(network_mode: &str, local_peers: usize, dht_peers: usize, storage_used: f64, storage_total: f64, shares_active:...
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `data_dir`
[INFO] [stdout]  --> src/commands/demo.rs:9:44
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub async fn demo_upload(file_path: &Path, data_dir: PathBuf) -> Result<()> {
[INFO] [stdout]   |                                            ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_data_dir`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `file_name`
[INFO] [stdout]    --> src/commands/demo.rs:281:5
[INFO] [stdout]     |
[INFO] [stdout] 281 |     file_name: &str,
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_file_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `file_size`
[INFO] [stdout]    --> src/commands/demo.rs:282:5
[INFO] [stdout]     |
[INFO] [stdout] 282 |     file_size: u64,
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_file_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `data_dir`
[INFO] [stdout]    --> src/commands/demo.rs:431:44
[INFO] [stdout]     |
[INFO] [stdout] 431 | pub async fn demo_network(live_view: bool, data_dir: PathBuf) -> Result<()> {
[INFO] [stdout]     |                                            ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_data_dir`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `data_dir`
[INFO] [stdout]    --> src/commands/demo.rs:558:60
[INFO] [stdout]     |
[INFO] [stdout] 558 | pub async fn demo_share(file_path: &Path, recipient: &str, data_dir: PathBuf) -> Result<()> {
[INFO] [stdout]     |                                                            ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_data_dir`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `file_size`
[INFO] [stdout]    --> src/commands/demo.rs:563:9
[INFO] [stdout]     |
[INFO] [stdout] 563 |     let file_size = metadata.len();
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_file_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_daemon` is never used
[INFO] [stdout]   --> src/commands/node.rs:19:14
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub async fn run_daemon(
[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 `run` is never used
[INFO] [stdout]   --> src/commands/node.rs:83:14
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub async fn run(
[INFO] [stdout]    |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]  --> src/commands/chunk.rs:9:14
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub async fn run(file_path: PathBuf) -> Result<()> {
[INFO] [stdout]   |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `demo_upload` is never used
[INFO] [stdout]  --> src/commands/demo.rs:9:14
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub async fn demo_upload(file_path: &Path, data_dir: PathBuf) -> Result<()> {
[INFO] [stdout]   |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `novelty_1_network_discovery` is never used
[INFO] [stdout]   --> src/commands/demo.rs:47:10
[INFO] [stdout]    |
[INFO] [stdout] 47 | async fn novelty_1_network_discovery(node: &mut FireCloudNode) -> Result<(Vec<(libp2p::PeerId, Duration)>, Vec<(libp2p::PeerId, Dura...
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `novelty_4_compression` is never used
[INFO] [stdout]    --> src/commands/demo.rs:156:10
[INFO] [stdout]     |
[INFO] [stdout] 156 | async fn novelty_4_compression(file_path: &Path, file_name: &str, file_size: u64) -> Result<u64> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_shannon_entropy` is never used
[INFO] [stdout]    --> src/commands/demo.rs:237:4
[INFO] [stdout]     |
[INFO] [stdout] 237 | fn calculate_shannon_entropy(data: &[u8]) -> f64 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compress_lz4` is never used
[INFO] [stdout]    --> src/commands/demo.rs:262:4
[INFO] [stdout]     |
[INFO] [stdout] 262 | fn compress_lz4(data: &[u8]) -> Result<Vec<u8>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compress_zstd` is never used
[INFO] [stdout]    --> src/commands/demo.rs:269:4
[INFO] [stdout]     |
[INFO] [stdout] 269 | fn compress_zstd(data: &[u8], level: i32) -> Result<Vec<u8>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `novelty_3_erasure_placement` is never used
[INFO] [stdout]    --> src/commands/demo.rs:280:10
[INFO] [stdout]     |
[INFO] [stdout] 280 | async fn novelty_3_erasure_placement(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_upload_summary` is never used
[INFO] [stdout]    --> src/commands/demo.rs:384:4
[INFO] [stdout]     |
[INFO] [stdout] 384 | fn print_upload_summary(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `demo_network` is never used
[INFO] [stdout]    --> src/commands/demo.rs:431:14
[INFO] [stdout]     |
[INFO] [stdout] 431 | pub async fn demo_network(live_view: bool, data_dir: PathBuf) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `demo_benchmark` is never used
[INFO] [stdout]    --> src/commands/demo.rs:516:14
[INFO] [stdout]     |
[INFO] [stdout] 516 | pub async fn demo_benchmark(compare_dropbox: bool) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `demo_share` is never used
[INFO] [stdout]    --> src/commands/demo.rs:558:14
[INFO] [stdout]     |
[INFO] [stdout] 558 | pub async fn demo_share(file_path: &Path, recipient: &str, data_dir: PathBuf) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FriendStatus` is never used
[INFO] [stdout]   --> src/commands/friend.rs:53:10
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub enum FriendStatus {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Friend` is never constructed
[INFO] [stdout]   --> src/commands/friend.rs:65:12
[INFO] [stdout]    |
[INFO] [stdout] 65 | pub struct Friend {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FriendList` is never constructed
[INFO] [stdout]   --> src/commands/friend.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub struct FriendList {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/commands/friend.rs:81:12
[INFO] [stdout]     |
[INFO] [stdout]  79 | impl FriendList {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  80 |     /// Load friend list from disk
[INFO] [stdout]  81 |     pub fn load(data_dir: &PathBuf) -> Result<Self> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub fn save(&self, data_dir: &PathBuf) -> Result<()> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     pub fn add_friend(&mut self, peer_id: PeerId, name: Option<String>) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub fn accept_friend(&mut self, peer_id: PeerId) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub fn remove_friend(&mut self, peer_id: &PeerId) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn is_friend(&self, peer_id: &PeerId) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn find_friend(&self, identifier: &str) -> Option<&Friend> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 193 |     pub fn get_accepted_friends(&self) -> Vec<&Friend> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 200 |     pub fn get_pending_received(&self) -> Vec<&Friend> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 207 |     pub fn get_pending_sent(&self) -> Vec<&Friend> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn update_last_seen(&mut self, peer_id: &PeerId) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     pub fn increment_messages(&mut self, peer_id: &PeerId) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 228 |     fn get_local_peer_id(&self) -> Result<PeerId> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_friend_node` is never used
[INFO] [stdout]    --> src/commands/friend.rs:237:10
[INFO] [stdout]     |
[INFO] [stdout] 237 | async fn create_friend_node() -> Result<FireCloudNode> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_friend_command` is never used
[INFO] [stdout]    --> src/commands/friend.rs:249:14
[INFO] [stdout]     |
[INFO] [stdout] 249 | pub async fn handle_friend_command(cmd: FriendCommand, data_dir: PathBuf) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `health` is never used
[INFO] [stdout]  --> src/commands/health.rs:7:14
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub async fn health(_data_dir: &Path) -> Result<()> {
[INFO] [stdout]   |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]  --> src/commands/info.rs:7:14
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub async fn run(data_dir: PathBuf) -> Result<()> {
[INFO] [stdout]   |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]  --> src/commands/init.rs:8:14
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub async fn run(data_dir: PathBuf) -> Result<()> {
[INFO] [stdout]   |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]  --> src/commands/list.rs:8:14
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub async fn run(data_dir: PathBuf) -> Result<()> {
[INFO] [stdout]   |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_size` is never used
[INFO] [stdout]   --> src/commands/list.rs:44:4
[INFO] [stdout]    |
[INFO] [stdout] 44 | fn format_size(bytes: u64) -> String {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MESSAGE_SIZE` is never used
[INFO] [stdout]   --> src/commands/message.rs:21:7
[INFO] [stdout]    |
[INFO] [stdout] 21 | const MESSAGE_SIZE: usize = 1024;
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MIN_DELAY_MS` is never used
[INFO] [stdout]   --> src/commands/message.rs:24:7
[INFO] [stdout]    |
[INFO] [stdout] 24 | const MIN_DELAY_MS: u64 = 100;
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_DELAY_MS` is never used
[INFO] [stdout]   --> src/commands/message.rs:27:7
[INFO] [stdout]    |
[INFO] [stdout] 27 | const MAX_DELAY_MS: u64 = 500;
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Message` is never constructed
[INFO] [stdout]   --> src/commands/message.rs:73:12
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub struct Message {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DecryptedMessage` is never constructed
[INFO] [stdout]   --> src/commands/message.rs:97:12
[INFO] [stdout]    |
[INFO] [stdout] 97 | pub struct DecryptedMessage {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MessageStore` is never constructed
[INFO] [stdout]    --> src/commands/message.rs:108:12
[INFO] [stdout]     |
[INFO] [stdout] 108 | pub struct MessageStore {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/commands/message.rs:118:12
[INFO] [stdout]     |
[INFO] [stdout] 116 | impl MessageStore {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 117 |     /// Load message store from disk
[INFO] [stdout] 118 |     pub fn load(data_dir: &PathBuf) -> Result<Self> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn save(&self, data_dir: &PathBuf) -> Result<()> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 151 |     pub fn add_message(&mut self, message: Message) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn get_conversation(&self, peer_id: &PeerId, limit: usize) -> Vec<&Message> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn get_inbox(&self, limit: usize) -> Vec<&Message> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub fn mark_read(&mut self, message_id: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub fn mark_delivered(&mut self, message_id: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 206 |     pub fn clear_conversation(&mut self, peer_id: &PeerId) -> Result<usize> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 219 |     fn get_local_peer_id(&self) -> PeerId {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `encrypt_message` is never used
[INFO] [stdout]    --> src/commands/message.rs:226:8
[INFO] [stdout]     |
[INFO] [stdout] 226 | pub fn encrypt_message(content: &str, _recipient: &PeerId) -> Result<Vec<u8>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decrypt_message` is never used
[INFO] [stdout]    --> src/commands/message.rs:258:8
[INFO] [stdout]     |
[INFO] [stdout] 258 | pub fn decrypt_message(encrypted: &[u8], _sender: &PeerId) -> Result<String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_message_node` is never used
[INFO] [stdout]    --> src/commands/message.rs:286:10
[INFO] [stdout]     |
[INFO] [stdout] 286 | async fn create_message_node() -> Result<FireCloudNode> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_message_command` is never used
[INFO] [stdout]    --> src/commands/message.rs:298:14
[INFO] [stdout]     |
[INFO] [stdout] 298 | pub async fn handle_message_command(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]  --> src/commands/peers.rs:7:14
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub async fn run(_data_dir: PathBuf) -> Result<()> {
[INFO] [stdout]   |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `quota` is never used
[INFO] [stdout]  --> src/commands/quota.rs:8:14
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub async fn quota(data_dir: &Path) -> Result<()> {
[INFO] [stdout]   |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_quota` is never used
[INFO] [stdout]   --> src/commands/quota.rs:44:14
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub async fn set_quota(data_dir: &Path, limit_gb: f64) -> Result<()> {
[INFO] [stdout]    |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_bytes` is never used
[INFO] [stdout]   --> src/commands/quota.rs:58:4
[INFO] [stdout]    |
[INFO] [stdout] 58 | fn format_bytes(bytes: u64) -> String {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]  --> src/commands/status.rs:9:14
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub async fn run(data_dir: PathBuf) -> Result<()> {
[INFO] [stdout]   |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init` is never used
[INFO] [stdout]   --> src/commands/storage.rs:10:14
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub async fn init(data_dir: PathBuf, quota_gb: Option<u64>) -> Result<()> {
[INFO] [stdout]    |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `stats` is never used
[INFO] [stdout]   --> src/commands/storage.rs:88:14
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub async fn stats(data_dir: PathBuf) -> Result<()> {
[INFO] [stdout]    |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `list_providers` is never used
[INFO] [stdout]    --> src/commands/storage.rs:123:14
[INFO] [stdout]     |
[INFO] [stdout] 123 | pub async fn list_providers(_data_dir: PathBuf) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_header` is never used
[INFO] [stdout]  --> src/ui.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn print_header(title: &str) {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_box` is never used
[INFO] [stdout]   --> src/ui.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn print_box(title: &str, content: &[&str]) {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `success` is never used
[INFO] [stdout]   --> src/ui.rs:27:8
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub fn success(msg: &str) {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `info` is never used
[INFO] [stdout]   --> src/ui.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub fn info(msg: &str) {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `warning` is never used
[INFO] [stdout]   --> src/ui.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub fn warning(msg: &str) {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `error` is never used
[INFO] [stdout]   --> src/ui.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub fn error(msg: &str) {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `novelty` is never used
[INFO] [stdout]   --> src/ui.rs:47:8
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub fn novelty(number: u8, title: &str, content: &[&str]) {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_progress_bar` is never used
[INFO] [stdout]   --> src/ui.rs:57:8
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub fn create_progress_bar(total: u64, message: &str) -> ProgressBar {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_spinner` is never used
[INFO] [stdout]   --> src/ui.rs:70:8
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub fn create_spinner(message: &str) -> ProgressBar {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_comparison_table` is never used
[INFO] [stdout]   --> src/ui.rs:84:8
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub fn print_comparison_table(rows: Vec<(&str, &str, &str, &str)>) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_network_topology` is never used
[INFO] [stdout]    --> src/ui.rs:108:8
[INFO] [stdout]     |
[INFO] [stdout] 108 | pub fn print_network_topology(local_peers: &[(String, u32)], regional_peers: &[(String, u32)], global_peers: &[(String, u32)]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_piece_distribution` is never used
[INFO] [stdout]    --> src/ui.rs:142:8
[INFO] [stdout]     |
[INFO] [stdout] 142 | pub fn print_piece_distribution(file_name: &str, file_size: &str, local: usize, regional: usize, global: usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_benchmark` is never used
[INFO] [stdout]    --> src/ui.rs:158:8
[INFO] [stdout]     |
[INFO] [stdout] 158 | pub fn print_benchmark(name: &str, our_time: f64, their_time: f64, speedup: f64) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_status` is never used
[INFO] [stdout]    --> src/ui.rs:175:8
[INFO] [stdout]     |
[INFO] [stdout] 175 | pub fn print_status(network_mode: &str, local_peers: usize, dht_peers: usize, storage_used: f64, storage_total: f64, shares_active:...
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 20s
[INFO] running `Command { std: "docker" "inspect" "86e292e1f59d6ae81f979e3821ffc5ca2357573c001cf5b1bdfeea339b214193", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "86e292e1f59d6ae81f979e3821ffc5ca2357573c001cf5b1bdfeea339b214193", kill_on_drop: false }`
[INFO] [stdout] 86e292e1f59d6ae81f979e3821ffc5ca2357573c001cf5b1bdfeea339b214193
