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