#![allow(dead_code, deprecated, unused_variables, unused_mut)] use std::{mem, ptr}; pub struct MyCollection { data: [T; 1], } impl MyCollection { fn iter_mut(&mut self) -> &mut [T] { &mut self.data } fn free_buffer(&mut self) {} } impl Drop for MyCollection { fn drop(&mut self) { unsafe { if mem::needs_drop::() { for x in self.iter_mut() { ptr::drop_in_place(x); } } self.free_buffer(); } } } fn main() {}