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