//@ run-pass use std::sync::atomic::{Ordering, AtomicUsize}; use std::mem; struct S { _u: U, size_of_u: usize, _v: V, size_of_v: usize } impl S { fn new(u: U, v: V) -> Self { S { _u: u, size_of_u: mem::size_of::(), _v: v, size_of_v: mem::size_of::() } } } static COUNT: AtomicUsize = AtomicUsize::new(0); impl Drop for S { fn drop(&mut self) { assert_eq!(mem::size_of::(), self.size_of_u); assert_eq!(mem::size_of::(), self.size_of_v); COUNT.store(COUNT.load(Ordering::SeqCst)+1, Ordering::SeqCst); } } fn main() { assert_eq!(COUNT.load(Ordering::SeqCst), 0); { S::new(0u8, 1u16); } assert_eq!(COUNT.load(Ordering::SeqCst), 1); }