use pin_project::{pin_project, pinned_drop}; use std::pin::Pin; #[pin_project(PinnedDrop, project = EnumProj, project_ref = EnumProjRef)] enum Enum { Struct { #[pin] pinned: T, unpinned: U, }, Tuple(#[pin] T, U), Unit, } #[pinned_drop] impl PinnedDrop for Enum { fn drop(self: Pin<&mut Self>) { let _ = self; } } fn main() {}