Комментарии 5
У команды Rust есть специальный документ под названием Edition guide, где они описывают что именно сломано между мажорными версиями :) Есть там и ваша фича, называется disjoint capture in closures:
https://doc.rust-lang.org/edition-guide/rust-2021/disjoint-capture-in-closures.html
А clippy не выдал предупреждение, что где-то инкрементируется total_items, но затем никто его не читает?
Строго говоря, документ (как и оригинальный RFC) такой случай не описывает. Кроме того, `cargo fix --edition` этот код не меняет.
Обсуждение:
https://github.com/rust-lang/rust/issues/111376
это происходит потомучто по дефолту move работает с указателем да?
а у раста переменная на начало области памяти возможно не врапается в указатель, возможно это приколы llvm - но врятли
Нет, вообще не поэтому. Вы статью-то читали?
но ведь чтобы произошло изменение в потоке тоесть захватить его нужен указатель, а раст пользуется статическим слепком, значит llvm должен прокинуть трейс и слепить его, как вы представляете семантику move без указателей?
тоесть переменная это равно указатель или как?
https://doc.rust-lang.org/std/keyword.move.html
https://brson.github.io/2023/03/12/move-on-llvm
еще можно подтвердить это ассемблером например
История о недостающих метриках: странности с замыканиями в Rust