История изменений
Исправление red75prim, (текущая версия) :
Ничего специфичного для раста. На сишечке это такой-же UB, так как &mut i32
соответствует int32_t * restrict
. А, и без restrict тоже UB из-за strict aliasing.
https://godbolt.org/z/TGj9re8sP
Корректный (кажется) вариант на расте должен использовать &raw mut i
.
https://godbolt.org/z/Ee6vjoeGq
В расте кажется strict aliasing нет, но точно не помню, потому что такой код я точно писать не стану: там есть функции чтобы сказать компилятору, что нужно прочитать содержимое памяти независимо от того что компилятор думает по поводу provenance или aliasing.
Исправление red75prim, :
Ничего специфичного для раста. На сишечке это такой-же UB, так как &mut i32
соответствует int32_t * restrict
. А, и без restrict тоже UB из-за strict aliasing.
https://godbolt.org/z/TGj9re8sP
Корректный (кажется) вариант на расте должен использовать &raw mut i
.
https://godbolt.org/z/Ee6vjoeGq
В расте кажется strict aliasing нет, но точно не помню, потому что такой код я точно писать не стану.
Исправление red75prim, :
Ничего специфичного для раста. На сишечке это такой-же UB, так как &mut i32
соответствует int32_t * restrict
. А, и без restrict тоже UB из-за strict aliasing.
https://godbolt.org/z/TGj9re8sP
Корректный вариант на расте должен использовать &raw mut i
Исходная версия red75prim, :
Ничего специфичного для раста. На сишечке это такой-же UB, так как &mut i32
соответствует int32_t * restrict
.
https://godbolt.org/z/TGj9re8sP
Корректный вариант на расте должен использовать &raw mut i