use std::ops::Deref; use std::pin::Pin; struct Whatever(T); impl Deref for Whatever { type Target = T; fn deref(&self) -> &T { &self.0 } } struct A; impl Drop for Pin> { //~^ ERROR the `Drop` trait may only be implemented for local structs, enums, and unions fn drop(&mut self) {} } fn main() { let x = Pin::new(Whatever(1.0f32)); }