impl<T, F> ScopeGuard<T, F> where
F: FnMut(&mut T),
{ #[inline] pubfn into_inner(guard: Self) -> T { // Cannot move out of Drop-implementing types, so // ptr::read the value out of a ManuallyDrop<Self> // Don't use mem::forget as that might invalidate value let guard = ManuallyDrop::new(guard); unsafe { let value = ptr::read(&guard.value); // read the closure so that it is dropped let _ = ptr::read(&guard.dropfn);
value
}
}
}
impl<T, F> Deref for ScopeGuard<T, F> where
F: FnMut(&mut T),
{ type Target = T; #[inline] fn deref(&self) -> &T {
&self.value
}
}
impl<T, F> DerefMut for ScopeGuard<T, F> where
F: FnMut(&mut T),
{ #[inline] fn deref_mut(&mutself) -> &mut T {
&mutself.value
}
}
impl<T, F> Drop for ScopeGuard<T, F> where
F: FnMut(&mut T),
{ #[inline] fn drop(&mutself) {
(self.dropfn)(&mutself.value);
}
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.13 Sekunden
(vorverarbeitet am 2026-06-19)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.