• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 use pin_project::pin_project;
2 #[pin(__private(project_replace))]
3 struct Struct<T, U> {
4     #[pin]
5     pinned1: T,
6     #[pin]
7     pinned2: T,
8     unpinned1: U,
9     unpinned2: U,
10 }
11 #[allow(
12     unused_qualifications,
13     deprecated,
14     explicit_outlives_requirements,
15     single_use_lifetimes,
16     unreachable_pub,
17     unused_tuple_struct_fields,
18     clippy::unknown_clippy_lints,
19     clippy::absolute_paths,
20     clippy::min_ident_chars,
21     clippy::pattern_type_mismatch,
22     clippy::pub_with_shorthand,
23     clippy::redundant_pub_crate,
24     clippy::single_char_lifetime_names,
25     clippy::type_repetition_in_bounds,
26     clippy::needless_lifetimes,
27     clippy::semicolon_if_nothing_returned,
28     clippy::use_self,
29     clippy::used_underscore_binding
30 )]
31 const _: () = {
32     #[allow(unused_extern_crates)]
33     extern crate pin_project as _pin_project;
34     #[allow(dead_code, clippy::missing_docs_in_private_items, clippy::mut_mut)]
35     struct __StructProjection<'pin, T, U>
36     where
37         Struct<T, U>: 'pin,
38     {
39         pinned1: ::pin_project::__private::Pin<&'pin mut (T)>,
40         pinned2: ::pin_project::__private::Pin<&'pin mut (T)>,
41         unpinned1: &'pin mut (U),
42         unpinned2: &'pin mut (U),
43     }
44     #[allow(dead_code, clippy::missing_docs_in_private_items, clippy::ref_option_ref)]
45     struct __StructProjectionRef<'pin, T, U>
46     where
47         Struct<T, U>: 'pin,
48     {
49         pinned1: ::pin_project::__private::Pin<&'pin (T)>,
50         pinned2: ::pin_project::__private::Pin<&'pin (T)>,
51         unpinned1: &'pin (U),
52         unpinned2: &'pin (U),
53     }
54     #[allow(dead_code, clippy::missing_docs_in_private_items)]
55     struct __StructProjectionOwned<T, U> {
56         pinned1: ::pin_project::__private::PhantomData<T>,
57         pinned2: ::pin_project::__private::PhantomData<T>,
58         unpinned1: U,
59         unpinned2: U,
60     }
61     impl<T, U> Struct<T, U> {
62         #[allow(dead_code)]
63         #[inline]
project<'pin>( self: _pin_project::__private::Pin<&'pin mut Self>, ) -> __StructProjection<'pin, T, U>64         fn project<'pin>(
65             self: _pin_project::__private::Pin<&'pin mut Self>,
66         ) -> __StructProjection<'pin, T, U> {
67             unsafe {
68                 let Self { pinned1, pinned2, unpinned1, unpinned2 } = self
69                     .get_unchecked_mut();
70                 __StructProjection {
71                     pinned1: _pin_project::__private::Pin::new_unchecked(pinned1),
72                     pinned2: _pin_project::__private::Pin::new_unchecked(pinned2),
73                     unpinned1,
74                     unpinned2,
75                 }
76             }
77         }
78         #[allow(dead_code)]
79         #[allow(clippy::missing_const_for_fn)]
80         #[inline]
project_ref<'pin>( self: _pin_project::__private::Pin<&'pin Self>, ) -> __StructProjectionRef<'pin, T, U>81         fn project_ref<'pin>(
82             self: _pin_project::__private::Pin<&'pin Self>,
83         ) -> __StructProjectionRef<'pin, T, U> {
84             unsafe {
85                 let Self { pinned1, pinned2, unpinned1, unpinned2 } = self.get_ref();
86                 __StructProjectionRef {
87                     pinned1: _pin_project::__private::Pin::new_unchecked(pinned1),
88                     pinned2: _pin_project::__private::Pin::new_unchecked(pinned2),
89                     unpinned1,
90                     unpinned2,
91                 }
92             }
93         }
94         #[allow(dead_code)]
95         #[inline]
project_replace( self: _pin_project::__private::Pin<&mut Self>, __replacement: Self, ) -> __StructProjectionOwned<T, U>96         fn project_replace(
97             self: _pin_project::__private::Pin<&mut Self>,
98             __replacement: Self,
99         ) -> __StructProjectionOwned<T, U> {
100             unsafe {
101                 let __self_ptr: *mut Self = self.get_unchecked_mut();
102                 let __guard = _pin_project::__private::UnsafeOverwriteGuard::new(
103                     __self_ptr,
104                     __replacement,
105                 );
106                 let Self { pinned1, pinned2, unpinned1, unpinned2 } = &mut *__self_ptr;
107                 let __result = __StructProjectionOwned {
108                     pinned1: _pin_project::__private::PhantomData,
109                     pinned2: _pin_project::__private::PhantomData,
110                     unpinned1: _pin_project::__private::ptr::read(unpinned1),
111                     unpinned2: _pin_project::__private::ptr::read(unpinned2),
112                 };
113                 {
114                     let __guard = _pin_project::__private::UnsafeDropInPlaceGuard::new(
115                         pinned2,
116                     );
117                     let __guard = _pin_project::__private::UnsafeDropInPlaceGuard::new(
118                         pinned1,
119                     );
120                 }
121                 __result
122             }
123         }
124     }
125     #[forbid(unaligned_references, safe_packed_borrows)]
__assert_not_repr_packed<T, U>(this: &Struct<T, U>)126     fn __assert_not_repr_packed<T, U>(this: &Struct<T, U>) {
127         let _ = &this.pinned1;
128         let _ = &this.pinned2;
129         let _ = &this.unpinned1;
130         let _ = &this.unpinned2;
131     }
132     #[allow(missing_debug_implementations, unnameable_types)]
133     struct __Struct<'pin, T, U> {
134         __pin_project_use_generics: _pin_project::__private::AlwaysUnpin<
135             'pin,
136             (
137                 _pin_project::__private::PhantomData<T>,
138                 _pin_project::__private::PhantomData<U>,
139             ),
140         >,
141         __field0: T,
142         __field1: T,
143     }
144     impl<'pin, T, U> _pin_project::__private::Unpin for Struct<T, U>
145     where
146         _pin_project::__private::PinnedFieldsOf<
147             __Struct<'pin, T, U>,
148         >: _pin_project::__private::Unpin,
149     {}
150     #[doc(hidden)]
151     unsafe impl<'pin, T, U> _pin_project::UnsafeUnpin for Struct<T, U>
152     where
153         _pin_project::__private::PinnedFieldsOf<
154             __Struct<'pin, T, U>,
155         >: _pin_project::__private::Unpin,
156     {}
157     trait StructMustNotImplDrop {}
158     #[allow(clippy::drop_bounds, drop_bounds)]
159     impl<T: _pin_project::__private::Drop> StructMustNotImplDrop for T {}
160     impl<T, U> StructMustNotImplDrop for Struct<T, U> {}
161     #[doc(hidden)]
162     impl<T, U> _pin_project::__private::PinnedDrop for Struct<T, U> {
drop(self: _pin_project::__private::Pin<&mut Self>)163         unsafe fn drop(self: _pin_project::__private::Pin<&mut Self>) {}
164     }
165 };
main()166 fn main() {}
167