1 use std::pin::Pin; 2 3 use pin_project::{pin_project, pinned_drop}; 4 5 #[pin_project(PinnedDrop, project = EnumProj, project_ref = EnumProjRef)] 6 enum Enum<T, U> { 7 Struct { 8 #[pin] 9 pinned: T, 10 unpinned: U, 11 }, 12 Tuple(#[pin] T, U), 13 Unit, 14 } 15 16 #[pinned_drop] 17 impl<T, U> PinnedDrop for Enum<T, U> { drop(self: Pin<&mut Self>)18 fn drop(self: Pin<&mut Self>) { 19 let _ = self; 20 } 21 } 22 main()23fn main() {} 24