• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 use pin_project_lite::pin_project;
2 use std::pin::Pin;
3 enum Enum<T, U> {
4     Struct { pinned: T, unpinned: U },
5     Unit,
6 }
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(dead_code)]
25 #[allow(single_use_lifetimes)]
26 #[allow(clippy::unknown_clippy_lints)]
27 #[allow(clippy::mut_mut)]
28 #[allow(clippy::redundant_pub_crate)]
29 #[allow(clippy::ref_option_ref)]
30 #[allow(clippy::type_repetition_in_bounds)]
31 enum EnumProjRef<'__pin, T, U>
32 where
33     Enum<T, U>: '__pin,
34 {
35     Struct {
36         pinned: ::pin_project_lite::__private::Pin<&'__pin (T)>,
37         unpinned: &'__pin (U),
38     },
39     Unit,
40 }
41 #[allow(single_use_lifetimes)]
42 #[allow(clippy::unknown_clippy_lints)]
43 #[allow(clippy::used_underscore_binding)]
44 const _: () = {
45     impl<T, U> Enum<T, U> {
project<'__pin>( self: ::pin_project_lite::__private::Pin<&'__pin mut Self>, ) -> EnumProj<'__pin, T, U>46         fn project<'__pin>(
47             self: ::pin_project_lite::__private::Pin<&'__pin mut Self>,
48         ) -> EnumProj<'__pin, T, U> {
49             unsafe {
50                 match self.get_unchecked_mut() {
51                     Self::Struct { pinned, unpinned } => EnumProj::Struct {
52                         pinned: ::pin_project_lite::__private::Pin::new_unchecked(pinned),
53                         unpinned: unpinned,
54                     },
55                     Self::Unit => EnumProj::Unit,
56                 }
57             }
58         }
project_ref<'__pin>( self: ::pin_project_lite::__private::Pin<&'__pin Self>, ) -> EnumProjRef<'__pin, T, U>59         fn project_ref<'__pin>(
60             self: ::pin_project_lite::__private::Pin<&'__pin Self>,
61         ) -> EnumProjRef<'__pin, T, U> {
62             unsafe {
63                 match self.get_ref() {
64                     Self::Struct { pinned, unpinned } => EnumProjRef::Struct {
65                         pinned: ::pin_project_lite::__private::Pin::new_unchecked(pinned),
66                         unpinned: unpinned,
67                     },
68                     Self::Unit => EnumProjRef::Unit,
69                 }
70             }
71         }
72     }
73     #[allow(non_snake_case)]
74     struct __Origin<'__pin, T, U> {
75         __dummy_lifetime: ::pin_project_lite::__private::PhantomData<&'__pin ()>,
76         Struct: (T, ::pin_project_lite::__private::AlwaysUnpin<U>),
77         Unit: (),
78     }
79     impl<'__pin, T, U> ::pin_project_lite::__private::Unpin for Enum<T, U> where
80         __Origin<'__pin, T, U>: ::pin_project_lite::__private::Unpin
81     {
82     }
83     impl<T, U> ::pin_project_lite::__private::Drop for Enum<T, U> {
drop(&mut self)84         fn drop(&mut self) {
85             fn __drop_inner<T, U>(this: ::pin_project_lite::__private::Pin<&mut Enum<T, U>>) {
86                 fn __drop_inner() {}
87                 let _ = this;
88             }
89             let pinned_self: ::pin_project_lite::__private::Pin<&mut Self> =
90                 unsafe { ::pin_project_lite::__private::Pin::new_unchecked(self) };
91             __drop_inner(pinned_self);
92         }
93     }
94 };
main()95 fn main() {}
96