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