ΑZ
Size: a a a
ΑZ
ΑZ
ΑZ
r
TK
KR
EG
Relevant-типы просто нельзя дропнуть. Если статический анализ обнаруживает, что вызывается <T as Drop>::drop() where T: Relevant, то это ошибка.EG
Dispose, который никогда в явном виде не вызывается и определяет fn dispose(self)EG
Vec<T> может дропнуть T уже существуетr
EG
Vec<T>: Relevant where T: Relevant и .dispose() вектора избавляется от всех внутренних типовEG
T: !Dispose, то можно сделать .dispose_if_empty(self) -> Option<Self>r
r
EG
EG
.dispose_if_empty()EG
.dispose() требует T: Dispose, а .dispose_if_empty() — нет.EG
.dispose_with<F: FnMut(T)>(self, f: F)
f, а потом убивает векторEG
Vec::dispose это просто .dispose_with(T::dispose)r