его вызов?
P.S. это я к чему, ибо Drop - это просто событие, на которое программист может подписаться и что-то сделать. Иначе при дропе реально память та не чистеца, а просто происходит смещение указателя стека.
Да, но то, что у тебя лежит в структурке, уже подписано на дроп.
Я рассматриваю дефолтный дроп, который поставляет язык и который не был переопределен в структуре и для полей в структуре (+ если это еще в виде дерева), то зачем выполнять избыточную операцию и рекурсивно вызывать drop? Другой вопрос, да если память выделена через malloc, но сейчас речь о стандарте.
Вот в поле лежит вектор. Добавил дроп импл. Теперь вектор должен утечь?
Нет, Вы просто подписались на событие дроп, в любое случае данный вектор физически останется в "поле", но ссылка на него будет уничтожена, в данном случае будет считаться, что эту область можно будет занять чем-то другим
Это какие-то фантазии, которые в реальности не будут работать
Стандартная библиотека раста тоже написана на расте. Например, посмотри на реализацию Drop для Box: https://doc.rust-lang.org/src/alloc/boxed.rs.html#1225
Она немного магическая из-за возможности мува значения из бокса
Обсуждают сегодня