use async_condvar_fair::Condvar;
use std::sync::{
atomic::{AtomicU64, Ordering},
Weak,
};
pub(super) struct ReserveWaker<'a> {
pub(super) condvar: &'a Condvar,
pub(super) item_reserved_future: Weak<AtomicU64>,
}
impl<'a> Drop for ReserveWaker<'a> {
fn drop(&mut self) {
if let Some(still_reserved) = self.item_reserved_future.upgrade() {
still_reserved.store(0, Ordering::Release);
}
self.condvar.notify_one();
}
}