[INFO] fetching crate librqbit 7.0.1... [INFO] checking librqbit-7.0.1 against try#ccf408f4326a858c00dd845a64a86b16f360a801 for pr-129466-2 [INFO] extracting crate librqbit 7.0.1 into /workspace/builds/worker-6-tc2/source [INFO] validating manifest of crates.io crate librqbit 7.0.1 on toolchain ccf408f4326a858c00dd845a64a86b16f360a801 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+ccf408f4326a858c00dd845a64a86b16f360a801" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking crates.io crate librqbit 7.0.1 [INFO] removed 0 missing examples [INFO] finished tweaking crates.io crate librqbit 7.0.1 [INFO] tweaked toml for crates.io crate librqbit 7.0.1 written to /workspace/builds/worker-6-tc2/source/Cargo.toml [INFO] crate crates.io crate librqbit 7.0.1 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" "+ccf408f4326a858c00dd845a64a86b16f360a801" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:ceb6ea022f8a89cebbe621bb4987e73a935bd40dfbb726f832cfff4742a5b95a" "/opt/rustwide/cargo-home/bin/cargo" "+ccf408f4326a858c00dd845a64a86b16f360a801" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 3b200d09b3c93d385aba34ab3b6f64a272a39eb4220474d070cf0066cecddef5 [INFO] running `Command { std: "docker" "start" "-a" "3b200d09b3c93d385aba34ab3b6f64a272a39eb4220474d070cf0066cecddef5", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "3b200d09b3c93d385aba34ab3b6f64a272a39eb4220474d070cf0066cecddef5", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "3b200d09b3c93d385aba34ab3b6f64a272a39eb4220474d070cf0066cecddef5", kill_on_drop: false }` [INFO] [stdout] 3b200d09b3c93d385aba34ab3b6f64a272a39eb4220474d070cf0066cecddef5 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:ceb6ea022f8a89cebbe621bb4987e73a935bd40dfbb726f832cfff4742a5b95a" "/opt/rustwide/cargo-home/bin/cargo" "+ccf408f4326a858c00dd845a64a86b16f360a801" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] a9936645e7cb54dbcd8f880f0a7845e048679d21df3ae66ff0f81fa2b244164e [INFO] running `Command { std: "docker" "start" "-a" "a9936645e7cb54dbcd8f880f0a7845e048679d21df3ae66ff0f81fa2b244164e", kill_on_drop: false }` [INFO] [stderr] Copying to /tmp/fixit [INFO] [stderr] Running `cargo fix --edition` [INFO] [stderr] Migrating Cargo.toml from 2021 edition to 2024 [INFO] [stderr] Fixed Cargo.toml (7 fixes) [INFO] [stderr] Compiling proc-macro2 v1.0.86 [INFO] [stderr] Compiling unicode-ident v1.0.12 [INFO] [stderr] Compiling libc v0.2.158 [INFO] [stderr] Compiling autocfg v1.3.0 [INFO] [stderr] Checking cfg-if v1.0.0 [INFO] [stderr] Checking pin-project-lite v0.2.14 [INFO] [stderr] Checking bytes v1.7.1 [INFO] [stderr] Checking futures-core v0.3.30 [INFO] [stderr] Checking once_cell v1.19.0 [INFO] [stderr] Checking futures-sink v0.3.30 [INFO] [stderr] Compiling shlex v1.3.0 [INFO] [stderr] Checking memchr v2.7.4 [INFO] [stderr] Compiling pkg-config v0.3.30 [INFO] [stderr] Compiling vcpkg v0.2.15 [INFO] [stderr] Compiling serde v1.0.209 [INFO] [stderr] Checking bitflags v2.6.0 [INFO] [stderr] Checking smallvec v1.13.2 [INFO] [stderr] Compiling openssl v0.10.66 [INFO] [stderr] Checking foreign-types-shared v0.1.1 [INFO] [stderr] Checking futures-channel v0.3.30 [INFO] [stderr] Checking futures-io v0.3.30 [INFO] [stderr] Checking pin-utils v0.1.0 [INFO] [stderr] Checking foreign-types v0.3.2 [INFO] [stderr] Compiling cc v1.1.15 [INFO] [stderr] Checking futures-task v0.3.30 [INFO] [stderr] Checking itoa v1.0.11 [INFO] [stderr] Checking tracing-core v0.1.32 [INFO] [stderr] Compiling anyhow v1.0.86 [INFO] [stderr] Checking tinyvec_macros v0.1.1 [INFO] [stderr] Checking percent-encoding v2.3.1 [INFO] [stderr] Compiling parking_lot_core v0.9.10 [INFO] [stderr] Checking log v0.4.22 [INFO] [stderr] Checking fnv v1.0.7 [INFO] [stderr] Checking tinyvec v1.8.0 [INFO] [stderr] Checking scopeguard v1.2.0 [INFO] [stderr] Compiling httparse v1.9.4 [INFO] [stderr] Compiling slab v0.4.9 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling lock_api v0.4.12 [INFO] [stderr] Checking form_urlencoded v1.2.1 [INFO] [stderr] Checking http v1.1.0 [INFO] [stderr] Checking byteorder v1.5.0 [INFO] [stderr] Checking unicode-bidi v0.3.15 [INFO] [stderr] Compiling thiserror v1.0.63 [INFO] [stderr] Checking either v1.13.0 [INFO] [stderr] Checking hex v0.3.2 [INFO] [stderr] Checking try-lock v0.2.5 [INFO] [stderr] Compiling native-tls v0.2.12 [INFO] [stderr] Compiling version_check v0.9.5 [INFO] [stderr] Checking want v0.3.1 [INFO] [stderr] Checking librqbit-clone-to-owned v3.0.0 [INFO] [stderr] Compiling quote v1.0.37 [INFO] [stderr] Compiling serde_json v1.0.127 [INFO] [stderr] Checking ryu v1.0.18 [INFO] [stderr] Checking tower-layer v0.3.3 [INFO] [stderr] Checking tower-service v0.3.3 [INFO] [stderr] Checking option-ext v0.2.0 [INFO] [stderr] Checking openssl-probe v0.1.5 [INFO] [stderr] Compiling strsim v0.11.1 [INFO] [stderr] Compiling ident_case v1.0.1 [INFO] [stderr] Checking socket2 v0.5.7 [INFO] [stderr] Checking mio v1.0.2 [INFO] [stderr] Checking getrandom v0.2.15 [INFO] [stderr] Compiling syn v2.0.76 [INFO] [stderr] Checking dirs-sys v0.4.1 [INFO] [stderr] Compiling unicase v2.7.0 [INFO] [stderr] Checking itertools v0.12.1 [INFO] [stderr] Checking aho-corasick v1.1.3 [INFO] [stderr] Checking unicode-normalization v0.1.23 [INFO] [stderr] Compiling num-complex v0.2.4 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Checking directories v5.0.1 [INFO] [stderr] Checking uuid v1.10.0 [INFO] [stderr] Checking parking_lot v0.12.3 [INFO] [stderr] Compiling num-rational v0.2.4 [INFO] [stderr] Checking http-body v1.0.1 [INFO] [stderr] Checking data-encoding v2.6.0 [INFO] [stderr] Checking hex v0.4.3 [INFO] [stderr] Checking mime v0.3.17 [INFO] [stderr] Compiling typenum v1.17.0 [INFO] [stderr] Checking regex-syntax v0.8.4 [INFO] [stderr] Checking num-integer v0.1.46 [INFO] [stderr] Compiling radium v0.7.0 [INFO] [stderr] Checking rustls-pki-types v1.8.0 [INFO] [stderr] Checking base64 v0.22.1 [INFO] [stderr] Checking sync_wrapper v1.0.1 [INFO] [stderr] Checking hashbrown v0.14.5 [INFO] [stderr] Compiling network-interface v2.0.0 [INFO] [stderr] Checking idna v0.5.0 [INFO] [stderr] Checking tap v1.0.1 [INFO] [stderr] Checking ipnet v2.9.0 [INFO] [stderr] Checking num-iter v0.1.45 [INFO] [stderr] Checking wyz v0.5.1 [INFO] [stderr] Checking rustls-pemfile v2.1.3 [INFO] [stderr] Compiling mime_guess v2.0.5 [INFO] [stderr] Checking instant v0.1.13 [INFO] [stderr] Compiling rustix v0.38.35 [INFO] [stderr] Checking funty v2.0.0 [INFO] [stderr] Compiling rlimit v0.10.1 [INFO] [stderr] Checking iana-time-zone v0.1.60 [INFO] [stderr] Checking equivalent v1.0.1 [INFO] [stderr] Compiling openssl-sys v0.9.103 [INFO] [stderr] Checking xml-rs v0.8.21 [INFO] [stderr] Checking urlencoding v2.1.3 [INFO] [stderr] Checking linux-raw-sys v0.4.14 [INFO] [stderr] Compiling librqbit v7.0.1 (/tmp/fixit) [INFO] [stderr] Checking url v2.5.2 [INFO] [stderr] Checking num v0.2.1 [INFO] [stderr] Migrating build.rs from 2021 edition to 2024 [INFO] [stderr] Checking overload v0.1.1 [INFO] [stderr] Checking lazy_static v1.5.0 [INFO] [stderr] Checking nu-ansi-term v0.46.0 [INFO] [stderr] Checking indexmap v2.4.0 [INFO] [stderr] Checking sharded-slab v0.1.7 [INFO] [stderr] Checking memmap2 v0.9.4 [INFO] [stderr] Checking tracing-log v0.2.0 [INFO] [stderr] Checking thread_local v1.1.8 [INFO] [stderr] Checking base64 v0.21.7 [INFO] [stderr] Checking fastrand v2.1.1 [INFO] [stderr] Checking bitvec v1.0.1 [INFO] [stderr] Checking generic-array v0.12.4 [INFO] [stderr] Checking tracing-subscriber v0.3.18 [INFO] [stderr] Checking size_format v1.0.2 [INFO] [stderr] Checking regex-automata v0.4.7 [INFO] [stderr] Checking tempfile v3.12.0 [INFO] [stderr] Compiling darling_core v0.20.10 [INFO] [stderr] Compiling tokio-macros v2.4.0 [INFO] [stderr] Compiling serde_derive v1.0.209 [INFO] [stderr] Compiling openssl-macros v0.1.1 [INFO] [stderr] Compiling futures-macro v0.3.30 [INFO] [stderr] Compiling tracing-attributes v0.1.27 [INFO] [stderr] Compiling pin-project-internal v1.1.5 [INFO] [stderr] Compiling thiserror-impl v1.0.63 [INFO] [stderr] Compiling zerocopy-derive v0.7.35 [INFO] [stderr] Compiling async-stream-impl v0.3.5 [INFO] [stderr] Compiling async-trait v0.1.81 [INFO] [stderr] Checking bstr v1.10.0 [INFO] [stderr] Checking async-stream v0.3.5 [INFO] [stderr] Checking regex v1.10.6 [INFO] [stderr] Checking tokio v1.39.3 [INFO] [stderr] Checking futures-util v0.3.30 [INFO] [stderr] Checking pin-project v1.1.5 [INFO] [stderr] Checking zerocopy v0.7.35 [INFO] [stderr] Checking tracing v0.1.40 [INFO] [stderr] Compiling darling_macro v0.20.10 [INFO] [stderr] Checking ppv-lite86 v0.2.20 [INFO] [stderr] Compiling darling v0.20.10 [INFO] [stderr] Compiling serde_with_macros v3.9.0 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Checking backoff v0.4.0 [INFO] [stderr] Checking futures-executor v0.3.30 [INFO] [stderr] Checking http-body-util v0.1.2 [INFO] [stderr] Checking futures v0.3.30 [INFO] [stderr] Checking crypto-hash v0.3.4 [INFO] [stderr] Checking librqbit-sha1-wrapper v4.0.0 [INFO] [stderr] Checking tokio-util v0.7.11 [INFO] [stderr] Checking hyper v1.4.1 [INFO] [stderr] Checking tower v0.4.13 [INFO] [stderr] Checking tokio-native-tls v0.3.1 [INFO] [stderr] Checking tokio-socks v0.5.2 [INFO] [stderr] Checking leaky-bucket v1.1.2 [INFO] [stderr] Checking tokio-stream v0.1.15 [INFO] [stderr] Checking hyper-util v0.1.7 [INFO] [stderr] Checking tokio-test v0.4.4 [INFO] [stderr] Checking librqbit-buffers v4.1.0 [INFO] [stderr] Checking serde_urlencoded v0.7.1 [INFO] [stderr] Checking dashmap v5.5.3 [INFO] [stderr] Checking bincode v1.3.3 [INFO] [stderr] Checking chrono v0.4.38 [INFO] [stderr] Checking serde-xml-rs v0.6.0 [INFO] [stderr] Checking serde_with v3.9.0 [INFO] [stderr] Checking librqbit-bencode v3.0.1 [INFO] [stderr] Checking librqbit-core v4.0.1 [INFO] [stderr] Checking hyper-tls v0.6.0 [INFO] [stderr] Checking librqbit-peer-protocol v4.1.0 [INFO] [stderr] Checking reqwest v0.12.7 [INFO] [stderr] Checking librqbit-dht v5.1.0 [INFO] [stderr] Checking librqbit-tracker-comms v2.0.0 [INFO] [stderr] Checking librqbit-upnp v0.1.1 [INFO] [stderr] Migrating src/lib.rs from 2021 edition to 2024 [INFO] [stderr] warning: failed to automatically apply fixes suggested by rustc to crate `librqbit` [INFO] [stderr] [INFO] [stderr] after fixes were automatically applied the compiler reported errors within these files: [INFO] [stderr] [INFO] [stderr] * src/api.rs [INFO] [stderr] * src/lib.rs [INFO] [stderr] * src/session.rs [INFO] [stderr] * src/session_persistence/json.rs [INFO] [stderr] * src/session_persistence/mod.rs [INFO] [stderr] * src/torrent_state/streaming.rs [INFO] [stderr] [INFO] [stderr] This likely indicates a bug in either rustc or cargo itself, [INFO] [stderr] and we would appreciate a bug report! You're likely to see [INFO] [stderr] a number of compiler warnings after this message which cargo [INFO] [stderr] attempted to fix but failed. If you could open an issue at [INFO] [stderr] https://github.com/rust-lang/rust/issues [INFO] [stderr] quoting the full output of this command we'd be very appreciative! [INFO] [stderr] Note that you may be able to make some more progress in the near-term [INFO] [stderr] fixing code with the `--broken-code` flag [INFO] [stderr] [INFO] [stderr] The following errors were reported: [INFO] [stderr] error[E0658]: fragment specifier `expr_2021` is unstable [INFO] [stderr] --> src/lib.rs:29:6 [INFO] [stderr] | [INFO] [stderr] 29 | ($e:expr_2021) => {{ [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: see issue #123742 for more information [INFO] [stderr] = help: add `#![feature(expr_fragment_specifier_2024)]` to the crate attributes to enable [INFO] [stderr] = note: this compiler was built on 2024-09-17; consider upgrading it if it is out of date [INFO] [stderr] [INFO] [stderr] error[E0658]: fragment specifier `expr_2021` is unstable [INFO] [stderr] --> src/api.rs:74:14 [INFO] [stderr] | [INFO] [stderr] 74 | ($v:expr_2021) => {{ [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: see issue #123742 for more information [INFO] [stderr] = help: add `#![feature(expr_fragment_specifier_2024)]` to the crate attributes to enable [INFO] [stderr] = note: this compiler was built on 2024-09-17; consider upgrading it if it is out of date [INFO] [stderr] [INFO] [stderr] error[E0658]: fragment specifier `expr_2021` is unstable [INFO] [stderr] --> src/session.rs:527:22 [INFO] [stderr] | [INFO] [stderr] 527 | ($store:expr_2021) => { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: see issue #123742 for more information [INFO] [stderr] = help: add `#![feature(expr_fragment_specifier_2024)]` to the crate attributes to enable [INFO] [stderr] = note: this compiler was built on 2024-09-17; consider upgrading it if it is out of date [INFO] [stderr] [INFO] [stderr] error[E0658]: fragment specifier `expr_2021` is unstable [INFO] [stderr] --> src/torrent_state/streaming.rs:146:6 [INFO] [stderr] | [INFO] [stderr] 146 | ($e:expr_2021) => { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: see issue #123742 for more information [INFO] [stderr] = help: add `#![feature(expr_fragment_specifier_2024)]` to the crate attributes to enable [INFO] [stderr] = note: this compiler was built on 2024-09-17; consider upgrading it if it is out of date [INFO] [stderr] [INFO] [stderr] error[E0658]: fragment specifier `expr_2021` is unstable [INFO] [stderr] --> src/torrent_state/streaming.rs:152:6 [INFO] [stderr] | [INFO] [stderr] 152 | ($e:expr_2021) => {{ [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: see issue #123742 for more information [INFO] [stderr] = help: add `#![feature(expr_fragment_specifier_2024)]` to the crate attributes to enable [INFO] [stderr] = note: this compiler was built on 2024-09-17; consider upgrading it if it is out of date [INFO] [stderr] [INFO] [stderr] warning: elided lifetime has a name [INFO] [stderr] --> src/session_persistence/json.rs:308:35 [INFO] [stderr] | [INFO] [stderr] 307 | &self, [INFO] [stderr] | - lifetime `'life0` declared here [INFO] [stderr] 308 | ) -> anyhow::Result>> { [INFO] [stderr] | ^^ this elided lifetime gets resolved as `'life0` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(elided_named_lifetimes)]` on by default [INFO] [stderr] [INFO] [stderr] warning: elided lifetime has a name [INFO] [stderr] --> src/session_persistence/mod.rs:79:35 [INFO] [stderr] | [INFO] [stderr] 78 | &self, [INFO] [stderr] | - lifetime `'life0` declared here [INFO] [stderr] 79 | ) -> anyhow::Result>>; [INFO] [stderr] | ^^ this elided lifetime gets resolved as `'life0` [INFO] [stderr] [INFO] [stderr] error: aborting due to 5 previous errors; 2 warnings emitted [INFO] [stderr] [INFO] [stderr] For more information about this error, try `rustc --explain E0658`. [INFO] [stderr] Original diagnostics will follow. [INFO] [stderr] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/peer_connection.rs:336:64 [INFO] [stdout] | [INFO] [stdout] 336 | ... let sleep_ms = (rand::thread_rng().gen::() [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] = note: `--force-warn keyword-idents-2024` implied by `--force-warn rust-2024-compatibility` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition [INFO] [stdout] --> src/lib.rs:29:9 [INFO] [stdout] | [INFO] [stdout] 29 | ($e:expr) => {{ [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see Migration Guide [INFO] [stdout] = note: `--force-warn edition-2024-expr-fragment-specifier` implied by `--force-warn rust-2024-compatibility` [INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier [INFO] [stdout] | [INFO] [stdout] 29 | ($e:expr_2021) => {{ [INFO] [stdout] | ~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition [INFO] [stdout] --> src/api.rs:74:17 [INFO] [stdout] | [INFO] [stdout] 74 | ($v:expr) => {{ [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see Migration Guide [INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier [INFO] [stdout] | [INFO] [stdout] 74 | ($v:expr_2021) => {{ [INFO] [stdout] | ~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition [INFO] [stdout] --> src/session.rs:527:29 [INFO] [stdout] | [INFO] [stdout] 527 | ($store:expr) => { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see Migration Guide [INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier [INFO] [stdout] | [INFO] [stdout] 527 | ($store:expr_2021) => { [INFO] [stdout] | ~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: elided lifetime has a name [INFO] [stdout] --> src/session_persistence/json.rs:308:35 [INFO] [stdout] | [INFO] [stdout] 307 | &self, [INFO] [stdout] | - lifetime `'life0` declared here [INFO] [stdout] 308 | ) -> anyhow::Result>> { [INFO] [stdout] | ^^ this elided lifetime gets resolved as `'life0` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(elided_named_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: elided lifetime has a name [INFO] [stdout] --> src/session_persistence/mod.rs:79:35 [INFO] [stdout] | [INFO] [stdout] 78 | &self, [INFO] [stdout] | - lifetime `'life0` declared here [INFO] [stdout] 79 | ) -> anyhow::Result>>; [INFO] [stdout] | ^^ this elided lifetime gets resolved as `'life0` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition [INFO] [stdout] --> src/torrent_state/streaming.rs:146:9 [INFO] [stdout] | [INFO] [stdout] 146 | ($e:expr) => { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see Migration Guide [INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier [INFO] [stdout] | [INFO] [stdout] 146 | ($e:expr_2021) => { [INFO] [stdout] | ~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition [INFO] [stdout] --> src/torrent_state/streaming.rs:152:9 [INFO] [stdout] | [INFO] [stdout] 152 | ($e:expr) => {{ [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see Migration Guide [INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier [INFO] [stdout] | [INFO] [stdout] 152 | ($e:expr_2021) => {{ [INFO] [stdout] | ~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `impl Serialize` will capture more lifetimes than possibly intended in edition 2024 [INFO] [stdout] --> src/api.rs:392:43 [INFO] [stdout] | [INFO] [stdout] 392 | pub fn api_dht_table(&self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see [INFO] [stdout] note: specifically, this lifetime is in scope but not mentioned in the type's bounds [INFO] [stdout] --> src/api.rs:392:26 [INFO] [stdout] | [INFO] [stdout] 392 | pub fn api_dht_table(&self) -> Result { [INFO] [stdout] | ^ [INFO] [stdout] = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024 [INFO] [stdout] = note: `--force-warn impl-trait-overcaptures` implied by `--force-warn rust-2024-compatibility` [INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit [INFO] [stdout] | [INFO] [stdout] 392 | pub fn api_dht_table(&self) -> Result> { [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/chunk_tracker.rs:247:12 [INFO] [stdout] | [INFO] [stdout] 247 | if let Some(s) = self.chunk_status.get_mut(self.lengths.chunk_range(index)) { [INFO] [stdout] | ^^^^^^^^^^^^^^-----------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/chunk_tracker.rs:249:9 [INFO] [stdout] | [INFO] [stdout] 249 | } [INFO] [stdout] | ^ [INFO] [stdout] = note: `--force-warn if-let-rescope` implied by `--force-warn rust-2024-compatibility` [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 247 ~ match self.chunk_status.get_mut(self.lengths.chunk_range(index)) { Some(s) => { [INFO] [stdout] 248 | s.fill(false); [INFO] [stdout] 249 ~ } _ => {}} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `impl Iterator` will capture more lifetimes than possibly intended in edition 2024 [INFO] [stdout] --> src/file_info.rs:30:44 [INFO] [stdout] | [INFO] [stdout] 30 | pub fn iter_piece_priorities(&self) -> impl Iterator { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see [INFO] [stdout] note: specifically, this lifetime is in scope but not mentioned in the type's bounds [INFO] [stdout] --> src/file_info.rs:30:34 [INFO] [stdout] | [INFO] [stdout] 30 | pub fn iter_piece_priorities(&self) -> impl Iterator { [INFO] [stdout] | ^ [INFO] [stdout] = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024 [INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit [INFO] [stdout] | [INFO] [stdout] 30 | pub fn iter_piece_priorities(&self) -> impl Iterator + use<> { [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/file_ops.rs:139:20 [INFO] [stdout] | [INFO] [stdout] 139 | if let Err(err) = update_hash_from_file( [INFO] [stdout] | ____________________^ - [INFO] [stdout] | |___________________________________| [INFO] [stdout] 140 | || current_file.index, [INFO] [stdout] 141 | || pos, [INFO] [stdout] 142 | || self.files, [INFO] [stdout] ... || [INFO] [stdout] 145 | || to_read_in_file, [INFO] [stdout] 146 | || ) { [INFO] [stdout] | ||_________________^ this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | |_________________| [INFO] [stdout] | [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/file_ops.rs:153:17 [INFO] [stdout] | [INFO] [stdout] 153 | } [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 139 ~ match update_hash_from_file( [INFO] [stdout] 140 | current_file.index, [INFO] [stdout] ... [INFO] [stdout] 145 | to_read_in_file, [INFO] [stdout] 146 ~ ) { Err(err) => { [INFO] [stdout] 147 | debug!( [INFO] [stdout] ... [INFO] [stdout] 152 | some_files_broken = true; [INFO] [stdout] 153 ~ } _ => {}} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/session.rs:489:20 [INFO] [stdout] | [INFO] [stdout] 489 | if let Some(port_range) = opts.listen_port_range.clone() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^----^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/session.rs:495:17 [INFO] [stdout] | [INFO] [stdout] 495 | } else { [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 489 ~ match opts.listen_port_range.clone() { Some(port_range) => { [INFO] [stdout] 490 | let (l, p) = create_tcp_listener(port_range) [INFO] [stdout] ... [INFO] [stdout] 494 | (Some(l), Some(p)) [INFO] [stdout] 495 ~ } _ => { [INFO] [stdout] 496 | (None, None) [INFO] [stdout] 497 ~ }}; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/session.rs:586:34 [INFO] [stdout] | [INFO] [stdout] 586 | let builder = if let Some(proxy_url) = opts.socks_proxy_url.as_ref() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^----^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/session.rs:590:17 [INFO] [stdout] | [INFO] [stdout] 590 | } else { [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 586 ~ let builder = match opts.socks_proxy_url.as_ref() { Some(proxy_url) => { [INFO] [stdout] 587 | let proxy = reqwest::Proxy::all(proxy_url) [INFO] [stdout] 588 | .context("error creating socks5 proxy for HTTP")?; [INFO] [stdout] 589 | reqwest::Client::builder().proxy(proxy) [INFO] [stdout] 590 ~ } _ => { [INFO] [stdout] 591 | reqwest::Client::builder() [INFO] [stdout] 592 ~ }}; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/session.rs:627:31 [INFO] [stdout] | [INFO] [stdout] 627 | while let Some(work) = disk_write_rx.recv().await { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^-------------------------- [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/session.rs:630:25 [INFO] [stdout] | [INFO] [stdout] 630 | } [INFO] [stdout] | ^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/session.rs:666:32 [INFO] [stdout] | [INFO] [stdout] 666 | ... if let Err(e) = res { [INFO] [stdout] | ^^^^^^^^^^^^^--- [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/session.rs:668:29 [INFO] [stdout] | [INFO] [stdout] 668 | ... } [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 666 ~ match res { Err(e) => { [INFO] [stdout] 667 | error!("error adding torrent to session: {e:?}"); [INFO] [stdout] 668 ~ } _ => {}} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/session.rs:776:24 [INFO] [stdout] | [INFO] [stdout] 776 | if let Err(e) = live.add_incoming_peer(checked) { [INFO] [stdout] | ^^^^^^^^^^^^^------------------------------- [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/session.rs:778:21 [INFO] [stdout] | [INFO] [stdout] 778 | } [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 776 ~ match live.add_incoming_peer(checked) { Err(e) => { [INFO] [stdout] 777 | warn!("error handing over incoming connection: {e:#}"); [INFO] [stdout] 778 ~ } _ => {}} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/session.rs:832:16 [INFO] [stdout] | [INFO] [stdout] 832 | if let Err(e) = torrent.pause() { [INFO] [stdout] | ^^^^^^^^^^^^^--------------- [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/session.rs:834:13 [INFO] [stdout] | [INFO] [stdout] 834 | } [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 832 ~ match torrent.pause() { Err(e) => { [INFO] [stdout] 833 | debug!("error pausing torrent: {e:#}"); [INFO] [stdout] 834 ~ } _ => {}} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/session.rs:1088:21 [INFO] [stdout] | [INFO] [stdout] 1088 | let id = if let Some(id) = opts.preferred_id { [INFO] [stdout] | ^^^^^^^^^^^^^^^----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] 1089 | id [INFO] [stdout] 1090 | } else if let Some(p) = self.persistence.as_ref() { [INFO] [stdout] | ---------------- this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/session.rs:1090:9 [INFO] [stdout] | [INFO] [stdout] 1090 | } else if let Some(p) = self.persistence.as_ref() { [INFO] [stdout] | ^ [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/session.rs:1092:9 [INFO] [stdout] | [INFO] [stdout] 1092 | } else { [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 1088 ~ let id = match opts.preferred_id { Some(id) => { [INFO] [stdout] 1089 | id [INFO] [stdout] 1090 ~ } _ => { match self.persistence.as_ref() { Some(p) => { [INFO] [stdout] 1091 | p.next_id().await? [INFO] [stdout] 1092 ~ } _ => { [INFO] [stdout] 1093 | self.next_id [INFO] [stdout] 1094 | .fetch_add(1, std::sync::atomic::Ordering::Relaxed) [INFO] [stdout] 1095 ~ }}}}; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/session.rs:1170:16 [INFO] [stdout] | [INFO] [stdout] 1170 | if let Err(e) = p.store(id, &managed_torrent).await { [INFO] [stdout] | ^^^^^^^^^^^^^----------------------------------- [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/session.rs:1173:13 [INFO] [stdout] | [INFO] [stdout] 1173 | } [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 1170 ~ match p.store(id, &managed_torrent).await { Err(e) => { [INFO] [stdout] 1171 | self.db.write().torrents.remove(&id); [INFO] [stdout] 1172 | return Err(e); [INFO] [stdout] 1173 ~ } _ => {}} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/session.rs:1244:16 [INFO] [stdout] | [INFO] [stdout] 1244 | if let Err(e) = p.delete(id).await { [INFO] [stdout] | ^^^^^^^^^^^^^------------------ [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/session.rs:1246:13 [INFO] [stdout] | [INFO] [stdout] 1246 | } else { [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 1244 ~ match p.delete(id).await { Err(e) => { [INFO] [stdout] 1245 | error!(error=?e, "error deleting torrent from persistence database"); [INFO] [stdout] 1246 ~ } _ => { [INFO] [stdout] 1247 | debug!(?id, "deleted torrent from persistence database") [INFO] [stdout] 1248 ~ }} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/session.rs:1275:24 [INFO] [stdout] | [INFO] [stdout] 1275 | if let Err(e) = storage.remove_directory_if_empty(Path::new("")) { [INFO] [stdout] | ^^^^^^^^^^^^^------------------------------------------------ [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/session.rs:1280:21 [INFO] [stdout] | [INFO] [stdout] 1280 | } [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 1275 ~ match storage.remove_directory_if_empty(Path::new("")) { Err(e) => { [INFO] [stdout] 1276 | warn!( [INFO] [stdout] ... [INFO] [stdout] 1279 | ) [INFO] [stdout] 1280 ~ } _ => {}} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/session.rs:1325:12 [INFO] [stdout] | [INFO] [stdout] 1325 | if let Some(p) = self.persistence.as_ref() { [INFO] [stdout] | ^^^^^^^^^^^^^^----------------^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/session.rs:1329:9 [INFO] [stdout] | [INFO] [stdout] 1329 | } [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 1325 ~ match self.persistence.as_ref() { Some(p) => { [INFO] [stdout] 1326 | if let Err(e) = p.update_metadata(handle.id(), handle).await { [INFO] [stdout] 1327 | warn!(storage=?p, error=?e, "error updating metadata") [INFO] [stdout] 1328 | } [INFO] [stdout] 1329 ~ } _ => {}} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/session.rs:1326:16 [INFO] [stdout] | [INFO] [stdout] 1326 | if let Err(e) = p.update_metadata(handle.id(), handle).await { [INFO] [stdout] | ^^^^^^^^^^^^^-------------------------------------------- [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/session.rs:1328:13 [INFO] [stdout] | [INFO] [stdout] 1328 | } [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 1326 ~ match p.update_metadata(handle.id(), handle).await { Err(e) => { [INFO] [stdout] 1327 | warn!(storage=?p, error=?e, "error updating metadata") [INFO] [stdout] 1328 ~ } _ => {}} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/session.rs:1370:12 [INFO] [stdout] | [INFO] [stdout] 1370 | if let Err(e) = files.remove_file(id, fname) { [INFO] [stdout] | ^^^^^^^^^^^^^---------------------------- [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/session.rs:1372:9 [INFO] [stdout] | [INFO] [stdout] 1372 | } else { [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 1370 ~ match files.remove_file(id, fname) { Err(e) => { [INFO] [stdout] 1371 | warn!(?fi.relative_filename, error=?e, "could not delete file"); [INFO] [stdout] 1372 ~ } _ => { [INFO] [stdout] 1373 | debug!(?fi.relative_filename, "deleted the file") [INFO] [stdout] 1374 ~ }} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/session.rs:1389:12 [INFO] [stdout] | [INFO] [stdout] 1389 | if let Err(e) = files.remove_directory_if_empty(dir) { [INFO] [stdout] | ^^^^^^^^^^^^^------------------------------------ [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/session.rs:1391:9 [INFO] [stdout] | [INFO] [stdout] 1391 | } else { [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 1389 ~ match files.remove_directory_if_empty(dir) { Err(e) => { [INFO] [stdout] 1390 | warn!("error removing {dir:?}: {e:?}"); [INFO] [stdout] 1391 ~ } _ => { [INFO] [stdout] 1392 | debug!("removed {dir:?}") [INFO] [stdout] 1393 ~ }} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/session_persistence/json.rs:163:24 [INFO] [stdout] | [INFO] [stdout] 163 | if let Err(e) = f.write_all(&torrent.shared().torrent_bytes).await { [INFO] [stdout] | ^^^^^^^^^^^^^-------------------------------------------------- [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/session_persistence/json.rs:165:21 [INFO] [stdout] | [INFO] [stdout] 165 | } [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 163 ~ match f.write_all(&torrent.shared().torrent_bytes).await { Err(e) => { [INFO] [stdout] 164 | warn!(error=?e, file=?torrent_bytes_file, "error writing torrent bytes") [INFO] [stdout] 165 ~ } _ => {}} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/session_persistence/json.rs:260:12 [INFO] [stdout] | [INFO] [stdout] 260 | if let Some(t) = removed { [INFO] [stdout] | ^^^^^^^^^^^^^^------- [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/session_persistence/json.rs:273:9 [INFO] [stdout] | [INFO] [stdout] 273 | } else { [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 260 ~ match removed { Some(t) => { [INFO] [stdout] 261 | debug!(?id, "deleted from in-memory db, flushing"); [INFO] [stdout] ... [INFO] [stdout] 272 | } [INFO] [stdout] 273 ~ } _ => { [INFO] [stdout] 274 | bail!("error deleting: didn't find torrent id={id}") [INFO] [stdout] 275 ~ }} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/session_persistence/json.rs:267:20 [INFO] [stdout] | [INFO] [stdout] 267 | if let Err(e) = tokio::fs::remove_file(&tf).await { [INFO] [stdout] | ^^^^^^^^^^^^^--------------------------------- [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/session_persistence/json.rs:269:17 [INFO] [stdout] | [INFO] [stdout] 269 | } else { [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 267 ~ match tokio::fs::remove_file(&tf).await { Err(e) => { [INFO] [stdout] 268 | warn!(error=?e, filename=?tf, "error removing"); [INFO] [stdout] 269 ~ } _ => { [INFO] [stdout] 270 | debug!(filename=?tf, "removed"); [INFO] [stdout] 271 ~ }} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/session_persistence/json.rs:298:12 [INFO] [stdout] | [INFO] [stdout] 298 | if let Err(e) = torrent_bytes_file.read_to_end(&mut buf).await { [INFO] [stdout] | ^^^^^^^^^^^^^---------------------------------------------- [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/session_persistence/json.rs:300:9 [INFO] [stdout] | [INFO] [stdout] 300 | } else { [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 298 ~ match torrent_bytes_file.read_to_end(&mut buf).await { Err(e) => { [INFO] [stdout] 299 | warn!(error=?e, filename=?torrent_bytes_filename, "error reading torrent bytes file"); [INFO] [stdout] 300 ~ } _ => { [INFO] [stdout] 301 | st.torrent_bytes = buf.into(); [INFO] [stdout] 302 ~ }} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/torrent_state/mod.rs:194:20 [INFO] [stdout] | [INFO] [stdout] 194 | if let Err(err) = live.pause() { [INFO] [stdout] | ^^^^^^^^^^^^^^^------------ [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/torrent_state/mod.rs:199:17 [INFO] [stdout] | [INFO] [stdout] 199 | } [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 194 ~ match live.pause() { Err(err) => { [INFO] [stdout] 195 | warn!( [INFO] [stdout] ... [INFO] [stdout] 198 | ); [INFO] [stdout] 199 ~ } _ => {}} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/torrent_state/mod.rs:243:28 [INFO] [stdout] | [INFO] [stdout] 243 | if let Some(state) = state.upgrade() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^--------------- [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/torrent_state/mod.rs:245:25 [INFO] [stdout] | [INFO] [stdout] 245 | } else { [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 243 ~ match state.upgrade() { Some(state) => { [INFO] [stdout] 244 | state.stop_with_error(e); [INFO] [stdout] 245 ~ } _ => { [INFO] [stdout] 246 | warn!("tried to stop the torrent with error, but couldn't upgrade the arc"); [INFO] [stdout] 247 ~ }} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/torrent_state/mod.rs:265:46 [INFO] [stdout] | [INFO] [stdout] 265 | let mut peer_rx = if let Some(peer_rx) = peer_rx { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^------- [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/torrent_state/mod.rs:267:25 [INFO] [stdout] | [INFO] [stdout] 267 | } else { [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 265 ~ let mut peer_rx = match peer_rx { Some(peer_rx) => { [INFO] [stdout] 266 | peer_rx [INFO] [stdout] 267 ~ } _ => { [INFO] [stdout] 268 | return Ok(()); [INFO] [stdout] 269 ~ }}; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/torrent_state/mod.rs:323:36 [INFO] [stdout] | [INFO] [stdout] 323 | ... if let ManagedTorrentState::Initializing(_) = &g.state { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^------- [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/torrent_state/mod.rs:324:33 [INFO] [stdout] | [INFO] [stdout] 324 | ... } else { [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 323 ~ match &g.state { ManagedTorrentState::Initializing(_) => { [INFO] [stdout] 324 ~ } _ => { [INFO] [stdout] 325 | debug!("no need to start torrent anymore, as it switched state from initilizing"); [INFO] [stdout] 326 | return Ok(()); [INFO] [stdout] 327 ~ }} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/torrent_state/initializing.rs:42:12 [INFO] [stdout] | [INFO] [stdout] 42 | if let Some(r) = bf.get_mut(fi.piece_range_usize()) { [INFO] [stdout] | ^^^^^^^^^^^^^^--^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/torrent_state/initializing.rs:44:9 [INFO] [stdout] | [INFO] [stdout] 44 | } [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 42 ~ match bf.get_mut(fi.piece_range_usize()) { Some(r) => { [INFO] [stdout] 43 | r.fill(true); [INFO] [stdout] 44 ~ } _ => {}} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/torrent_state/initializing.rs:156:24 [INFO] [stdout] | [INFO] [stdout] 156 | if let Err(err) = self.files.ensure_file_length(idx, fi.len) { [INFO] [stdout] | ^^^^^^^^^^^^^^^------------------------------------------ [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/torrent_state/initializing.rs:161:21 [INFO] [stdout] | [INFO] [stdout] 161 | } else { [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 156 ~ match self.files.ensure_file_length(idx, fi.len) { Err(err) => { [INFO] [stdout] 157 | warn!( [INFO] [stdout] ... [INFO] [stdout] 160 | ); [INFO] [stdout] 161 ~ } _ => { [INFO] [stdout] 162 | trace!( [INFO] [stdout] ... [INFO] [stdout] 167 | ); [INFO] [stdout] 168 ~ }} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/torrent_state/live/mod.rs:158:12 [INFO] [stdout] | [INFO] [stdout] 158 | if let Some(Err(e)) = self [INFO] [stdout] | ____________^ - [INFO] [stdout] | |_______________________________| [INFO] [stdout] 159 | || .chunks [INFO] [stdout] 160 | || .as_mut() [INFO] [stdout] 161 | || .map(|ct| ct.get_have_pieces_mut().flush()) [INFO] [stdout] | ||_______________________________________________________^ this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | |_______________________________________________________| [INFO] [stdout] | [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/torrent_state/live/mod.rs:164:9 [INFO] [stdout] | [INFO] [stdout] 164 | } else { [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 158 ~ match self [INFO] [stdout] 159 | .chunks [INFO] [stdout] 160 | .as_mut() [INFO] [stdout] 161 | .map(|ct| ct.get_have_pieces_mut().flush()) [INFO] [stdout] 162 ~ { Some(Err(e)) => { [INFO] [stdout] 163 | warn!(error=?e, "error flushing bitfield"); [INFO] [stdout] 164 ~ } _ => { [INFO] [stdout] 165 | trace!("flushed bitfield"); [INFO] [stdout] 166 | self.unflushed_bitv_bytes = 0; [INFO] [stdout] 167 ~ }} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/torrent_state/live/mod.rs:772:16 [INFO] [stdout] | [INFO] [stdout] 772 | if let PeerState::Live(l) = pe.value().state.get() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^----------------^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/torrent_state/live/mod.rs:781:13 [INFO] [stdout] | [INFO] [stdout] 781 | } [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 772 ~ match pe.value().state.get() { PeerState::Live(l) => { [INFO] [stdout] 773 | if l.has_full_torrent(self.lengths.total_pieces() as usize) { [INFO] [stdout] ... [INFO] [stdout] 780 | } [INFO] [stdout] 781 ~ } _ => {}} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/torrent_state/live/mod.rs:1129:20 [INFO] [stdout] | [INFO] [stdout] 1129 | if let Some(_g) = self.state.per_piece_locks[idx.get_usize()].try_write() { [INFO] [stdout] | ^^^^^^^^^^^^^^^------------------------------------------------------- [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/torrent_state/live/mod.rs:1138:17 [INFO] [stdout] | [INFO] [stdout] 1138 | } else { [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 1129 ~ match self.state.per_piece_locks[idx.get_usize()].try_write() { Some(_g) => { [INFO] [stdout] 1130 | debug!( [INFO] [stdout] ... [INFO] [stdout] 1137 | (*idx, old) [INFO] [stdout] 1138 ~ } _ => { [INFO] [stdout] 1139 | debug!(?idx, ?piece_req, "attempted to steal but peer was writing"); [INFO] [stdout] 1140 | return None; [INFO] [stdout] 1141 ~ }} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/torrent_state/live/mod.rs:1603:12 [INFO] [stdout] | [INFO] [stdout] 1603 | if let Some(dtx) = self.state.disk_work_tx() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^----------^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/torrent_state/live/mod.rs:1620:9 [INFO] [stdout] | [INFO] [stdout] 1620 | } else { [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 1603 ~ match self.state.disk_work_tx() { Some(dtx) => { [INFO] [stdout] 1604 | // TODO: shove all this into one thing to .clone() once rather than 5 times. [INFO] [stdout] ... [INFO] [stdout] 1619 | dtx.send(Box::new(work)).await?; [INFO] [stdout] 1620 ~ } _ => { [INFO] [stdout] 1621 | self.state [INFO] [stdout] ... [INFO] [stdout] 1627 | .with_context(|| format!("error processing received chunk {chunk_info:?}"))?; [INFO] [stdout] 1628 ~ }} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/torrent_state/live/mod.rs:1614:24 [INFO] [stdout] | [INFO] [stdout] 1614 | if let Err(e) = write_to_disk(&state, addr, &counters, &piece, &chunk_info) { [INFO] [stdout] | ^^^^^^^^^^^^^----------------------------------------------------------- [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/torrent_state/live/mod.rs:1616:21 [INFO] [stdout] | [INFO] [stdout] 1616 | } [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 1614 ~ match write_to_disk(&state, addr, &counters, &piece, &chunk_info) { Err(e) => { [INFO] [stdout] 1615 | let _ = tx.send(WriterRequest::Disconnect(Err(e))); [INFO] [stdout] 1616 ~ } _ => {}} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/torrent_state/live/peer/mod.rs:170:12 [INFO] [stdout] | [INFO] [stdout] 170 | if let PeerState::Connecting(_) = &self.0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^------ [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/torrent_state/live/peer/mod.rs:180:9 [INFO] [stdout] | [INFO] [stdout] 180 | } else { [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 170 ~ match &self.0 { PeerState::Connecting(_) => { [INFO] [stdout] 171 | let tx = match self.take(counters) { [INFO] [stdout] ... [INFO] [stdout] 179 | self.get_live_mut() [INFO] [stdout] 180 ~ } _ => { [INFO] [stdout] 181 | None [INFO] [stdout] 182 ~ }} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `impl std::fmt::Display` will capture more lifetimes than possibly intended in edition 2024 [INFO] [stdout] --> src/torrent_state/stats.rs:101:54 [INFO] [stdout] | [INFO] [stdout] 101 | pub fn progress_percent_human_readable(&self) -> impl std::fmt::Display { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see [INFO] [stdout] note: specifically, this lifetime is in scope but not mentioned in the type's bounds [INFO] [stdout] --> src/torrent_state/stats.rs:101:44 [INFO] [stdout] | [INFO] [stdout] 101 | pub fn progress_percent_human_readable(&self) -> impl std::fmt::Display { [INFO] [stdout] | ^ [INFO] [stdout] = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024 [INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit [INFO] [stdout] | [INFO] [stdout] 101 | pub fn progress_percent_human_readable(&self) -> impl std::fmt::Display + use<> { [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `impl std::fmt::Display` will capture more lifetimes than possibly intended in edition 2024 [INFO] [stdout] --> src/torrent_state/stats.rs:121:52 [INFO] [stdout] | [INFO] [stdout] 121 | pub fn progress_bytes_human_readable(&self) -> impl std::fmt::Display { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see [INFO] [stdout] note: specifically, this lifetime is in scope but not mentioned in the type's bounds [INFO] [stdout] --> src/torrent_state/stats.rs:121:42 [INFO] [stdout] | [INFO] [stdout] 121 | pub fn progress_bytes_human_readable(&self) -> impl std::fmt::Display { [INFO] [stdout] | ^ [INFO] [stdout] = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024 [INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit [INFO] [stdout] | [INFO] [stdout] 121 | pub fn progress_bytes_human_readable(&self) -> impl std::fmt::Display + use<> { [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `impl Iterator + 'a` will capture more lifetimes than possibly intended in edition 2024 [INFO] [stdout] --> src/torrent_state/streaming.rs:42:50 [INFO] [stdout] | [INFO] [stdout] 42 | fn queue<'a>(&self, lengths: &'a Lengths) -> impl Iterator + 'a { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see [INFO] [stdout] note: specifically, this lifetime is in scope but not mentioned in the type's bounds [INFO] [stdout] --> src/torrent_state/streaming.rs:42:18 [INFO] [stdout] | [INFO] [stdout] 42 | fn queue<'a>(&self, lengths: &'a Lengths) -> impl Iterator + 'a { [INFO] [stdout] | ^ [INFO] [stdout] = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024 [INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit [INFO] [stdout] | [INFO] [stdout] 42 | fn queue<'a>(&self, lengths: &'a Lengths) -> impl Iterator + 'a + use<'a> { [INFO] [stdout] | +++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/torrent_state/streaming.rs:64:12 [INFO] [stdout] | [INFO] [stdout] 64 | if let Some(mut s) = self.streams.get_mut(&stream_id) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^-------------------------------- [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/torrent_state/streaming.rs:67:9 [INFO] [stdout] | [INFO] [stdout] 67 | } [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 64 ~ match self.streams.get_mut(&stream_id) { Some(mut s) => { [INFO] [stdout] 65 | let vm = s.value_mut(); [INFO] [stdout] 66 | vm.waker = Some(waker); [INFO] [stdout] 67 ~ } _ => {}} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/torrent_state/streaming.rs:83:23 [INFO] [stdout] | [INFO] [stdout] 83 | while let Some(mut it) = self.all.pop_front() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^-------------------- [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/torrent_state/streaming.rs:88:17 [INFO] [stdout] | [INFO] [stdout] 88 | } [INFO] [stdout] | ^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/torrent_state/streaming.rs:84:24 [INFO] [stdout] | [INFO] [stdout] 84 | if let Some(piece) = it.next() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^--^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/torrent_state/streaming.rs:87:21 [INFO] [stdout] | [INFO] [stdout] 87 | } [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 84 ~ match it.next() { Some(piece) => { [INFO] [stdout] 85 | self.all.push_back(it); [INFO] [stdout] 86 | return Some(piece); [INFO] [stdout] 87 ~ } _ => {}} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/torrent_state/streaming.rs:109:20 [INFO] [stdout] | [INFO] [stdout] 109 | if let Some(waker) = w.value_mut().waker.take() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^-------------------------- [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/torrent_state/streaming.rs:116:17 [INFO] [stdout] | [INFO] [stdout] 116 | } [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 109 ~ match w.value_mut().waker.take() { Some(waker) => { [INFO] [stdout] 110 | trace!( [INFO] [stdout] ... [INFO] [stdout] 115 | waker.wake(); [INFO] [stdout] 116 ~ } _ => {}} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 49 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Migrating examples/custom_storage.rs from 2021 edition to 2024 [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/peer_connection.rs:336:64 [INFO] [stdout] | [INFO] [stdout] 336 | ... let sleep_ms = (rand::thread_rng().gen::() [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] = note: `--force-warn keyword-idents-2024` implied by `--force-warn rust-2024-compatibility` [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] warning: failed to automatically apply fixes suggested by rustc to crate `librqbit` [INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition [INFO] [stdout] --> src/lib.rs:29:9 [INFO] [stdout] | [INFO] [stdout] 29 | ($e:expr) => {{ [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see Migration Guide [INFO] [stdout] = note: `--force-warn edition-2024-expr-fragment-specifier` implied by `--force-warn rust-2024-compatibility` [INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier [INFO] [stdout] | [INFO] [stdout] 29 | ($e:expr_2021) => {{ [INFO] [stdout] | ~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] [INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition [INFO] [stdout] --> src/api.rs:74:17 [INFO] [stdout] | [INFO] [stdout] 74 | ($v:expr) => {{ [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see Migration Guide [INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier [INFO] [stdout] | [INFO] [stdout] 74 | ($v:expr_2021) => {{ [INFO] [stdout] | ~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] after fixes were automatically applied the compiler reported errors within these files: [INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition [INFO] [stdout] --> src/session.rs:527:29 [INFO] [stdout] | [INFO] [stdout] 527 | ($store:expr) => { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see Migration Guide [INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier [INFO] [stdout] | [INFO] [stdout] 527 | ($store:expr_2021) => { [INFO] [stdout] | ~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] [INFO] [stdout] warning: elided lifetime has a name [INFO] [stdout] --> src/session_persistence/json.rs:308:35 [INFO] [stdout] | [INFO] [stdout] 307 | &self, [INFO] [stdout] | - lifetime `'life0` declared here [INFO] [stdout] 308 | ) -> anyhow::Result>> { [INFO] [stdout] | ^^ this elided lifetime gets resolved as `'life0` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(elided_named_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] * src/api.rs [INFO] [stdout] warning: elided lifetime has a name [INFO] [stdout] --> src/session_persistence/mod.rs:79:35 [INFO] [stdout] | [INFO] [stdout] 78 | &self, [INFO] [stdout] | - lifetime `'life0` declared here [INFO] [stdout] 79 | ) -> anyhow::Result>>; [INFO] [stdout] | ^^ this elided lifetime gets resolved as `'life0` [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] * src/lib.rs [INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition [INFO] [stdout] --> src/torrent_state/streaming.rs:146:9 [INFO] [stdout] | [INFO] [stdout] 146 | ($e:expr) => { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see Migration Guide [INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier [INFO] [stdout] | [INFO] [stdout] 146 | ($e:expr_2021) => { [INFO] [stdout] | ~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] * src/session.rs [INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition [INFO] [stdout] --> src/torrent_state/streaming.rs:152:9 [INFO] [stdout] | [INFO] [stdout] 152 | ($e:expr) => {{ [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see Migration Guide [INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier [INFO] [stdout] | [INFO] [stdout] 152 | ($e:expr_2021) => {{ [INFO] [stdout] | ~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] * src/session_persistence/json.rs [INFO] [stderr] * src/session_persistence/mod.rs [INFO] [stderr] * src/torrent_state/streaming.rs [INFO] [stderr] [INFO] [stderr] This likely indicates a bug in either rustc or cargo itself, [INFO] [stderr] and we would appreciate a bug report! You're likely to see [INFO] [stderr] a number of compiler warnings after this message which cargo [INFO] [stderr] attempted to fix but failed. If you could open an issue at [INFO] [stderr] https://github.com/rust-lang/rust/issues [INFO] [stderr] quoting the full output of this command we'd be very appreciative! [INFO] [stderr] Note that you may be able to make some more progress in the near-term [INFO] [stderr] fixing code with the `--broken-code` flag [INFO] [stderr] [INFO] [stderr] The following errors were reported: [INFO] [stderr] error[E0658]: fragment specifier `expr_2021` is unstable [INFO] [stderr] --> src/lib.rs:29:6 [INFO] [stderr] | [INFO] [stderr] 29 | ($e:expr_2021) => {{ [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: see issue #123742 for more information [INFO] [stderr] = help: add `#![feature(expr_fragment_specifier_2024)]` to the crate attributes to enable [INFO] [stderr] = note: this compiler was built on 2024-09-17; consider upgrading it if it is out of date [INFO] [stderr] [INFO] [stderr] error[E0658]: fragment specifier `expr_2021` is unstable [INFO] [stderr] --> src/api.rs:74:14 [INFO] [stderr] | [INFO] [stderr] 74 | ($v:expr_2021) => {{ [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: see issue #123742 for more information [INFO] [stderr] = help: add `#![feature(expr_fragment_specifier_2024)]` to the crate attributes to enable [INFO] [stderr] = note: this compiler was built on 2024-09-17; consider upgrading it if it is out of date [INFO] [stderr] [INFO] [stderr] error[E0658]: fragment specifier `expr_2021` is unstable [INFO] [stderr] --> src/session.rs:527:22 [INFO] [stderr] | [INFO] [stderr] 527 | ($store:expr_2021) => { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: see issue #123742 for more information [INFO] [stderr] = help: add `#![feature(expr_fragment_specifier_2024)]` to the crate attributes to enable [INFO] [stderr] = note: this compiler was built on 2024-09-17; consider upgrading it if it is out of date [INFO] [stderr] [INFO] [stderr] error[E0658]: fragment specifier `expr_2021` is unstable [INFO] [stderr] --> src/torrent_state/streaming.rs:146:6 [INFO] [stderr] | [INFO] [stderr] 146 | ($e:expr_2021) => { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: see issue #123742 for more information [INFO] [stderr] = help: add `#![feature(expr_fragment_specifier_2024)]` to the crate attributes to enable [INFO] [stderr] = note: this compiler was built on 2024-09-17; consider upgrading it if it is out of date [INFO] [stderr] [INFO] [stderr] error[E0658]: fragment specifier `expr_2021` is unstable [INFO] [stderr] --> src/torrent_state/streaming.rs:152:6 [INFO] [stderr] | [INFO] [stderr] 152 | ($e:expr_2021) => {{ [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: see issue #123742 for more information [INFO] [stderr] = help: add `#![feature(expr_fragment_specifier_2024)]` to the crate attributes to enable [INFO] [stderr] = note: this compiler was built on 2024-09-17; consider upgrading it if it is out of date [INFO] [stderr] [INFO] [stderr] warning: elided lifetime has a name [INFO] [stderr] --> src/session_persistence/json.rs:308:35 [INFO] [stderr] | [INFO] [stderr] 307 | &self, [INFO] [stderr] | - lifetime `'life0` declared here [INFO] [stderr] 308 | ) -> anyhow::Result>> { [INFO] [stderr] | ^^ this elided lifetime gets resolved as `'life0` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(elided_named_lifetimes)]` on by default [INFO] [stderr] [INFO] [stderr] warning: elided lifetime has a name [INFO] [stderr] --> src/session_persistence/mod.rs:79:35 [INFO] [stderr] | [INFO] [stderr] 78 | &self, [INFO] [stderr] | - lifetime `'life0` declared here [INFO] [stderr] 79 | ) -> anyhow::Result>>; [INFO] [stderr] | ^^ this elided lifetime gets resolved as `'life0` [INFO] [stderr] [INFO] [stderr] error: aborting due to 5 previous errors; 2 warnings emitted [INFO] [stderr] [INFO] [stderr] For more information about this error, try `rustc --explain E0658`. [INFO] [stderr] Original diagnostics will follow. [INFO] [stderr] [INFO] [stdout] warning: unused import: `Context` [INFO] [stdout] --> src/tests/test_util.rs:8:20 [INFO] [stdout] | [INFO] [stdout] 8 | use anyhow::{bail, Context}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: call to deprecated safe function `std::env::set_var` is unsafe and requires unsafe block [INFO] [stdout] --> src/tests/test_util.rs:17:9 [INFO] [stdout] | [INFO] [stdout] 17 | std::env::set_var("RUST_LOG", "debug"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #27970 [INFO] [stdout] = note: `--force-warn deprecated-safe-2024` implied by `--force-warn rust-2024-compatibility` [INFO] [stdout] help: you can wrap the call in an `unsafe` block if you can guarantee that the environment access only happens in single-threaded code [INFO] [stdout] | [INFO] [stdout] 17 + // TODO: Audit that the environment access only happens in single-threaded code. [INFO] [stdout] 18 ~ unsafe { std::env::set_var("RUST_LOG", "debug") }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `impl Serialize` will capture more lifetimes than possibly intended in edition 2024 [INFO] [stdout] --> src/api.rs:392:43 [INFO] [stdout] | [INFO] [stdout] 392 | pub fn api_dht_table(&self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see [INFO] [stdout] note: specifically, this lifetime is in scope but not mentioned in the type's bounds [INFO] [stdout] --> src/api.rs:392:26 [INFO] [stdout] | [INFO] [stdout] 392 | pub fn api_dht_table(&self) -> Result { [INFO] [stdout] | ^ [INFO] [stdout] = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024 [INFO] [stdout] = note: `--force-warn impl-trait-overcaptures` implied by `--force-warn rust-2024-compatibility` [INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit [INFO] [stdout] | [INFO] [stdout] 392 | pub fn api_dht_table(&self) -> Result> { [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/chunk_tracker.rs:247:12 [INFO] [stdout] | [INFO] [stdout] 247 | if let Some(s) = self.chunk_status.get_mut(self.lengths.chunk_range(index)) { [INFO] [stdout] | ^^^^^^^^^^^^^^-----------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/chunk_tracker.rs:249:9 [INFO] [stdout] | [INFO] [stdout] 249 | } [INFO] [stdout] | ^ [INFO] [stdout] = note: `--force-warn if-let-rescope` implied by `--force-warn rust-2024-compatibility` [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 247 ~ match self.chunk_status.get_mut(self.lengths.chunk_range(index)) { Some(s) => { [INFO] [stdout] 248 | s.fill(false); [INFO] [stdout] 249 ~ } _ => {}} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `impl Iterator` will capture more lifetimes than possibly intended in edition 2024 [INFO] [stdout] --> src/file_info.rs:30:44 [INFO] [stdout] | [INFO] [stdout] 30 | pub fn iter_piece_priorities(&self) -> impl Iterator { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see [INFO] [stdout] note: specifically, this lifetime is in scope but not mentioned in the type's bounds [INFO] [stdout] --> src/file_info.rs:30:34 [INFO] [stdout] | [INFO] [stdout] 30 | pub fn iter_piece_priorities(&self) -> impl Iterator { [INFO] [stdout] | ^ [INFO] [stdout] = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024 [INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit [INFO] [stdout] | [INFO] [stdout] 30 | pub fn iter_piece_priorities(&self) -> impl Iterator + use<> { [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/file_ops.rs:139:20 [INFO] [stdout] | [INFO] [stdout] 139 | if let Err(err) = update_hash_from_file( [INFO] [stdout] | ____________________^ - [INFO] [stdout] | |___________________________________| [INFO] [stdout] 140 | || current_file.index, [INFO] [stdout] 141 | || pos, [INFO] [stdout] 142 | || self.files, [INFO] [stdout] ... || [INFO] [stdout] 145 | || to_read_in_file, [INFO] [stdout] 146 | || ) { [INFO] [stdout] | ||_________________^ this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | |_________________| [INFO] [stdout] | [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/file_ops.rs:153:17 [INFO] [stdout] | [INFO] [stdout] 153 | } [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 139 ~ match update_hash_from_file( [INFO] [stdout] 140 | current_file.index, [INFO] [stdout] ... [INFO] [stdout] 145 | to_read_in_file, [INFO] [stdout] 146 ~ ) { Err(err) => { [INFO] [stdout] 147 | debug!( [INFO] [stdout] ... [INFO] [stdout] 152 | some_files_broken = true; [INFO] [stdout] 153 ~ } _ => {}} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/session.rs:489:20 [INFO] [stdout] | [INFO] [stdout] 489 | if let Some(port_range) = opts.listen_port_range.clone() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^----^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/session.rs:495:17 [INFO] [stdout] | [INFO] [stdout] 495 | } else { [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 489 ~ match opts.listen_port_range.clone() { Some(port_range) => { [INFO] [stdout] 490 | let (l, p) = create_tcp_listener(port_range) [INFO] [stdout] ... [INFO] [stdout] 494 | (Some(l), Some(p)) [INFO] [stdout] 495 ~ } _ => { [INFO] [stdout] 496 | (None, None) [INFO] [stdout] 497 ~ }}; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/session.rs:586:34 [INFO] [stdout] | [INFO] [stdout] 586 | let builder = if let Some(proxy_url) = opts.socks_proxy_url.as_ref() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^----^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/session.rs:590:17 [INFO] [stdout] | [INFO] [stdout] 590 | } else { [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 586 ~ let builder = match opts.socks_proxy_url.as_ref() { Some(proxy_url) => { [INFO] [stdout] 587 | let proxy = reqwest::Proxy::all(proxy_url) [INFO] [stdout] 588 | .context("error creating socks5 proxy for HTTP")?; [INFO] [stdout] 589 | reqwest::Client::builder().proxy(proxy) [INFO] [stdout] 590 ~ } _ => { [INFO] [stdout] 591 | reqwest::Client::builder() [INFO] [stdout] 592 ~ }}; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/session.rs:627:31 [INFO] [stdout] | [INFO] [stdout] 627 | while let Some(work) = disk_write_rx.recv().await { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^-------------------------- [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/session.rs:630:25 [INFO] [stdout] | [INFO] [stdout] 630 | } [INFO] [stdout] | ^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/session.rs:666:32 [INFO] [stdout] | [INFO] [stdout] 666 | ... if let Err(e) = res { [INFO] [stdout] | ^^^^^^^^^^^^^--- [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/session.rs:668:29 [INFO] [stdout] | [INFO] [stdout] 668 | ... } [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 666 ~ match res { Err(e) => { [INFO] [stdout] 667 | error!("error adding torrent to session: {e:?}"); [INFO] [stdout] 668 ~ } _ => {}} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/session.rs:776:24 [INFO] [stdout] | [INFO] [stdout] 776 | if let Err(e) = live.add_incoming_peer(checked) { [INFO] [stdout] | ^^^^^^^^^^^^^------------------------------- [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/session.rs:778:21 [INFO] [stdout] | [INFO] [stdout] 778 | } [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 776 ~ match live.add_incoming_peer(checked) { Err(e) => { [INFO] [stdout] 777 | warn!("error handing over incoming connection: {e:#}"); [INFO] [stdout] 778 ~ } _ => {}} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/session.rs:832:16 [INFO] [stdout] | [INFO] [stdout] 832 | if let Err(e) = torrent.pause() { [INFO] [stdout] | ^^^^^^^^^^^^^--------------- [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/session.rs:834:13 [INFO] [stdout] | [INFO] [stdout] 834 | } [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 832 ~ match torrent.pause() { Err(e) => { [INFO] [stdout] 833 | debug!("error pausing torrent: {e:#}"); [INFO] [stdout] 834 ~ } _ => {}} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/session.rs:1088:21 [INFO] [stdout] | [INFO] [stdout] 1088 | let id = if let Some(id) = opts.preferred_id { [INFO] [stdout] | ^^^^^^^^^^^^^^^----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] 1089 | id [INFO] [stdout] 1090 | } else if let Some(p) = self.persistence.as_ref() { [INFO] [stdout] | ---------------- this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/session.rs:1090:9 [INFO] [stdout] | [INFO] [stdout] 1090 | } else if let Some(p) = self.persistence.as_ref() { [INFO] [stdout] | ^ [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/session.rs:1092:9 [INFO] [stdout] | [INFO] [stdout] 1092 | } else { [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 1088 ~ let id = match opts.preferred_id { Some(id) => { [INFO] [stdout] 1089 | id [INFO] [stdout] 1090 ~ } _ => { match self.persistence.as_ref() { Some(p) => { [INFO] [stdout] 1091 | p.next_id().await? [INFO] [stdout] 1092 ~ } _ => { [INFO] [stdout] 1093 | self.next_id [INFO] [stdout] 1094 | .fetch_add(1, std::sync::atomic::Ordering::Relaxed) [INFO] [stdout] 1095 ~ }}}}; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/session.rs:1170:16 [INFO] [stdout] | [INFO] [stdout] 1170 | if let Err(e) = p.store(id, &managed_torrent).await { [INFO] [stdout] | ^^^^^^^^^^^^^----------------------------------- [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/session.rs:1173:13 [INFO] [stdout] | [INFO] [stdout] 1173 | } [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 1170 ~ match p.store(id, &managed_torrent).await { Err(e) => { [INFO] [stdout] 1171 | self.db.write().torrents.remove(&id); [INFO] [stdout] 1172 | return Err(e); [INFO] [stdout] 1173 ~ } _ => {}} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/session.rs:1244:16 [INFO] [stdout] | [INFO] [stdout] 1244 | if let Err(e) = p.delete(id).await { [INFO] [stdout] | ^^^^^^^^^^^^^------------------ [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/session.rs:1246:13 [INFO] [stdout] | [INFO] [stdout] 1246 | } else { [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 1244 ~ match p.delete(id).await { Err(e) => { [INFO] [stdout] 1245 | error!(error=?e, "error deleting torrent from persistence database"); [INFO] [stdout] 1246 ~ } _ => { [INFO] [stdout] 1247 | debug!(?id, "deleted torrent from persistence database") [INFO] [stdout] 1248 ~ }} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/session.rs:1275:24 [INFO] [stdout] | [INFO] [stdout] 1275 | if let Err(e) = storage.remove_directory_if_empty(Path::new("")) { [INFO] [stdout] | ^^^^^^^^^^^^^------------------------------------------------ [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/session.rs:1280:21 [INFO] [stdout] | [INFO] [stdout] 1280 | } [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 1275 ~ match storage.remove_directory_if_empty(Path::new("")) { Err(e) => { [INFO] [stdout] 1276 | warn!( [INFO] [stdout] ... [INFO] [stdout] 1279 | ) [INFO] [stdout] 1280 ~ } _ => {}} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/session.rs:1325:12 [INFO] [stdout] | [INFO] [stdout] 1325 | if let Some(p) = self.persistence.as_ref() { [INFO] [stdout] | ^^^^^^^^^^^^^^----------------^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/session.rs:1329:9 [INFO] [stdout] | [INFO] [stdout] 1329 | } [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 1325 ~ match self.persistence.as_ref() { Some(p) => { [INFO] [stdout] 1326 | if let Err(e) = p.update_metadata(handle.id(), handle).await { [INFO] [stdout] 1327 | warn!(storage=?p, error=?e, "error updating metadata") [INFO] [stdout] 1328 | } [INFO] [stdout] 1329 ~ } _ => {}} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/session.rs:1326:16 [INFO] [stdout] | [INFO] [stdout] 1326 | if let Err(e) = p.update_metadata(handle.id(), handle).await { [INFO] [stdout] | ^^^^^^^^^^^^^-------------------------------------------- [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/session.rs:1328:13 [INFO] [stdout] | [INFO] [stdout] 1328 | } [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 1326 ~ match p.update_metadata(handle.id(), handle).await { Err(e) => { [INFO] [stdout] 1327 | warn!(storage=?p, error=?e, "error updating metadata") [INFO] [stdout] 1328 ~ } _ => {}} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/session.rs:1370:12 [INFO] [stdout] | [INFO] [stdout] 1370 | if let Err(e) = files.remove_file(id, fname) { [INFO] [stdout] | ^^^^^^^^^^^^^---------------------------- [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/session.rs:1372:9 [INFO] [stdout] | [INFO] [stdout] 1372 | } else { [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 1370 ~ match files.remove_file(id, fname) { Err(e) => { [INFO] [stdout] 1371 | warn!(?fi.relative_filename, error=?e, "could not delete file"); [INFO] [stdout] 1372 ~ } _ => { [INFO] [stdout] 1373 | debug!(?fi.relative_filename, "deleted the file") [INFO] [stdout] 1374 ~ }} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/session.rs:1389:12 [INFO] [stdout] | [INFO] [stdout] 1389 | if let Err(e) = files.remove_directory_if_empty(dir) { [INFO] [stdout] | ^^^^^^^^^^^^^------------------------------------ [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/session.rs:1391:9 [INFO] [stdout] | [INFO] [stdout] 1391 | } else { [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 1389 ~ match files.remove_directory_if_empty(dir) { Err(e) => { [INFO] [stdout] 1390 | warn!("error removing {dir:?}: {e:?}"); [INFO] [stdout] 1391 ~ } _ => { [INFO] [stdout] 1392 | debug!("removed {dir:?}") [INFO] [stdout] 1393 ~ }} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/session_persistence/json.rs:163:24 [INFO] [stdout] | [INFO] [stdout] 163 | if let Err(e) = f.write_all(&torrent.shared().torrent_bytes).await { [INFO] [stdout] | ^^^^^^^^^^^^^-------------------------------------------------- [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/session_persistence/json.rs:165:21 [INFO] [stdout] | [INFO] [stdout] 165 | } [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 163 ~ match f.write_all(&torrent.shared().torrent_bytes).await { Err(e) => { [INFO] [stdout] 164 | warn!(error=?e, file=?torrent_bytes_file, "error writing torrent bytes") [INFO] [stdout] 165 ~ } _ => {}} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/session_persistence/json.rs:260:12 [INFO] [stdout] | [INFO] [stdout] 260 | if let Some(t) = removed { [INFO] [stdout] | ^^^^^^^^^^^^^^------- [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/session_persistence/json.rs:273:9 [INFO] [stdout] | [INFO] [stdout] 273 | } else { [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 260 ~ match removed { Some(t) => { [INFO] [stdout] 261 | debug!(?id, "deleted from in-memory db, flushing"); [INFO] [stdout] ... [INFO] [stdout] 272 | } [INFO] [stdout] 273 ~ } _ => { [INFO] [stdout] 274 | bail!("error deleting: didn't find torrent id={id}") [INFO] [stdout] 275 ~ }} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/session_persistence/json.rs:267:20 [INFO] [stdout] | [INFO] [stdout] 267 | if let Err(e) = tokio::fs::remove_file(&tf).await { [INFO] [stdout] | ^^^^^^^^^^^^^--------------------------------- [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/session_persistence/json.rs:269:17 [INFO] [stdout] | [INFO] [stdout] 269 | } else { [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 267 ~ match tokio::fs::remove_file(&tf).await { Err(e) => { [INFO] [stdout] 268 | warn!(error=?e, filename=?tf, "error removing"); [INFO] [stdout] 269 ~ } _ => { [INFO] [stdout] 270 | debug!(filename=?tf, "removed"); [INFO] [stdout] 271 ~ }} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/session_persistence/json.rs:298:12 [INFO] [stdout] | [INFO] [stdout] 298 | if let Err(e) = torrent_bytes_file.read_to_end(&mut buf).await { [INFO] [stdout] | ^^^^^^^^^^^^^---------------------------------------------- [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/session_persistence/json.rs:300:9 [INFO] [stdout] | [INFO] [stdout] 300 | } else { [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 298 ~ match torrent_bytes_file.read_to_end(&mut buf).await { Err(e) => { [INFO] [stdout] 299 | warn!(error=?e, filename=?torrent_bytes_filename, "error reading torrent bytes file"); [INFO] [stdout] 300 ~ } _ => { [INFO] [stdout] 301 | st.torrent_bytes = buf.into(); [INFO] [stdout] 302 ~ }} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/torrent_state/mod.rs:194:20 [INFO] [stdout] | [INFO] [stdout] 194 | if let Err(err) = live.pause() { [INFO] [stdout] | ^^^^^^^^^^^^^^^------------ [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/torrent_state/mod.rs:199:17 [INFO] [stdout] | [INFO] [stdout] 199 | } [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 194 ~ match live.pause() { Err(err) => { [INFO] [stdout] 195 | warn!( [INFO] [stdout] ... [INFO] [stdout] 198 | ); [INFO] [stdout] 199 ~ } _ => {}} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/torrent_state/mod.rs:243:28 [INFO] [stdout] | [INFO] [stdout] 243 | if let Some(state) = state.upgrade() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^--------------- [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/torrent_state/mod.rs:245:25 [INFO] [stdout] | [INFO] [stdout] 245 | } else { [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 243 ~ match state.upgrade() { Some(state) => { [INFO] [stdout] 244 | state.stop_with_error(e); [INFO] [stdout] 245 ~ } _ => { [INFO] [stdout] 246 | warn!("tried to stop the torrent with error, but couldn't upgrade the arc"); [INFO] [stdout] 247 ~ }} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/torrent_state/mod.rs:265:46 [INFO] [stdout] | [INFO] [stdout] 265 | let mut peer_rx = if let Some(peer_rx) = peer_rx { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^------- [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/torrent_state/mod.rs:267:25 [INFO] [stdout] | [INFO] [stdout] 267 | } else { [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 265 ~ let mut peer_rx = match peer_rx { Some(peer_rx) => { [INFO] [stdout] 266 | peer_rx [INFO] [stdout] 267 ~ } _ => { [INFO] [stdout] 268 | return Ok(()); [INFO] [stdout] 269 ~ }}; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/torrent_state/mod.rs:323:36 [INFO] [stdout] | [INFO] [stdout] 323 | ... if let ManagedTorrentState::Initializing(_) = &g.state { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^------- [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/torrent_state/mod.rs:324:33 [INFO] [stdout] | [INFO] [stdout] 324 | ... } else { [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 323 ~ match &g.state { ManagedTorrentState::Initializing(_) => { [INFO] [stdout] 324 ~ } _ => { [INFO] [stdout] 325 | debug!("no need to start torrent anymore, as it switched state from initilizing"); [INFO] [stdout] 326 | return Ok(()); [INFO] [stdout] 327 ~ }} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/torrent_state/initializing.rs:42:12 [INFO] [stdout] | [INFO] [stdout] 42 | if let Some(r) = bf.get_mut(fi.piece_range_usize()) { [INFO] [stdout] | ^^^^^^^^^^^^^^--^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/torrent_state/initializing.rs:44:9 [INFO] [stdout] | [INFO] [stdout] 44 | } [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 42 ~ match bf.get_mut(fi.piece_range_usize()) { Some(r) => { [INFO] [stdout] 43 | r.fill(true); [INFO] [stdout] 44 ~ } _ => {}} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/torrent_state/initializing.rs:156:24 [INFO] [stdout] | [INFO] [stdout] 156 | if let Err(err) = self.files.ensure_file_length(idx, fi.len) { [INFO] [stdout] | ^^^^^^^^^^^^^^^------------------------------------------ [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/torrent_state/initializing.rs:161:21 [INFO] [stdout] | [INFO] [stdout] 161 | } else { [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 156 ~ match self.files.ensure_file_length(idx, fi.len) { Err(err) => { [INFO] [stdout] 157 | warn!( [INFO] [stdout] ... [INFO] [stdout] 160 | ); [INFO] [stdout] 161 ~ } _ => { [INFO] [stdout] 162 | trace!( [INFO] [stdout] ... [INFO] [stdout] 167 | ); [INFO] [stdout] 168 ~ }} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/torrent_state/live/mod.rs:158:12 [INFO] [stdout] | [INFO] [stdout] 158 | if let Some(Err(e)) = self [INFO] [stdout] | ____________^ - [INFO] [stdout] | |_______________________________| [INFO] [stdout] 159 | || .chunks [INFO] [stdout] 160 | || .as_mut() [INFO] [stdout] 161 | || .map(|ct| ct.get_have_pieces_mut().flush()) [INFO] [stdout] | ||_______________________________________________________^ this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | |_______________________________________________________| [INFO] [stdout] | [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/torrent_state/live/mod.rs:164:9 [INFO] [stdout] | [INFO] [stdout] 164 | } else { [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 158 ~ match self [INFO] [stdout] 159 | .chunks [INFO] [stdout] 160 | .as_mut() [INFO] [stdout] 161 | .map(|ct| ct.get_have_pieces_mut().flush()) [INFO] [stdout] 162 ~ { Some(Err(e)) => { [INFO] [stdout] 163 | warn!(error=?e, "error flushing bitfield"); [INFO] [stdout] 164 ~ } _ => { [INFO] [stdout] 165 | trace!("flushed bitfield"); [INFO] [stdout] 166 | self.unflushed_bitv_bytes = 0; [INFO] [stdout] 167 ~ }} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/torrent_state/live/mod.rs:772:16 [INFO] [stdout] | [INFO] [stdout] 772 | if let PeerState::Live(l) = pe.value().state.get() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^----------------^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/torrent_state/live/mod.rs:781:13 [INFO] [stdout] | [INFO] [stdout] 781 | } [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 772 ~ match pe.value().state.get() { PeerState::Live(l) => { [INFO] [stdout] 773 | if l.has_full_torrent(self.lengths.total_pieces() as usize) { [INFO] [stdout] ... [INFO] [stdout] 780 | } [INFO] [stdout] 781 ~ } _ => {}} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/torrent_state/live/mod.rs:1129:20 [INFO] [stdout] | [INFO] [stdout] 1129 | if let Some(_g) = self.state.per_piece_locks[idx.get_usize()].try_write() { [INFO] [stdout] | ^^^^^^^^^^^^^^^------------------------------------------------------- [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/torrent_state/live/mod.rs:1138:17 [INFO] [stdout] | [INFO] [stdout] 1138 | } else { [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 1129 ~ match self.state.per_piece_locks[idx.get_usize()].try_write() { Some(_g) => { [INFO] [stdout] 1130 | debug!( [INFO] [stdout] ... [INFO] [stdout] 1137 | (*idx, old) [INFO] [stdout] 1138 ~ } _ => { [INFO] [stdout] 1139 | debug!(?idx, ?piece_req, "attempted to steal but peer was writing"); [INFO] [stdout] 1140 | return None; [INFO] [stdout] 1141 ~ }} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/torrent_state/live/mod.rs:1603:12 [INFO] [stdout] | [INFO] [stdout] 1603 | if let Some(dtx) = self.state.disk_work_tx() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^----------^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/torrent_state/live/mod.rs:1620:9 [INFO] [stdout] | [INFO] [stdout] 1620 | } else { [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 1603 ~ match self.state.disk_work_tx() { Some(dtx) => { [INFO] [stdout] 1604 | // TODO: shove all this into one thing to .clone() once rather than 5 times. [INFO] [stdout] ... [INFO] [stdout] 1619 | dtx.send(Box::new(work)).await?; [INFO] [stdout] 1620 ~ } _ => { [INFO] [stdout] 1621 | self.state [INFO] [stdout] ... [INFO] [stdout] 1627 | .with_context(|| format!("error processing received chunk {chunk_info:?}"))?; [INFO] [stdout] 1628 ~ }} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/torrent_state/live/mod.rs:1614:24 [INFO] [stdout] | [INFO] [stdout] 1614 | if let Err(e) = write_to_disk(&state, addr, &counters, &piece, &chunk_info) { [INFO] [stdout] | ^^^^^^^^^^^^^----------------------------------------------------------- [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/torrent_state/live/mod.rs:1616:21 [INFO] [stdout] | [INFO] [stdout] 1616 | } [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 1614 ~ match write_to_disk(&state, addr, &counters, &piece, &chunk_info) { Err(e) => { [INFO] [stdout] 1615 | let _ = tx.send(WriterRequest::Disconnect(Err(e))); [INFO] [stdout] 1616 ~ } _ => {}} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/torrent_state/live/peer/mod.rs:170:12 [INFO] [stdout] | [INFO] [stdout] 170 | if let PeerState::Connecting(_) = &self.0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^------ [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/torrent_state/live/peer/mod.rs:180:9 [INFO] [stdout] | [INFO] [stdout] 180 | } else { [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 170 ~ match &self.0 { PeerState::Connecting(_) => { [INFO] [stdout] 171 | let tx = match self.take(counters) { [INFO] [stdout] ... [INFO] [stdout] 179 | self.get_live_mut() [INFO] [stdout] 180 ~ } _ => { [INFO] [stdout] 181 | None [INFO] [stdout] 182 ~ }} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `impl std::fmt::Display` will capture more lifetimes than possibly intended in edition 2024 [INFO] [stdout] --> src/torrent_state/stats.rs:101:54 [INFO] [stdout] | [INFO] [stdout] 101 | pub fn progress_percent_human_readable(&self) -> impl std::fmt::Display { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see [INFO] [stdout] note: specifically, this lifetime is in scope but not mentioned in the type's bounds [INFO] [stdout] --> src/torrent_state/stats.rs:101:44 [INFO] [stdout] | [INFO] [stdout] 101 | pub fn progress_percent_human_readable(&self) -> impl std::fmt::Display { [INFO] [stdout] | ^ [INFO] [stdout] = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024 [INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit [INFO] [stdout] | [INFO] [stdout] 101 | pub fn progress_percent_human_readable(&self) -> impl std::fmt::Display + use<> { [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `impl std::fmt::Display` will capture more lifetimes than possibly intended in edition 2024 [INFO] [stdout] --> src/torrent_state/stats.rs:121:52 [INFO] [stdout] | [INFO] [stdout] 121 | pub fn progress_bytes_human_readable(&self) -> impl std::fmt::Display { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see [INFO] [stdout] note: specifically, this lifetime is in scope but not mentioned in the type's bounds [INFO] [stdout] --> src/torrent_state/stats.rs:121:42 [INFO] [stdout] | [INFO] [stdout] 121 | pub fn progress_bytes_human_readable(&self) -> impl std::fmt::Display { [INFO] [stdout] | ^ [INFO] [stdout] = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024 [INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit [INFO] [stdout] | [INFO] [stdout] 121 | pub fn progress_bytes_human_readable(&self) -> impl std::fmt::Display + use<> { [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `impl Iterator + 'a` will capture more lifetimes than possibly intended in edition 2024 [INFO] [stdout] --> src/torrent_state/streaming.rs:42:50 [INFO] [stdout] | [INFO] [stdout] 42 | fn queue<'a>(&self, lengths: &'a Lengths) -> impl Iterator + 'a { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see [INFO] [stdout] note: specifically, this lifetime is in scope but not mentioned in the type's bounds [INFO] [stdout] --> src/torrent_state/streaming.rs:42:18 [INFO] [stdout] | [INFO] [stdout] 42 | fn queue<'a>(&self, lengths: &'a Lengths) -> impl Iterator + 'a { [INFO] [stdout] | ^ [INFO] [stdout] = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024 [INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit [INFO] [stdout] | [INFO] [stdout] 42 | fn queue<'a>(&self, lengths: &'a Lengths) -> impl Iterator + 'a + use<'a> { [INFO] [stdout] | +++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/torrent_state/streaming.rs:64:12 [INFO] [stdout] | [INFO] [stdout] 64 | if let Some(mut s) = self.streams.get_mut(&stream_id) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^-------------------------------- [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/torrent_state/streaming.rs:67:9 [INFO] [stdout] | [INFO] [stdout] 67 | } [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 64 ~ match self.streams.get_mut(&stream_id) { Some(mut s) => { [INFO] [stdout] 65 | let vm = s.value_mut(); [INFO] [stdout] 66 | vm.waker = Some(waker); [INFO] [stdout] 67 ~ } _ => {}} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/torrent_state/streaming.rs:83:23 [INFO] [stdout] | [INFO] [stdout] 83 | while let Some(mut it) = self.all.pop_front() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^-------------------- [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/torrent_state/streaming.rs:88:17 [INFO] [stdout] | [INFO] [stdout] 88 | } [INFO] [stdout] | ^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/torrent_state/streaming.rs:84:24 [INFO] [stdout] | [INFO] [stdout] 84 | if let Some(piece) = it.next() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^--^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/torrent_state/streaming.rs:87:21 [INFO] [stdout] | [INFO] [stdout] 87 | } [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 84 ~ match it.next() { Some(piece) => { [INFO] [stdout] 85 | self.all.push_back(it); [INFO] [stdout] 86 | return Some(piece); [INFO] [stdout] 87 ~ } _ => {}} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/torrent_state/streaming.rs:109:20 [INFO] [stdout] | [INFO] [stdout] 109 | if let Some(waker) = w.value_mut().waker.take() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^-------------------------- [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/torrent_state/streaming.rs:116:17 [INFO] [stdout] | [INFO] [stdout] 116 | } [INFO] [stdout] | ^ [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 109 ~ match w.value_mut().waker.take() { Some(waker) => { [INFO] [stdout] 110 | trace!( [INFO] [stdout] ... [INFO] [stdout] 115 | waker.wake(); [INFO] [stdout] 116 ~ } _ => {}} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 51 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Fixed examples/custom_storage.rs (1 fix) [INFO] [stderr] Migrating examples/ubuntu.rs from 2021 edition to 2024 [INFO] [stderr] Fixed examples/ubuntu.rs (1 fix) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 25.73s [INFO] [stderr] Running `cargo check` to verify 2024 [INFO] [stderr] Compiling librqbit v7.0.1 (/tmp/fixit) [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/peer_connection.rs:336:64 [INFO] [stdout] | [INFO] [stdout] 336 | ... let sleep_ms = (rand::thread_rng().gen::() [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 336 | let sleep_ms = (rand::thread_rng().r#gen::() [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/peer_connection.rs:336:64 [INFO] [stdout] | [INFO] [stdout] 336 | ... let sleep_ms = (rand::thread_rng().gen::() [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 336 | let sleep_ms = (rand::thread_rng().r#gen::() [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: elided lifetime has a name [INFO] [stdout] --> src/session_persistence/json.rs:308:35 [INFO] [stdout] | [INFO] [stdout] 307 | &self, [INFO] [stdout] | - lifetime `'life0` declared here [INFO] [stdout] 308 | ) -> anyhow::Result>> { [INFO] [stdout] | ^^ this elided lifetime gets resolved as `'life0` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(elided_named_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: elided lifetime has a name [INFO] [stdout] --> src/session_persistence/mod.rs:79:35 [INFO] [stdout] | [INFO] [stdout] 78 | &self, [INFO] [stdout] | - lifetime `'life0` declared here [INFO] [stdout] 79 | ) -> anyhow::Result>>; [INFO] [stdout] | ^^ this elided lifetime gets resolved as `'life0` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: elided lifetime has a name [INFO] [stdout] --> src/session_persistence/json.rs:308:35 [INFO] [stdout] | [INFO] [stdout] 307 | &self, [INFO] [stdout] | - lifetime `'life0` declared here [INFO] [stdout] 308 | ) -> anyhow::Result>> { [INFO] [stdout] | ^^ this elided lifetime gets resolved as `'life0` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(elided_named_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: elided lifetime has a name [INFO] [stdout] --> src/session_persistence/mod.rs:79:35 [INFO] [stdout] | [INFO] [stdout] 78 | &self, [INFO] [stdout] | - lifetime `'life0` declared here [INFO] [stdout] 79 | ) -> anyhow::Result>>; [INFO] [stdout] | ^^ this elided lifetime gets resolved as `'life0` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Context` [INFO] [stdout] --> src/tests/test_util.rs:8:20 [INFO] [stdout] | [INFO] [stdout] 8 | use anyhow::{bail, Context}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: lifetime may not live long enough [INFO] [stdout] --> src/stream_connect.rs:74:20 [INFO] [stdout] | [INFO] [stdout] 72 | pub async fn connect(&self, addr: SocketAddr) -> anyhow::Result> { [INFO] [stdout] | - let's call the lifetime of this reference `'1` [INFO] [stdout] 73 | if let Some(proxy) = self.proxy_config.as_ref() { [INFO] [stdout] 74 | return Ok(Box::new(proxy.connect(addr).await?)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ returning this value requires that `'1` must outlive `'static` [INFO] [stdout] | [INFO] [stdout] help: to declare that the trait object captures data from argument `self`, you can add an explicit `'_` lifetime bound [INFO] [stdout] | [INFO] [stdout] 72 | pub async fn connect(&self, addr: SocketAddr) -> anyhow::Result> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: lifetime may not live long enough [INFO] [stdout] --> src/stream_connect.rs:74:20 [INFO] [stdout] | [INFO] [stdout] 72 | pub async fn connect(&self, addr: SocketAddr) -> anyhow::Result> { [INFO] [stdout] | - let's call the lifetime of this reference `'1` [INFO] [stdout] 73 | if let Some(proxy) = self.proxy_config.as_ref() { [INFO] [stdout] 74 | return Ok(Box::new(proxy.connect(addr).await?)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ returning this value requires that `'1` must outlive `'static` [INFO] [stdout] | [INFO] [stdout] help: to declare that the trait object captures data from argument `self`, you can add an explicit `'_` lifetime bound [INFO] [stdout] | [INFO] [stdout] 72 | pub async fn connect(&self, addr: SocketAddr) -> anyhow::Result> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0515]: cannot return value referencing function parameter `s` [INFO] [stdout] --> src/torrent_state/streaming.rs:93:59 [INFO] [stdout] | [INFO] [stdout] 93 | let mut all: Vec<_> = self.streams.iter().map(|s| s.queue(lengths)).collect(); [INFO] [stdout] | -^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | returns a value referencing data owned by the current function [INFO] [stdout] | `s` is borrowed here [INFO] [stdout] | [INFO] [stdout] = help: use `.collect()` to allocate the iterator [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0515]: cannot return value referencing function parameter `s` [INFO] [stdout] --> src/torrent_state/streaming.rs:93:59 [INFO] [stdout] | [INFO] [stdout] 93 | let mut all: Vec<_> = self.streams.iter().map(|s| s.queue(lengths)).collect(); [INFO] [stdout] | -^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | returns a value referencing data owned by the current function [INFO] [stdout] | `s` is borrowed here [INFO] [stdout] | [INFO] [stdout] = help: use `.collect()` to allocate the iterator [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: aborting due to 3 previous errors; 2 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] For more information about this error, try `rustc --explain E0515`. [INFO] [stdout] [INFO] [stderr] error: could not compile `librqbit` (lib) due to 4 previous errors; 2 warnings emitted [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stdout] error[E0133]: call to unsafe function `set_var` is unsafe and requires unsafe block [INFO] [stdout] --> src/tests/test_util.rs:17:9 [INFO] [stdout] | [INFO] [stdout] 17 | std::env::set_var("RUST_LOG", "debug"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: aborting due to 4 previous errors; 3 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] Some errors have detailed explanations: E0133, E0515. [INFO] [stdout] [INFO] [stdout] For more information about an error, try `rustc --explain E0133`. [INFO] [stdout] [INFO] [stderr] error: could not compile `librqbit` (lib test) due to 5 previous errors; 3 warnings emitted [INFO] [stderr] error: failed to check after updating to 2024 [INFO] [stderr] [INFO] [stderr] Caused by: [INFO] [stderr] process didn't exit successfully: `cargo check --frozen --all --all-targets --message-format=json` (exit status: 101) [INFO] running `Command { std: "docker" "inspect" "a9936645e7cb54dbcd8f880f0a7845e048679d21df3ae66ff0f81fa2b244164e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "a9936645e7cb54dbcd8f880f0a7845e048679d21df3ae66ff0f81fa2b244164e", kill_on_drop: false }` [INFO] [stdout] a9936645e7cb54dbcd8f880f0a7845e048679d21df3ae66ff0f81fa2b244164e