1 use std::pin::Pin; 2 3 use auxiliary_macro::{hidden_repr, hidden_repr2}; 4 use pin_project::{pin_project, pinned_drop, UnsafeUnpin}; 5 6 #[pin_project] //~ ERROR may not be used on #[repr(packed)] types 7 #[hidden_repr(packed)] 8 struct A { 9 #[pin] 10 f: u32, 11 } 12 13 #[hidden_repr2] 14 #[pin_project] //~ ERROR may not be used on #[repr(packed)] types 15 struct B { 16 #[pin] 17 f: u32, 18 } 19 20 #[pin_project(UnsafeUnpin)] //~ ERROR may not be used on #[repr(packed)] types 21 #[hidden_repr(packed)] 22 struct C { 23 #[pin] 24 f: u32, 25 } 26 27 unsafe impl UnsafeUnpin for C {} 28 29 #[pin_project(PinnedDrop)] //~ ERROR may not be used on #[repr(packed)] types 30 #[hidden_repr(packed)] 31 struct D { 32 #[pin] 33 f: u32, 34 } 35 36 #[pinned_drop] 37 impl PinnedDrop for D { drop(self: Pin<&mut Self>)38 fn drop(self: Pin<&mut Self>) {} 39 } 40 main()41fn main() {} 42