[INFO] cloning repository https://github.com/klx01/codecrafters-bittorrent-rust
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/klx01/codecrafters-bittorrent-rust" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fklx01%2Fcodecrafters-bittorrent-rust", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fklx01%2Fcodecrafters-bittorrent-rust'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 99db65c5b51a91eb2fd850b0146c091debb86659
[INFO] checking klx01/codecrafters-bittorrent-rust against try#4f260f0f20b3133d20cfb50353c0221943af5796+rustflags=-Dunmustuse_in_always_ok for pr-148577
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fklx01%2Fcodecrafters-bittorrent-rust" "/workspace/builds/worker-4-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc2/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-4-tc2/source/.cargo/config.toml
[INFO] started tweaking git repo https://github.com/klx01/codecrafters-bittorrent-rust
[INFO] finished tweaking git repo https://github.com/klx01/codecrafters-bittorrent-rust
[INFO] tweaked toml for git repo https://github.com/klx01/codecrafters-bittorrent-rust written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/klx01/codecrafters-bittorrent-rust on toolchain 4f260f0f20b3133d20cfb50353c0221943af5796
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+4f260f0f20b3133d20cfb50353c0221943af5796" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/klx01/codecrafters-bittorrent-rust 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" "+4f260f0f20b3133d20cfb50353c0221943af5796" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+4f260f0f20b3133d20cfb50353c0221943af5796" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 107aa7b62f5963830b4f2e5cdee2c0d27bfdad41f053433e6913c91b469478ec
[INFO] running `Command { std: "docker" "start" "-a" "107aa7b62f5963830b4f2e5cdee2c0d27bfdad41f053433e6913c91b469478ec", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "107aa7b62f5963830b4f2e5cdee2c0d27bfdad41f053433e6913c91b469478ec", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "107aa7b62f5963830b4f2e5cdee2c0d27bfdad41f053433e6913c91b469478ec", kill_on_drop: false }`
[INFO] [stdout] 107aa7b62f5963830b4f2e5cdee2c0d27bfdad41f053433e6913c91b469478ec
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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 -Dunmustuse_in_always_ok" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+4f260f0f20b3133d20cfb50353c0221943af5796" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 33bc739c38bfafacb180eec941d0f6324f3fe4910cad2efa317799f4344af42b
[INFO] running `Command { std: "docker" "start" "-a" "33bc739c38bfafacb180eec941d0f6324f3fe4910cad2efa317799f4344af42b", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.81
[INFO] [stderr]    Compiling libc v0.2.153
[INFO] [stderr]    Compiling autocfg v1.2.0
[INFO] [stderr]    Compiling parking_lot_core v0.9.9
[INFO] [stderr]    Compiling pkg-config v0.3.30
[INFO] [stderr]     Checking memchr v2.7.2
[INFO] [stderr]    Compiling cc v1.0.95
[INFO] [stderr]     Checking log v0.4.21
[INFO] [stderr]    Compiling serde v1.0.198
[INFO] [stderr]     Checking bitflags v2.5.0
[INFO] [stderr]     Checking http v1.1.0
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]     Checking hashbrown v0.14.3
[INFO] [stderr]    Compiling openssl v0.10.64
[INFO] [stderr]    Compiling httparse v1.8.0
[INFO] [stderr]    Compiling native-tls v0.2.11
[INFO] [stderr]     Checking tinyvec v1.6.0
[INFO] [stderr]     Checking tracing v0.1.40
[INFO] [stderr]     Checking tower-layer v0.3.2
[INFO] [stderr]     Checking utf8parse v0.2.1
[INFO] [stderr]     Checking anstyle-parse v0.2.3
[INFO] [stderr]     Checking colorchoice v1.0.0
[INFO] [stderr]     Checking anstyle-query v1.0.2
[INFO] [stderr]    Compiling serde_json v1.0.116
[INFO] [stderr]    Compiling rustix v0.38.33
[INFO] [stderr]     Checking ryu v1.0.17
[INFO] [stderr]    Compiling thiserror v1.0.59
[INFO] [stderr]    Compiling lock_api v0.4.11
[INFO] [stderr]    Compiling slab v0.4.9
[INFO] [stderr]     Checking unicode-bidi v0.3.15
[INFO] [stderr]     Checking anstyle v1.0.6
[INFO] [stderr]     Checking crypto-common v0.1.6
[INFO] [stderr]     Checking block-buffer v0.10.4
[INFO] [stderr]     Checking aho-corasick v1.1.3
[INFO] [stderr]    Compiling anyhow v1.0.82
[INFO] [stderr]     Checking linux-raw-sys v0.4.13
[INFO] [stderr]     Checking rustls-pki-types v1.4.1
[INFO] [stderr]     Checking regex-syntax v0.8.3
[INFO] [stderr]     Checking clap_lex v0.7.0
[INFO] [stderr]     Checking indexmap v2.2.6
[INFO] [stderr]     Checking futures-util v0.3.30
[INFO] [stderr]     Checking mio v0.8.11
[INFO] [stderr]     Checking num_cpus v1.16.0
[INFO] [stderr]     Checking socket2 v0.5.6
[INFO] [stderr]     Checking signal-hook-registry v1.4.2
[INFO] [stderr]     Checking anstream v0.6.13
[INFO] [stderr]    Compiling quote v1.0.36
[INFO] [stderr]     Checking parking_lot v0.12.1
[INFO] [stderr]     Checking base64 v0.22.0
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking unicode-normalization v0.1.23
[INFO] [stderr]     Checking http-body v1.0.0
[INFO] [stderr]     Checking sync_wrapper v0.1.2
[INFO] [stderr]     Checking ipnet v2.9.0
[INFO] [stderr]     Checking clap_builder v4.5.2
[INFO] [stderr]     Checking cpufeatures v0.2.12
[INFO] [stderr]    Compiling syn v2.0.60
[INFO] [stderr]     Checking http-body-util v0.1.1
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]     Checking rustls-pemfile v2.1.2
[INFO] [stderr]    Compiling openssl-sys v0.9.102
[INFO] [stderr]     Checking idna v0.5.0
[INFO] [stderr]     Checking url v2.5.0
[INFO] [stderr]     Checking regex-automata v0.4.6
[INFO] [stderr]     Checking tempfile v3.10.1
[INFO] [stderr]    Compiling tokio-macros v2.2.0
[INFO] [stderr]    Compiling serde_derive v1.0.198
[INFO] [stderr]    Compiling pin-project-internal v1.1.5
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling thiserror-impl v1.0.59
[INFO] [stderr]    Compiling clap_derive v4.5.4
[INFO] [stderr]     Checking regex v1.10.4
[INFO] [stderr]     Checking tokio v1.37.0
[INFO] [stderr]     Checking pin-project v1.1.5
[INFO] [stderr]     Checking clap v4.5.4
[INFO] [stderr]     Checking tokio-util v0.7.10
[INFO] [stderr]     Checking tower v0.4.13
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking h2 v0.4.4
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking serde_bytes v0.11.14
[INFO] [stderr]     Checking serde_qs v0.13.0
[INFO] [stderr]     Checking serde_bencode v0.2.4
[INFO] [stderr]     Checking hyper v1.3.1
[INFO] [stderr]     Checking hyper-util v0.1.3
[INFO] [stderr]     Checking hyper-tls v0.6.0
[INFO] [stderr]     Checking reqwest v0.12.4
[INFO] [stderr]     Checking bittorrent-starter-rust v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]  --> src/custom_bdecode.rs:5:39
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub(crate) fn decode_value_str(input: &str) -> anyhow::Result<Value> {
[INFO] [stdout]   |                                       ^^^^                    ^^^^^ the same lifetime is hidden here
[INFO] [stdout]   |                                       |
[INFO] [stdout]   |                                       the lifetime is elided here
[INFO] [stdout]   |
[INFO] [stdout]   = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]   = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub(crate) fn decode_value_str(input: &str) -> anyhow::Result<Value<'_>> {
[INFO] [stdout]   |                                                                    ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]  --> src/custom_bdecode.rs:9:35
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub(crate) fn decode_value(input: &[u8]) -> anyhow::Result<Value> {
[INFO] [stdout]   |                                   ^^^^^                    ^^^^^ the same lifetime is hidden here
[INFO] [stdout]   |                                   |
[INFO] [stdout]   |                                   the lifetime is elided here
[INFO] [stdout]   |
[INFO] [stdout]   = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub(crate) fn decode_value(input: &[u8]) -> anyhow::Result<Value<'_>> {
[INFO] [stdout]   |                                                                 ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/custom_bdecode.rs:17:30
[INFO] [stdout]    |
[INFO] [stdout] 17 | fn decode_value_inner(input: &[u8]) -> anyhow::Result<(Value, &[u8])> {
[INFO] [stdout]    |                              ^^^^^                     ^^^^^  ^^^^^ the same lifetime is elided here
[INFO] [stdout]    |                              |                         |
[INFO] [stdout]    |                              |                         the same lifetime is hidden here
[INFO] [stdout]    |                              the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 17 | fn decode_value_inner(input: &[u8]) -> anyhow::Result<(Value<'_>, &[u8])> {
[INFO] [stdout]    |                                                             ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/custom_bdecode.rs:30:25
[INFO] [stdout]    |
[INFO] [stdout] 30 | fn decode_string(input: &[u8]) -> anyhow::Result<(Value, &[u8])> {
[INFO] [stdout]    |                         ^^^^^                     ^^^^^  ^^^^^ the same lifetime is elided here
[INFO] [stdout]    |                         |                         |
[INFO] [stdout]    |                         |                         the same lifetime is hidden here
[INFO] [stdout]    |                         the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 30 | fn decode_string(input: &[u8]) -> anyhow::Result<(Value<'_>, &[u8])> {
[INFO] [stdout]    |                                                        ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/custom_bdecode.rs:49:22
[INFO] [stdout]    |
[INFO] [stdout] 49 | fn decode_int(input: &[u8]) -> anyhow::Result<(Value, &[u8])> {
[INFO] [stdout]    |                      ^^^^^                     ^^^^^  ^^^^^ the same lifetime is elided here
[INFO] [stdout]    |                      |                         |
[INFO] [stdout]    |                      |                         the same lifetime is hidden here
[INFO] [stdout]    |                      the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 49 | fn decode_int(input: &[u8]) -> anyhow::Result<(Value<'_>, &[u8])> {
[INFO] [stdout]    |                                                     ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/custom_bdecode.rs:63:23
[INFO] [stdout]    |
[INFO] [stdout] 63 | fn decode_list(input: &[u8]) -> anyhow::Result<(Value, &[u8])> {
[INFO] [stdout]    |                       ^^^^^                     ^^^^^  ^^^^^ the same lifetime is elided here
[INFO] [stdout]    |                       |                         |
[INFO] [stdout]    |                       |                         the same lifetime is hidden here
[INFO] [stdout]    |                       the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 63 | fn decode_list(input: &[u8]) -> anyhow::Result<(Value<'_>, &[u8])> {
[INFO] [stdout]    |                                                      ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/custom_bdecode.rs:81:23
[INFO] [stdout]    |
[INFO] [stdout] 81 | fn decode_dict(input: &[u8]) -> anyhow::Result<(Value, &[u8])> {
[INFO] [stdout]    |                       ^^^^^                     ^^^^^  ^^^^^ the same lifetime is elided here
[INFO] [stdout]    |                       |                         |
[INFO] [stdout]    |                       |                         the same lifetime is hidden here
[INFO] [stdout]    |                       the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 81 | fn decode_dict(input: &[u8]) -> anyhow::Result<(Value<'_>, &[u8])> {
[INFO] [stdout]    |                                                      ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: this type will no longer be must used: Result<[u8; 20], Infallible>
[INFO] [stdout]   --> src/torrent.rs:76:22
[INFO] [stdout]    |
[INFO] [stdout] 76 |         let output = output.try_into().context("failed to convert hash to slice")?;
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: requested on the command line with `-D unmustuse-in-always-ok`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: this type will no longer be must used: Result<[u8; 20], Infallible>
[INFO] [stdout]   --> src/peer.rs:97:50
[INFO] [stdout]    |
[INFO] [stdout] 97 |         let actual_hash: [u8; HASH_RAW_LENGTH] = actual_hash.try_into().context("failed to calc hash")?;
[INFO] [stdout]    |                                                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `bittorrent-starter-rust` (bin "bittorrent-starter-rust" test) due to 2 previous errors; 7 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]  --> src/custom_bdecode.rs:5:39
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub(crate) fn decode_value_str(input: &str) -> anyhow::Result<Value> {
[INFO] [stdout]   |                                       ^^^^                    ^^^^^ the same lifetime is hidden here
[INFO] [stdout]   |                                       |
[INFO] [stdout]   |                                       the lifetime is elided here
[INFO] [stdout]   |
[INFO] [stdout]   = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]   = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub(crate) fn decode_value_str(input: &str) -> anyhow::Result<Value<'_>> {
[INFO] [stdout]   |                                                                    ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]  --> src/custom_bdecode.rs:9:35
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub(crate) fn decode_value(input: &[u8]) -> anyhow::Result<Value> {
[INFO] [stdout]   |                                   ^^^^^                    ^^^^^ the same lifetime is hidden here
[INFO] [stdout]   |                                   |
[INFO] [stdout]   |                                   the lifetime is elided here
[INFO] [stdout]   |
[INFO] [stdout]   = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub(crate) fn decode_value(input: &[u8]) -> anyhow::Result<Value<'_>> {
[INFO] [stdout]   |                                                                 ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/custom_bdecode.rs:17:30
[INFO] [stdout]    |
[INFO] [stdout] 17 | fn decode_value_inner(input: &[u8]) -> anyhow::Result<(Value, &[u8])> {
[INFO] [stdout]    |                              ^^^^^                     ^^^^^  ^^^^^ the same lifetime is elided here
[INFO] [stdout]    |                              |                         |
[INFO] [stdout]    |                              |                         the same lifetime is hidden here
[INFO] [stdout]    |                              the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 17 | fn decode_value_inner(input: &[u8]) -> anyhow::Result<(Value<'_>, &[u8])> {
[INFO] [stdout]    |                                                             ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/custom_bdecode.rs:30:25
[INFO] [stdout]    |
[INFO] [stdout] 30 | fn decode_string(input: &[u8]) -> anyhow::Result<(Value, &[u8])> {
[INFO] [stdout]    |                         ^^^^^                     ^^^^^  ^^^^^ the same lifetime is elided here
[INFO] [stdout]    |                         |                         |
[INFO] [stdout]    |                         |                         the same lifetime is hidden here
[INFO] [stdout]    |                         the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 30 | fn decode_string(input: &[u8]) -> anyhow::Result<(Value<'_>, &[u8])> {
[INFO] [stdout]    |                                                        ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/custom_bdecode.rs:49:22
[INFO] [stdout]    |
[INFO] [stdout] 49 | fn decode_int(input: &[u8]) -> anyhow::Result<(Value, &[u8])> {
[INFO] [stdout]    |                      ^^^^^                     ^^^^^  ^^^^^ the same lifetime is elided here
[INFO] [stdout]    |                      |                         |
[INFO] [stdout]    |                      |                         the same lifetime is hidden here
[INFO] [stdout]    |                      the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 49 | fn decode_int(input: &[u8]) -> anyhow::Result<(Value<'_>, &[u8])> {
[INFO] [stdout]    |                                                     ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/custom_bdecode.rs:63:23
[INFO] [stdout]    |
[INFO] [stdout] 63 | fn decode_list(input: &[u8]) -> anyhow::Result<(Value, &[u8])> {
[INFO] [stdout]    |                       ^^^^^                     ^^^^^  ^^^^^ the same lifetime is elided here
[INFO] [stdout]    |                       |                         |
[INFO] [stdout]    |                       |                         the same lifetime is hidden here
[INFO] [stdout]    |                       the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 63 | fn decode_list(input: &[u8]) -> anyhow::Result<(Value<'_>, &[u8])> {
[INFO] [stdout]    |                                                      ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/custom_bdecode.rs:81:23
[INFO] [stdout]    |
[INFO] [stdout] 81 | fn decode_dict(input: &[u8]) -> anyhow::Result<(Value, &[u8])> {
[INFO] [stdout]    |                       ^^^^^                     ^^^^^  ^^^^^ the same lifetime is elided here
[INFO] [stdout]    |                       |                         |
[INFO] [stdout]    |                       |                         the same lifetime is hidden here
[INFO] [stdout]    |                       the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 81 | fn decode_dict(input: &[u8]) -> anyhow::Result<(Value<'_>, &[u8])> {
[INFO] [stdout]    |                                                      ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: this type will no longer be must used: Result<[u8; 20], Infallible>
[INFO] [stdout]   --> src/torrent.rs:76:22
[INFO] [stdout]    |
[INFO] [stdout] 76 |         let output = output.try_into().context("failed to convert hash to slice")?;
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: requested on the command line with `-D unmustuse-in-always-ok`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: this type will no longer be must used: Result<[u8; 20], Infallible>
[INFO] [stdout]   --> src/peer.rs:97:50
[INFO] [stdout]    |
[INFO] [stdout] 97 |         let actual_hash: [u8; HASH_RAW_LENGTH] = actual_hash.try_into().context("failed to calc hash")?;
[INFO] [stdout]    |                                                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `bittorrent-starter-rust` (bin "bittorrent-starter-rust") due to 2 previous errors; 7 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "33bc739c38bfafacb180eec941d0f6324f3fe4910cad2efa317799f4344af42b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "33bc739c38bfafacb180eec941d0f6324f3fe4910cad2efa317799f4344af42b", kill_on_drop: false }`
[INFO] [stdout] 33bc739c38bfafacb180eec941d0f6324f3fe4910cad2efa317799f4344af42b
