Alex
Ну селф вообще вряд-ли полезен
на сколько я помню из макрухи он будет ссылаться на модуль, где макро заюзоно.
Alex
Как into_inner сделать так чтобы значение которое я отдаю не дропнулось?
Alex
https://gist.github.com/Fedcomp/2c96f041b2f35e7512bab05fe09cfc2c#file-rust-rs-L25-L35 Проще говоря оно между собой очевидно не дружит
Денис
https://doc.rust-lang.org/stable/std/?search=into_inner
Alex
думаю как лучше обойти эту проблему.
Денис
let inner = self.inner; std::mem::forget(self); inner
Alex
на self?
Alex
а мемлика не получится?
Денис
ага
Денис
получится, если ты руками не сделаешь xlib::XCloseDisplay потом
Alex
я не про поинтер
Alex
а про структуру
Alex
она тллько на inner память занимает верно?
Денис
ну кстати можно лучше сделать
Денис
хранить там Option<*mut...>
Денис
ну и в дропе проверять, чё там внутри
Денис
None или не None =)
Alex
спасибо. Попробую пока вариант с forget, посмотрим как пойдет.
Денис
да норм всё должно быть
Adam
ну и в дропе проверять, чё там внутри
И не только в дропе тогда
Invictus
Глупый, наверное, вопрос, но спрошу: передача владения данными, лежащими в куче, может спровоцировать их реаллокацию?
Adam
Move это memcpy. Так что вряд ли.
Invictus
Так это по сути копирование, выходит?
Судзумия
Да
Invictus
Лол.
Денис
ну как правило только не данные копируются
Денис
а содержимое указателей
Судзумия
Но ллвм может оптимизировать до ноопа
Invictus
Это было внезапно.
Судзумия
а содержимое указателей
Ой да что ты говоришь, а данные куда? В дев нулл?
Денис
Ой да что ты говоришь, а данные куда? В дев нулл?
выделил объект на куче, мувнул его — вот указатель на данные в куче и копирнулся
Vladimir
Копируется ток то что на стеке
Судзумия
какие данные
Ты про данные написал, хз какие
Судзумия
Не поняли друг друга короче
Денис
да)
Invictus
Так данные в куче не двигаются, всё-таки?
Invictus
Оке, спасибо.
Денис
ваще кстати я помню, что в растобуке (по-моему там) этот процесс описан очень двояко
Денис
так что может сложиться впечатление, будто бы реально данные копируются (и не только на стэке)
Денис
надо найти
Денис
When we move v to v2, Rust actually does a bitwise copy of the vector object v into the stack allocation represented by v2 https://doc.rust-lang.org/book/first-edition/ownership.html
Денис
а, во второй нормально написали: When we assign s1 to s2, the String data is copied, meaning we copy the pointer, the length, and the capacity that are on the stack. We do not copy the data on the heap that the pointer refers to. In other words, the data representation in memory looks like Figure 4-2.
Денис
https://doc.rust-lang.org/book/second-edition/ch04-01-what-is-ownership.html
Денис
@null_void плохо растобук прочитал, признавайся? =)
Invictus
Или просто уже вылетело из головы. Я его уже месяц читаю, осилил едва половину.
Αλεχ
сначала долго сидишь на первых главах (если пытаешься guessing game запилить) а потом все как по маслу
Invictus
Может быть, мне довольно непросто трейты дались.
Αλεχ
трейты те же интерфейсы
Αλεχ
с некоторыми отличиями
Invictus
Слишком уж непривычная концепция.
Invictus
Ну, просто чтобы понимать — до сих пор я по мелочи только на питоне шлёпал.
Alex
растобук бесполезно в отрыве от практики читать
Alex
я только когда на расте что то пописывать начал - начал что то понимать, и почему именно так.
Safort
RUST IS PAIN Статейка давняя, но всё же http://sysdev.me/rust-is-pain/
Safort
Αλεχ
Αλεχ
после шарпа изи
Αλεχ
или плюсов
Αλεχ
или любого другого языка с абстрактными классами
Cat
обычная концепция хз
все уже поняли, что ты охуенный программист
Αλεχ
все уже поняли, что ты охуенный программист
да при чем тут охуенный или нет
Αλεχ
просто она похожа на то, что есть в других языках
Αλεχ
C++/C#/Java/... любой мейнстрим
Anisyan
/C
Anisyan
/C
Денис
как мне можно в плюсах рандомный трейт заимплементить для рандомного типа?
Денис
тайпклассы != наследование
Денис
concept, motherfucker, do you speak it
ты из будущего?
ㅤ
/C