На практике заметной разницы нет.Оба используются для очистки ресурсов типа при необходимости.
Ресурсы будут очищаться независимо от реализации черты Drop
, не так ли?
Да.Компилятор по существу автоматически реализует Drop
для любого типа, в отличие от программиста.Эта автоматическая реализация просто вызывает drop
для каждой переменной-члена по очереди.
Если вы выделите ресурс, о котором Rust не знает, например, выделение памяти непосредственно из распределителя, Rust не будет знать, чтовозвращаемое значение нужно отбросить или как это сделать.Именно тогда вы реализуете Drop
напрямую.
См. Также: