macro_rules! droppable { | |
() => { | |
static COUNT: core::sync::atomic::AtomicI32 = core::sync::atomic::AtomicI32::new(0); | |
#[derive(Eq, Ord, PartialEq, PartialOrd)] | |
struct Droppable(i32); | |
impl Droppable { | |
fn new() -> Self { | |
COUNT.fetch_add(1, core::sync::atomic::Ordering::Relaxed); | |
Droppable(Self::count()) | |
} | |
fn count() -> i32 { | |
COUNT.load(core::sync::atomic::Ordering::Relaxed) | |
} | |
} | |
impl Drop for Droppable { | |
fn drop(&mut self) { | |
COUNT.fetch_sub(1, core::sync::atomic::Ordering::Relaxed); | |
} | |
} | |
}; | |
} |