Address review comments.

This commit is contained in:
Orson Peters 2025-05-30 12:13:55 +02:00
parent aff29df28e
commit b374adc9db
2 changed files with 7 additions and 1 deletions

View file

@ -84,8 +84,15 @@ where
// access to self.value and may replace it.
let mut old_value = unsafe { self.value.get().replace(MaybeUninit::new(v)) };
match self.state.replace(State::Alive) {
// If the variable is not being recursively initialized, register
// the destructor. This might be a noop if the value does not need
// destruction.
State::Uninitialized => D::register_dtor(self),
// Recursive initialization, we only need to drop the old value
// as we've already registered the destructor.
State::Alive => unsafe { old_value.assume_init_drop() },
State::Destroyed(_) => unreachable!(),
}

View file

@ -1,5 +1,4 @@
//@ run-pass
#![allow(stable_features)]
//@ needs-threads
use std::cell::Cell;