Open source
Rust
Компиляторы
Программирование
Системное программирование
Комментарии 5
+3

Очень интересно (но не настолько чтобы рыться в обсуждениях) насчёт static/cost Drop: как оно работать будет?

+3
Если коротко из RFC:
Allow types with destructors to be used in static items and in const functions, as long as the destructor never needs to run in const context.

  • Lift the restriction on types with destructors being used in statics.
  • statics containing Drop-types will not run the destructor upon program/thread exit.
  • (Optionally adding a lint that warn about the possibility of resource leak)
  • Alloc instantiating structures with destructors in constant expressions,
  • Continue to prevent const items from holding types with destructors.
  • Allow const fn to return types with destructors.
  • Disallow constant expressions which would result in the destructor being called (if the code were run at runtime).

+1

Спасибо, стало понятнее. Собственно, понятно всё, кроме последнего пункта:


Disallow constant expressions which would result in the destructor being called (if the code were run at runtime).

Может есть пример?

+2
Думаю речь про это:
const fn sample(_v: Vec<u8>) -> usize {
	0	// Discards the input vector, dropping it
}

Т.е. если бы при обычном вызове в runtime в процессе вычисления выражения вызвался бы деструктор, то такое выражение не может быть const.
Только полноправные пользователи могут оставлять комментарии. , пожалуйста.