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