pub fn defer<T, F>(thing: &mut T, deferred: F) -> impl DerefMutwhere F: FnOnce(&mut T),
Automatically calls a deferred function when the returned handle is dropped.