• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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(
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 enum EnumProj<'__pin, T, U>
20 where
21     Enum<T, U>: '__pin,
22 {
23     Struct {
24         pinned: ::pin_project_lite::__private::Pin<&'__pin mut (T)>,
25         unpinned: &'__pin mut (U),
26     },
27     Unit,
28 }
29 #[doc(hidden)]
30 #[allow(
31     dead_code,
32     single_use_lifetimes,
33     clippy::unknown_clippy_lints,
34     clippy::absolute_paths,
35     clippy::min_ident_chars,
36     clippy::mut_mut,
37     clippy::redundant_pub_crate,
38     clippy::ref_option_ref,
39     clippy::single_char_lifetime_names,
40     clippy::type_repetition_in_bounds
41 )]
42 enum EnumProjRef<'__pin, T, U>
43 where
44     Enum<T, U>: '__pin,
45 {
46     Struct {
47         pinned: ::pin_project_lite::__private::Pin<&'__pin (T)>,
48         unpinned: &'__pin (U),
49     },
50     Unit,
51 }
52 #[allow(
53     single_use_lifetimes,
54     clippy::unknown_clippy_lints,
55     clippy::absolute_paths,
56     clippy::min_ident_chars,
57     clippy::single_char_lifetime_names,
58     clippy::used_underscore_binding
59 )]
60 const _: () = {
61     impl<T, U> Enum<T, U> {
62         #[doc(hidden)]
63         #[inline]
project<'__pin>( self: ::pin_project_lite::__private::Pin<&'__pin mut Self>, ) -> EnumProj<'__pin, T, U>64         fn project<'__pin>(
65             self: ::pin_project_lite::__private::Pin<&'__pin mut Self>,
66         ) -> EnumProj<'__pin, T, U> {
67             unsafe {
68                 match self.get_unchecked_mut() {
69                     Self::Struct { pinned, unpinned } => {
70                         EnumProj::Struct {
71                             pinned: ::pin_project_lite::__private::Pin::new_unchecked(
72                                 pinned,
73                             ),
74                             unpinned: unpinned,
75                         }
76                     }
77                     Self::Unit => EnumProj::Unit,
78                 }
79             }
80         }
81         #[doc(hidden)]
82         #[inline]
project_ref<'__pin>( self: ::pin_project_lite::__private::Pin<&'__pin Self>, ) -> EnumProjRef<'__pin, T, U>83         fn project_ref<'__pin>(
84             self: ::pin_project_lite::__private::Pin<&'__pin Self>,
85         ) -> EnumProjRef<'__pin, T, U> {
86             unsafe {
87                 match self.get_ref() {
88                     Self::Struct { pinned, unpinned } => {
89                         EnumProjRef::Struct {
90                             pinned: ::pin_project_lite::__private::Pin::new_unchecked(
91                                 pinned,
92                             ),
93                             unpinned: unpinned,
94                         }
95                     }
96                     Self::Unit => EnumProjRef::Unit,
97                 }
98             }
99         }
100     }
101     #[doc(hidden)]
102     impl<'__pin, T, U> ::pin_project_lite::__private::Unpin for Enum<T, U>
103     where
104         (
105             ::pin_project_lite::__private::PhantomData<&'__pin ()>,
106             ::pin_project_lite::__private::PhantomPinned,
107         ): ::pin_project_lite::__private::Unpin,
108     {}
109     trait MustNotImplDrop {}
110     #[allow(clippy::drop_bounds, drop_bounds)]
111     impl<T: ::pin_project_lite::__private::Drop> MustNotImplDrop for T {}
112     impl<T, U> MustNotImplDrop for Enum<T, U> {}
113 };
main()114 fn main() {}
115