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