Эта функция не связана с трейтом Drop
нет, ты вызываешь не Drop::drop(), а тупо пустую функцию, которая обеспечивает выход из скоупа
fn drop(x: X) {} у тебя там вызывается
а вот так нельзя https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=08878e3ce42f8c49eba8dc512760a604
Как не связана если я в том коде на плейграунде имплементирую трейт Drop для своей структуры, и при вызове drop() выполняется логика которая там описана. Что-то я вообще запутался с этими дропами.
в описании трейта дроп чего-нибудь интересное написано?
она вызовется и без вызова, просто при выходе из скоупа
Ты так-же можешь не вызывать drop и код в дропе тоже исполнится. Можешь написать {x}; и это будет тоже самое, что и drop(x);, etc Drop::drop вызывается компилятором, когда значение выходит из скоупа. drop просто перемещает значение в свой скоуп, который тут же кончается.
Обсуждают сегодня