INNER CODE UNIT · Rust
async_drop_waits_for_completion
pamburus/hl · crates/lifecycle/src/lib.rs:147
fn async_drop_waits_for_completion() {
let started = Arc::new(Mutex::new(false));
let started_clone = Arc::clone(&started);
let completed = Arc::new(Mutex::new(false));
let completed_clone = Arc::clone(&completed);
struct SlowDrop {
started: Arc<Mutex<bool>>,
completed: Arc<Mutex<bool>>,
}
impl Drop for SlowDrop {
fn drop(&mut self) {
*self.started.lock().unwrap() = true;
std::thread::sleep(std::time::Duration::from_millis(50));
*self.completed.lock().unwrap() = true;
}
}