Size: a a a

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

2021 June 29

ΑZ

Αλεχ Zhukovsky in Rust — русскоговорящее сообщество
*(foo as &mut x as *mut x) - уб пушто ты делаешь референс на мусор

*(foo as &raw mut x) делает сразу указатель, указатель на мусор это норм если ты в него пишешь
источник

ΑZ

Αλεχ Zhukovsky in Rust — русскоговорящее сообщество
посмотри на доку вокруг addr_of_mut, там примеры есть

https://doc.rust-lang.org/stable/std/ptr/macro.addr_of_mut.html
источник

П

Пух in Rust — русскоговорящее сообщество
(*uninit.as_mut_ptr())
источник

ΑZ

Αλεχ Zhukovsky in Rust — русскоговорящее сообщество
addr_of_mut это макрос для &raw mut x пока последний синтаксис не стабилизировали
источник

П

Пух in Rust — русскоговорящее сообщество
Меня вот эта часть прост смущает, остальное то понятно
источник

ΑZ

Αλεχ Zhukovsky in Rust — русскоговорящее сообщество
вот тут референс где-то создается походу. Не понял правда где
источник

П

Пух in Rust — русскоговорящее сообщество
реф не создается, это оно в чот типа владения должно перекидываться
источник

П

Пух in Rust — русскоговорящее сообщество
Либо там какая-то магия
источник

П

Пух in Rust — русскоговорящее сообщество
&raw mut (*x).test
источник

TK

Traveller Kolsky in Rust — русскоговорящее сообщество
Пока не стабилизируют, лучше не трогать
источник

ΑZ

Αλεχ Zhukovsky in Rust — русскоговорящее сообщество
я так понял что на as_mut_ptr можно делать write. а вот (*as_mut_ptr).field = ... уже нельзя и нужно заворачивать в &raw mut
источник

ΑZ

Αλεχ Zhukovsky in Rust — русскоговорящее сообщество
уже стабилизировано с 1.51. В виде макроса пока правда
источник

П

Пух in Rust — русскоговорящее сообщество
Да, в сам филд ты писать не можешь
источник

TK

Traveller Kolsky in Rust — русскоговорящее сообщество
Не в виде макроса и с документацией
источник

П

Пух in Rust — русскоговорящее сообщество
ты можешь писать по указателю который раньше ты мог получить из ссылки.
Ссылку создать не можно
источник

ΑZ

Αλεχ Zhukovsky in Rust — русскоговорящее сообщество
там уже вся дока написана - что ещё нужно?
источник

TK

Traveller Kolsky in Rust — русскоговорящее сообщество
Что типа так можно на анинит поля указатели получать
источник

П

Пух in Rust — русскоговорящее сообщество
Вопрос почему можно дерефать структуру
источник

ΑZ

Αλεχ Zhukovsky in Rust — русскоговорящее сообщество
там буквально пункт доки "как инитить структур по одному полю".

Берешь контрол цэ контрол вэ - меняешь именя полей на свои, профит
источник

ΑZ

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