Как стать автором
Обновить

История о недостающих метриках: странности с замыканиями в Rust

Время на прочтение8 мин
Количество просмотров956
Всего голосов 8: ↑8 и ↓0+12
Комментарии5

Комментарии 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

еще можно подтвердить это ассемблером например

Зарегистрируйтесь на Хабре, чтобы оставить комментарий