1 use pin_project_lite::pin_project;
2 enum Enum<T, U> {
3     Struct { pinned: T, unpinned: U },
4     Unit,
5 }
6 #[doc(hidden)]
7 #[allow(dead_code)]
8 #[allow(single_use_lifetimes)]
9 #[allow(clippy::unknown_clippy_lints)]
10 #[allow(clippy::mut_mut)]
11 #[allow(clippy::redundant_pub_crate)]
12 #[allow(clippy::ref_option_ref)]
13 #[allow(clippy::type_repetition_in_bounds)]
14 enum EnumProj<'__pin, T, U>
15 where
16     Enum<T, U>: '__pin,
17 {
18     Struct {
19         pinned: ::pin_project_lite::__private::Pin<&'__pin mut (T)>,
20         unpinned: &'__pin mut (U),
21     },
22     Unit,
23 }
24 #[allow(single_use_lifetimes)]
25 #[allow(clippy::unknown_clippy_lints)]
26 #[allow(clippy::used_underscore_binding)]
27 const _: () = {
28     impl<T, U> Enum<T, U> {
29         #[doc(hidden)]
30         #[inline]
project<'__pin>( self: ::pin_project_lite::__private::Pin<&'__pin mut Self>, ) -> EnumProj<'__pin, T, U>31         fn project<'__pin>(
32             self: ::pin_project_lite::__private::Pin<&'__pin mut Self>,
33         ) -> EnumProj<'__pin, T, U> {
34             unsafe {
35                 match self.get_unchecked_mut() {
36                     Self::Struct { pinned, unpinned } => {
37                         EnumProj::Struct {
38                             pinned: ::pin_project_lite::__private::Pin::new_unchecked(
39                                 pinned,
40                             ),
41                             unpinned: unpinned,
42                         }
43                     }
44                     Self::Unit => EnumProj::Unit,
45                 }
46             }
47         }
48     }
49     #[allow(non_snake_case)]
50     struct __Origin<'__pin, T, U> {
51         __dummy_lifetime: ::pin_project_lite::__private::PhantomData<&'__pin ()>,
52         Struct: (T, ::pin_project_lite::__private::AlwaysUnpin<U>),
53         Unit: (),
54     }
55     impl<'__pin, T, U> ::pin_project_lite::__private::Unpin for Enum<T, U>
56     where
57         __Origin<'__pin, T, U>: ::pin_project_lite::__private::Unpin,
58     {}
59     trait MustNotImplDrop {}
60     #[allow(clippy::drop_bounds, drop_bounds)]
61     impl<T: ::pin_project_lite::__private::Drop> MustNotImplDrop for T {}
62     impl<T, U> MustNotImplDrop for Enum<T, U> {}
63 };
main()64 fn main() {}
65