Size: a a a

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

2020 December 09

D

Denis in Rust — русскоговорящее сообществo
Kirill (Cykooz) Kuzminykh
Ну вот разве что это меня и смущает. Но фактически это влияет только на  capacity нового вектора. И вероятно его можно как-то правильно посчитать, а не просто умножать на 2
это ещё на drop влияет, деаллокация должна вызываться строго на том же лейауте, на котором память была аллоцирована
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Kirill (Cykooz) Kuzminykh
Ну вот разве что это меня и смущает. Но фактически это влияет только на  capacity нового вектора. И вероятно его можно как-то правильно посчитать, а не просто умножать на 2
Чел, это literally UB, тебе это компилятор прямым текстом говорит
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
*интерпретатор

не суть
источник

D

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

p

polunin.ai in Rust — русскоговорящее сообществo
кстати а что если сделать кастомный дроп и перегнать обратно в Vec<f64> при дропе7
источник

D

Denis in Rust — русскоговорящее сообществo
polunin.ai
кстати а что если сделать кастомный дроп и перегнать обратно в Vec<f64> при дропе7
не проще обёртку на тип числовой сделать?
источник

p

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

D

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

p

polunin.ai in Rust — русскоговорящее сообществo
Denis
не проще обёртку на тип числовой сделать?
ты не можешь конвертить f64 -> MyWrap уверенно
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
polunin.ai
кстати а что если сделать кастомный дроп и перегнать обратно в Vec<f64> при дропе7
будет проблема с наполовину uninit f64 при нечётном кол-ве i32, я думаю лучше MaybeUninit<f64>

а так это должно перестать стрелять
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
polunin.ai
ты не можешь конвертить f64 -> MyWrap уверенно
с #[repr(transparent)] (или C) — можешь.
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
polunin.ai
кстати а что если сделать кастомный дроп и перегнать обратно в Vec<f64> при дропе7
А документация  точно обещает, что вектор не будет ничего освобождать до вызова деструктора?
источник

p

polunin.ai in Rust — русскоговорящее сообществo
вафель 🧇
с #[repr(transparent)] (или C) — можешь.
юнит структуры точно всегда оптимизируются?
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Mikail Bagishov
А документация  точно обещает, что вектор не будет ничего освобождать до вызова деструктора?
btw точно не обещает, realloc может быть
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
polunin.ai
юнит структуры точно всегда оптимизируются?
а унит причём тут?....
источник

p

polunin.ai in Rust — русскоговорящее сообществo
Mikail Bagishov
А документация  точно обещает, что вектор не будет ничего освобождать до вызова деструктора?
будет конечно. поэтому нужна обертка какая-то. может с запретом на гровинг.
источник

p

polunin.ai in Rust — русскоговорящее сообществo
вафель 🧇
а унит причём тут?....
struct MyWrap(i32)
источник

D

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

KK

Kirill (Cykooz) Kuzm... in Rust — русскоговорящее сообществo
Тогда может мне наоборот - сделать в конце ManualDrop для моего второго вектора, а исходный пускай дропается нормально с правильным лайаутом.
Неплохо бы только как-то заблочить исходный вектор на время жизни второго.
источник

p

polunin.ai in Rust — русскоговорящее сообществo
Denis
посоны, а какая проблема-то кстати решается изначально?
перегнать Vec<f64> -> Vec<i32> без аллокаций
источник