| 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); | |
| } | |
| } | |
| }; | |
| } |