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