Size: a a a

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

2020 November 27

r

red75prime in Rust — русскоговорящее сообществo
polunin.ai
нет, вот такая
Циклическое требование. Чтобы определить является-ли E Sized, нужно определить является-ли E Sized. 8 хелпов должны показывать цикл или его часть
источник

p

polunin.ai in Rust — русскоговорящее сообществo
red75prime
Циклическое требование. Чтобы определить является-ли E Sized, нужно определить является-ли E Sized. 8 хелпов должны показывать цикл или его часть
я уже разобрался в ошибке. но 3,7 мб текста удивило немного.
источник

p

polunin.ai in Rust — русскоговорящее сообществo
у меня есть тип T и тип U. Я точно уверен что size_of::<T>() == size_of::<U>(). Как мне странсмьютить T -> U без копирования от transmute_copy() ?
источник

ΑZ

Αλεχ Zhukovsky in Rust — русскоговорящее сообществo
polunin.ai
у меня есть тип T и тип U. Я точно уверен что size_of::<T>() == size_of::<U>(). Как мне странсмьютить T -> U без копирования от transmute_copy() ?
что значит "Без копирования"? Никак, если ты подумаешь как байтики и стек работает
источник

ΑZ

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

AL

Andrey @ozkriff Lesn... in Rust — русскоговорящее сообществo
polunin.ai
Кстати, никто ещё не думал над тем, чтобы сделать русскоговорящее сообщество раста в дискорде? Там гораздо удобнее будет вести несколько чатов, все будут в одном сервере.
https://discord.gg/J8mKqnp - в прошлом году, как минимум, была безуспешная попытка
источник

p

polunin.ai in Rust — русскоговорящее сообществo
Αλεχ Zhukovsky
что значит "Без копирования"? Никак, если ты подумаешь как байтики и стек работает
дык я могу трансмьютить например u32 в [u8; 4] без копирования. почему я не могу трансмьютить рандомный T -> U если я могу доказать что sizeof<T> == sizeof<U> ?
источник

ΑZ

Αλεχ Zhukovsky in Rust — русскоговорящее сообществo
polunin.ai
у меня есть тип T и тип U. Я точно уверен что size_of::<T>() == size_of::<U>(). Как мне странсмьютить T -> U без копирования от transmute_copy() ?
https://doc.rust-lang.org/src/core/mem/mod.rs.html#925 как видишь оно ничего не копирует, просто ptr::read. Но засчет того что ты читаешь на СТЕК который конечно же обязан копировать значение, оно называется transmute_copy
источник

p

polunin.ai in Rust — русскоговорящее сообществo
Αλεχ Zhukovsky
https://doc.rust-lang.org/src/core/mem/mod.rs.html#925 как видишь оно ничего не копирует, просто ptr::read. Но засчет того что ты читаешь на СТЕК который конечно же обязан копировать значение, оно называется transmute_copy
ну вот мне не нравится лишние риды, они производительность украдут на ровном месте
источник

ΑZ

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

p

polunin.ai in Rust — русскоговорящее сообществo
Αλεχ Zhukovsky
то что ты хочешь по-моему невозможно в рамках сишной модели памяти
дык я могу трансмьютить например u32 в [u8; 4] без копирования. почему я не могу трансмьютить рандомный T -> U если я могу доказать что sizeof<T> == sizeof<U> ?
источник

ΑZ

Αλεχ Zhukovsky in Rust — русскоговорящее сообществo
у тебя значение на стеке, кадр стека будет разрушен при возврате из функции. ты ОБЯЗАН скопировать значение в безопасное миесто
источник

ΑZ

Αλεχ Zhukovsky in Rust — русскоговорящее сообществo
polunin.ai
дык я могу трансмьютить например u32 в [u8; 4] без копирования. почему я не могу трансмьютить рандомный T -> U если я могу доказать что sizeof<T> == sizeof<U> ?
но не можешь
источник

H

Hirrolot in Rust — русскоговорящее сообществo
polunin.ai
у меня есть тип T и тип U. Я точно уверен что size_of::<T>() == size_of::<U>(). Как мне странсмьютить T -> U без копирования от transmute_copy() ?
Union type punning
источник

p

polunin.ai in Rust — русскоговорящее сообществo
Αλεχ Zhukovsky
но не можешь
что не могу?
источник

ΑZ

Αλεχ Zhukovsky in Rust — русскоговорящее сообществo
polunin.ai
что не могу?
если ты попробуешь вернуть из функции [u8; 4] то у тебя будет копирование
источник

p

polunin.ai in Rust — русскоговорящее сообществo
Hirrolot
Union type punning
боксить предлагаешь? хм. видимо так и придется.
источник

H

Hirrolot in Rust — русскоговорящее сообществo
polunin.ai
боксить предлагаешь? хм. видимо так и придется.
А причём боксить?
источник

p

polunin.ai in Rust — русскоговорящее сообществo
Αλεχ Zhukovsky
если ты попробуешь вернуть из функции [u8; 4] то у тебя будет копирование
мне нужно реинтерпретировать один тип как другой.
источник

ΑZ

Αλεχ Zhukovsky in Rust — русскоговорящее сообществo
polunin.ai
мне нужно реинтерпретировать один тип как другой.
держи transmute
источник