• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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()43 fn main() {}
44