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