Антон
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
Alex
на self?
Alex
а мемлика не получится?
Денис
ага
Денис
получится, если ты руками не сделаешь xlib::XCloseDisplay потом
Alex
я не про поинтер
Alex
а про структуру
Alex
она тллько на inner память занимает верно?
Денис
ну кстати можно лучше сделать
Alex
Денис
хранить там 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
Invictus
Или просто уже вылетело из головы. Я его уже месяц читаю, осилил едва половину.
Αλεχ
Αλεχ
сначала долго сидишь на первых главах (если пытаешься guessing game запилить) а потом все как по маслу
Invictus
Может быть, мне довольно непросто трейты дались.
Αλεχ
трейты те же интерфейсы
Αλεχ
с некоторыми отличиями
Invictus
Слишком уж непривычная концепция.
Invictus
Ну, просто чтобы понимать — до сих пор я по мелочи только на питоне шлёпал.
Alex
растобук бесполезно в отрыве от практики читать
Alex
я только когда на расте что то пописывать начал - начал что то понимать, и почему именно так.
Safort
RUST IS PAIN
Статейка давняя, но всё же http://sysdev.me/rust-is-pain/
Safort
Αλεχ
Αλεχ
после шарпа изи
Αλεχ
или плюсов
Αλεχ
или любого другого языка с абстрактными классами
Αλεχ
Αλεχ
просто она похожа на то, что есть в других языках
Αλεχ
C++/C#/Java/... любой мейнстрим
Anisyan
/C
Anisyan
/C
Денис
как мне можно в плюсах рандомный трейт заимплементить для рандомного типа?
Денис
тайпклассы != наследование
Oleg
Денис
ㅤ
/C
Vladimir