Ну в общем. В плюсах объект - это место в памяти. Деструктор вызывается над объектом когда место в памяти перестает жить. В расте объект - это значение. Деструктор вызывается над объектом когда умирает именно значение. Над местами ИЗ которых ты переместил деструктор не вызывается потому что в них уже нет объектов.
Смотрите: Я правильно понимаю, что если в раст всё выражение, то это значит оно всегда что-то возвращает? И если мы ставим точку с запятой то оно возвращает тип ()? (а как он правильно называется?)