• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 use std::pin::Pin;
2 use pin_project_lite::pin_project;
3 struct Struct<T, U> {
4     pinned: T,
5     unpinned: U,
6 }
7 #[allow(explicit_outlives_requirements)]
8 #[allow(single_use_lifetimes)]
9 #[allow(clippy::unknown_clippy_lints)]
10 #[allow(clippy::redundant_pub_crate)]
11 #[allow(clippy::used_underscore_binding)]
12 const _: () = {
13     #[doc(hidden)]
14     #[allow(dead_code)]
15     #[allow(single_use_lifetimes)]
16     #[allow(clippy::unknown_clippy_lints)]
17     #[allow(clippy::mut_mut)]
18     #[allow(clippy::redundant_pub_crate)]
19     #[allow(clippy::ref_option_ref)]
20     #[allow(clippy::type_repetition_in_bounds)]
21     struct Projection<'__pin, T, U>
22     where
23         Struct<T, U>: '__pin,
24     {
25         pinned: ::pin_project_lite::__private::Pin<&'__pin mut (T)>,
26         unpinned: &'__pin mut (U),
27     }
28     #[doc(hidden)]
29     #[allow(dead_code)]
30     #[allow(single_use_lifetimes)]
31     #[allow(clippy::unknown_clippy_lints)]
32     #[allow(clippy::mut_mut)]
33     #[allow(clippy::redundant_pub_crate)]
34     #[allow(clippy::ref_option_ref)]
35     #[allow(clippy::type_repetition_in_bounds)]
36     struct ProjectionRef<'__pin, T, U>
37     where
38         Struct<T, U>: '__pin,
39     {
40         pinned: ::pin_project_lite::__private::Pin<&'__pin (T)>,
41         unpinned: &'__pin (U),
42     }
43     impl<T, U> Struct<T, U> {
44         #[doc(hidden)]
45         #[inline]
project<'__pin>( self: ::pin_project_lite::__private::Pin<&'__pin mut Self>, ) -> Projection<'__pin, T, U>46         fn project<'__pin>(
47             self: ::pin_project_lite::__private::Pin<&'__pin mut Self>,
48         ) -> Projection<'__pin, T, U> {
49             unsafe {
50                 let Self { pinned, unpinned } = self.get_unchecked_mut();
51                 Projection {
52                     pinned: ::pin_project_lite::__private::Pin::new_unchecked(pinned),
53                     unpinned: unpinned,
54                 }
55             }
56         }
57         #[doc(hidden)]
58         #[inline]
project_ref<'__pin>( self: ::pin_project_lite::__private::Pin<&'__pin Self>, ) -> ProjectionRef<'__pin, T, U>59         fn project_ref<'__pin>(
60             self: ::pin_project_lite::__private::Pin<&'__pin Self>,
61         ) -> ProjectionRef<'__pin, T, U> {
62             unsafe {
63                 let Self { pinned, unpinned } = self.get_ref();
64                 ProjectionRef {
65                     pinned: ::pin_project_lite::__private::Pin::new_unchecked(pinned),
66                     unpinned: unpinned,
67                 }
68             }
69         }
70     }
71     #[allow(non_snake_case)]
72     struct __Origin<'__pin, T, U> {
73         __dummy_lifetime: ::pin_project_lite::__private::PhantomData<&'__pin ()>,
74         pinned: T,
75         unpinned: ::pin_project_lite::__private::AlwaysUnpin<U>,
76     }
77     impl<'__pin, T, U> ::pin_project_lite::__private::Unpin for Struct<T, U>
78     where
79         __Origin<'__pin, T, U>: ::pin_project_lite::__private::Unpin,
80     {}
81     impl<T, U> ::pin_project_lite::__private::Drop for Struct<T, U> {
drop(&mut self)82         fn drop(&mut self) {
83             fn __drop_inner<T, U>(
84                 this: ::pin_project_lite::__private::Pin<&mut Struct<T, U>>,
85             ) {
86                 fn __drop_inner() {}
87                 let _ = this;
88             }
89             let pinned_self: ::pin_project_lite::__private::Pin<&mut Self> = unsafe {
90                 ::pin_project_lite::__private::Pin::new_unchecked(self)
91             };
92             __drop_inner(pinned_self);
93         }
94     }
95     #[forbid(unaligned_references, safe_packed_borrows)]
__assert_not_repr_packed<T, U>(this: &Struct<T, U>)96     fn __assert_not_repr_packed<T, U>(this: &Struct<T, U>) {
97         let _ = &this.pinned;
98         let _ = &this.unpinned;
99     }
100 };
main()101 fn main() {}
102