Size: a a a

Rust — русскоговорящее сообществo

2020 November 27

r

red75prime in Rust — русскоговорящее сообществo
Denis
тогда * -> &* ?
Зачем? Там же &mut &str
источник

D

Denis in Rust — русскоговорящее сообществo
а, недоглядел, сорян
источник

H

Hirrolot in Rust — русскоговорящее сообществo
polunin.ai
в расте есть юнионы из си? О.о
вот это поворот. спасибо.
Да
источник

H

Hirrolot in Rust — русскоговорящее сообществo
Αλεχ Zhukovsky
но зачем юнион если можно просто кастануть указатель?
Потому что, вероятно, union type punning безопаснее. Для Rust не знаю, а для Си точно (см. совместимые типы)
источник

RS

Roma S in Rust — русскоговорящее сообществo
red75prime
let s: String = iter.map(|s| *s).collect();
для '.map(|x| *x)' нету шортката разве?
источник

H

Hirrolot in Rust — русскоговорящее сообществo
Denis
потому что ему, очевидно, нужен не указатель
Разыменовать потом можно
источник

MF

Max Frai in Rust — русскоговорящее сообществo
red75prime
let s: String = iter.map(|s| *s).collect();
Так работает
источник

ΑZ

Αλεχ Zhukovsky in Rust — русскоговорящее сообществo
Hirrolot
Потому что, вероятно, union type punning безопаснее. Для Rust не знаю, а для Си точно (см. совместимые типы)
В си запись по одному члену юниона и чтение по другому это УБ, ты же в курсе?
источник

MF

Max Frai in Rust — русскоговорящее сообществo
Но вот я думал что-то типа cloned должно то же самое сделать
источник

H

Hirrolot in Rust — русскоговорящее сообществo
Αλεχ Zhukovsky
В си запись по одному члену юниона и чтение по другому это УБ, ты же в курсе?
Нет, не UB
источник

H

Hirrolot in Rust — русскоговорящее сообществo
Путаешь с C++
источник

ΑZ

Αλεχ Zhukovsky in Rust — русскоговорящее сообществo
источник

D

Denis in Rust — русскоговорящее сообществo
прекрасные языки, что один, что второй )
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
polunin.ai
ну вот мне не нравится лишние риды, они производительность украдут на ровном месте
LLVM соптимизирует их
источник

ΑZ

Αλεχ Zhukovsky in Rust — русскоговорящее сообществo
Hirrolot
Нет, не UB
https://users.rust-lang.org/t/conversion-using-type-punning/30001 но как видишь, type punning сразу ведет к проблемам с алиасингом
источник

ΑZ

Αλεχ Zhukovsky in Rust — русскоговорящее сообществo
так что прежде чем отстреливать нафиг ноги лучше все же на ссылочках/указателях поработать
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
В C++ другого способа менять типы кроме как делать std::memcpy нет
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Поэтому LLVM умеет такие избыточные вызовы memcpy видеть и удалять
источник

H

Hirrolot in Rust — русскоговорящее сообществo
Αλεχ Zhukovsky
так что прежде чем отстреливать нафиг ноги лучше все же на ссылочках/указателях поработать
Но ведь для тупого каста указателей типы должны быть ещё совместимыми (выравнивание и т.д.)
источник

p

polunin.ai in Rust — русскоговорящее сообществo
да я уже странсмьютил ссылки, все норм
источник