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 #[allow(
47 explicit_outlives_requirements,
48 single_use_lifetimes,
49 clippy::unknown_clippy_lints,
50 clippy::absolute_paths,
51 clippy::min_ident_chars,
52 clippy::redundant_pub_crate,
53 clippy::single_char_lifetime_names,
54 clippy::used_underscore_binding
55 )]
56 const _: () = {
57 impl<T, U> Struct<T, U> {
58 #[doc(hidden)]
59 #[inline]
project<'__pin>( self: ::pin_project_lite::__private::Pin<&'__pin mut Self>, ) -> StructProj<'__pin, T, U>60 fn project<'__pin>(
61 self: ::pin_project_lite::__private::Pin<&'__pin mut Self>,
62 ) -> StructProj<'__pin, T, U> {
63 unsafe {
64 let Self { pinned, unpinned } = self.get_unchecked_mut();
65 StructProj {
66 pinned: ::pin_project_lite::__private::Pin::new_unchecked(pinned),
67 unpinned: unpinned,
68 }
69 }
70 }
71 #[doc(hidden)]
72 #[inline]
project_ref<'__pin>( self: ::pin_project_lite::__private::Pin<&'__pin Self>, ) -> StructProjRef<'__pin, T, U>73 fn project_ref<'__pin>(
74 self: ::pin_project_lite::__private::Pin<&'__pin Self>,
75 ) -> StructProjRef<'__pin, T, U> {
76 unsafe {
77 let Self { pinned, unpinned } = self.get_ref();
78 StructProjRef {
79 pinned: ::pin_project_lite::__private::Pin::new_unchecked(pinned),
80 unpinned: unpinned,
81 }
82 }
83 }
84 }
85 #[doc(hidden)]
86 impl<'__pin, T, U> ::pin_project_lite::__private::Unpin for Struct<T, U>
87 where
88 (
89 ::pin_project_lite::__private::PhantomData<&'__pin ()>,
90 ::pin_project_lite::__private::PhantomPinned,
91 ): ::pin_project_lite::__private::Unpin,
92 {}
93 trait MustNotImplDrop {}
94 #[allow(clippy::drop_bounds, drop_bounds)]
95 impl<T: ::pin_project_lite::__private::Drop> MustNotImplDrop for T {}
96 impl<T, U> MustNotImplDrop for Struct<T, U> {}
97 #[forbid(unaligned_references, safe_packed_borrows)]
__assert_not_repr_packed<T, U>(this: &Struct<T, U>)98 fn __assert_not_repr_packed<T, U>(this: &Struct<T, U>) {
99 let _ = &this.pinned;
100 let _ = &this.unpinned;
101 }
102 };
main()103 fn main() {}
104