1 use pin_project_lite::pin_project;
2 struct Struct<T, U> {
3     pinned: T,
4     unpinned: U,
5 }
6 #[doc(hidden)]
7 #[allow(dead_code)]
8 #[allow(single_use_lifetimes)]
9 #[allow(clippy::unknown_clippy_lints)]
10 #[allow(clippy::mut_mut)]
11 #[allow(clippy::redundant_pub_crate)]
12 #[allow(clippy::ref_option_ref)]
13 #[allow(clippy::type_repetition_in_bounds)]
14 struct StructProj<'__pin, T, U>
15 where
16     Struct<T, U>: '__pin,
17 {
18     pinned: ::pin_project_lite::__private::Pin<&'__pin mut (T)>,
19     unpinned: &'__pin mut (U),
20 }
21 #[doc(hidden)]
22 #[allow(dead_code)]
23 #[allow(single_use_lifetimes)]
24 #[allow(clippy::unknown_clippy_lints)]
25 #[allow(clippy::mut_mut)]
26 #[allow(clippy::redundant_pub_crate)]
27 #[allow(clippy::ref_option_ref)]
28 #[allow(clippy::type_repetition_in_bounds)]
29 struct StructProjRef<'__pin, T, U>
30 where
31     Struct<T, U>: '__pin,
32 {
33     pinned: ::pin_project_lite::__private::Pin<&'__pin (T)>,
34     unpinned: &'__pin (U),
35 }
36 #[doc(hidden)]
37 #[allow(dead_code)]
38 #[allow(single_use_lifetimes)]
39 #[allow(clippy::mut_mut)]
40 #[allow(clippy::redundant_pub_crate)]
41 #[allow(clippy::type_repetition_in_bounds)]
42 struct StructProjReplace<T, U> {
43     pinned: ::pin_project_lite::__private::PhantomData<T>,
44     unpinned: U,
45 }
46 #[allow(explicit_outlives_requirements)]
47 #[allow(single_use_lifetimes)]
48 #[allow(clippy::unknown_clippy_lints)]
49 #[allow(clippy::redundant_pub_crate)]
50 #[allow(clippy::used_underscore_binding)]
51 const _: () = {
52     impl<T, U> Struct<T, U> {
53         #[doc(hidden)]
54         #[inline]
project<'__pin>( self: ::pin_project_lite::__private::Pin<&'__pin mut Self>, ) -> StructProj<'__pin, T, U>55         fn project<'__pin>(
56             self: ::pin_project_lite::__private::Pin<&'__pin mut Self>,
57         ) -> StructProj<'__pin, T, U> {
58             unsafe {
59                 let Self { pinned, unpinned } = self.get_unchecked_mut();
60                 StructProj {
61                     pinned: ::pin_project_lite::__private::Pin::new_unchecked(pinned),
62                     unpinned: unpinned,
63                 }
64             }
65         }
66         #[doc(hidden)]
67         #[inline]
project_ref<'__pin>( self: ::pin_project_lite::__private::Pin<&'__pin Self>, ) -> StructProjRef<'__pin, T, U>68         fn project_ref<'__pin>(
69             self: ::pin_project_lite::__private::Pin<&'__pin Self>,
70         ) -> StructProjRef<'__pin, T, U> {
71             unsafe {
72                 let Self { pinned, unpinned } = self.get_ref();
73                 StructProjRef {
74                     pinned: ::pin_project_lite::__private::Pin::new_unchecked(pinned),
75                     unpinned: unpinned,
76                 }
77             }
78         }
79         #[doc(hidden)]
80         #[inline]
project_replace( self: ::pin_project_lite::__private::Pin<&mut Self>, replacement: Self, ) -> StructProjReplace<T, U>81         fn project_replace(
82             self: ::pin_project_lite::__private::Pin<&mut Self>,
83             replacement: Self,
84         ) -> StructProjReplace<T, U> {
85             unsafe {
86                 let __self_ptr: *mut Self = self.get_unchecked_mut();
87                 let __guard = ::pin_project_lite::__private::UnsafeOverwriteGuard::new(
88                     __self_ptr,
89                     replacement,
90                 );
91                 let Self { pinned, unpinned } = &mut *__self_ptr;
92                 let result = StructProjReplace {
93                     pinned: ::pin_project_lite::__private::PhantomData,
94                     unpinned: ::pin_project_lite::__private::ptr::read(unpinned),
95                 };
96                 {
97                     (
98                         ::pin_project_lite::__private::UnsafeDropInPlaceGuard::new(
99                             pinned,
100                         ),
101                         (),
102                     );
103                 }
104                 result
105             }
106         }
107     }
108     #[allow(non_snake_case)]
109     struct __Origin<'__pin, T, U> {
110         __dummy_lifetime: ::pin_project_lite::__private::PhantomData<&'__pin ()>,
111         pinned: T,
112         unpinned: ::pin_project_lite::__private::AlwaysUnpin<U>,
113     }
114     impl<'__pin, T, U> ::pin_project_lite::__private::Unpin for Struct<T, U>
115     where
116         __Origin<'__pin, T, U>: ::pin_project_lite::__private::Unpin,
117     {}
118     trait MustNotImplDrop {}
119     #[allow(clippy::drop_bounds, drop_bounds)]
120     impl<T: ::pin_project_lite::__private::Drop> MustNotImplDrop for T {}
121     impl<T, U> MustNotImplDrop for Struct<T, U> {}
122     #[forbid(unaligned_references, safe_packed_borrows)]
__assert_not_repr_packed<T, U>(this: &Struct<T, U>)123     fn __assert_not_repr_packed<T, U>(this: &Struct<T, U>) {
124         let _ = &this.pinned;
125         let _ = &this.unpinned;
126     }
127 };
main()128 fn main() {}
129