1 use pin_project::pin_project;
2 # [pin (__private (project_replace = EnumProjOwn))]
3 enum Enum<T, U> {
4 Struct {
5 #[pin]
6 pinned: T,
7 unpinned: U,
8 },
9 Tuple(#[pin] T, U),
10 Unit,
11 }
12 #[allow(box_pointers)]
13 #[allow(deprecated)]
14 #[allow(explicit_outlives_requirements)]
15 #[allow(single_use_lifetimes)]
16 #[allow(unreachable_pub)]
17 #[allow(clippy::unknown_clippy_lints)]
18 #[allow(clippy::pattern_type_mismatch)]
19 #[allow(clippy::redundant_pub_crate)]
20 #[allow(clippy::type_repetition_in_bounds)]
21 #[allow(dead_code)]
22 #[allow(variant_size_differences)]
23 #[allow(clippy::large_enum_variant)]
24 enum EnumProjOwn<T, U> {
25 Struct {
26 pinned: ::pin_project::__private::PhantomData<T>,
27 unpinned: U,
28 },
29 Tuple(::pin_project::__private::PhantomData<T>, U),
30 Unit,
31 }
32 #[allow(box_pointers)]
33 #[allow(deprecated)]
34 #[allow(explicit_outlives_requirements)]
35 #[allow(single_use_lifetimes)]
36 #[allow(unreachable_pub)]
37 #[allow(clippy::unknown_clippy_lints)]
38 #[allow(clippy::pattern_type_mismatch)]
39 #[allow(clippy::redundant_pub_crate)]
40 #[allow(clippy::type_repetition_in_bounds)]
41 #[allow(unused_qualifications)]
42 #[allow(clippy::semicolon_if_nothing_returned)]
43 #[allow(clippy::use_self)]
44 #[allow(clippy::used_underscore_binding)]
45 const _: () = {
46 #[allow(unused_extern_crates)]
47 extern crate pin_project as _pin_project;
48 impl<T, U> Enum<T, U> {
project_replace( self: _pin_project::__private::Pin<&mut Self>, __replacement: Self, ) -> EnumProjOwn<T, U>49 fn project_replace(
50 self: _pin_project::__private::Pin<&mut Self>,
51 __replacement: Self,
52 ) -> EnumProjOwn<T, U> {
53 unsafe {
54 let __self_ptr: *mut Self = self.get_unchecked_mut();
55 let __guard =
56 _pin_project::__private::UnsafeOverwriteGuard::new(__self_ptr, __replacement);
57 match &mut *__self_ptr {
58 Self::Struct { pinned, unpinned } => {
59 let __result = EnumProjOwn::Struct {
60 pinned: _pin_project::__private::PhantomData,
61 unpinned: _pin_project::__private::ptr::read(unpinned),
62 };
63 {
64 let __guard =
65 _pin_project::__private::UnsafeDropInPlaceGuard::new(pinned);
66 }
67 __result
68 }
69 Self::Tuple(_0, _1) => {
70 let __result = EnumProjOwn::Tuple(
71 _pin_project::__private::PhantomData,
72 _pin_project::__private::ptr::read(_1),
73 );
74 {
75 let __guard = _pin_project::__private::UnsafeDropInPlaceGuard::new(_0);
76 }
77 __result
78 }
79 Self::Unit => {
80 let __result = EnumProjOwn::Unit;
81 {}
82 __result
83 }
84 }
85 }
86 }
87 }
88 #[allow(missing_debug_implementations)]
89 struct __Enum<'pin, T, U> {
90 __pin_project_use_generics: _pin_project::__private::AlwaysUnpin<
91 'pin,
92 (
93 _pin_project::__private::PhantomData<T>,
94 _pin_project::__private::PhantomData<U>,
95 ),
96 >,
97 __field0: T,
98 __field1: T,
99 }
100 impl<'pin, T, U> _pin_project::__private::Unpin for Enum<T, U> where
101 __Enum<'pin, T, U>: _pin_project::__private::Unpin
102 {
103 }
104 #[doc(hidden)]
105 unsafe impl<'pin, T, U> _pin_project::UnsafeUnpin for Enum<T, U> where
106 __Enum<'pin, T, U>: _pin_project::__private::Unpin
107 {
108 }
109 trait EnumMustNotImplDrop {}
110 #[allow(clippy::drop_bounds, drop_bounds)]
111 impl<T: _pin_project::__private::Drop> EnumMustNotImplDrop for T {}
112 impl<T, U> EnumMustNotImplDrop for Enum<T, U> {}
113 #[doc(hidden)]
114 impl<T, U> _pin_project::__private::PinnedDrop for Enum<T, U> {
drop(self: _pin_project::__private::Pin<&mut Self>)115 unsafe fn drop(self: _pin_project::__private::Pin<&mut Self>) {}
116 }
117 };
main()118 fn main() {}
119