1 use pin_project_lite
::pin_project
;
3 Struct { pinned: T, unpinned: U }
,
7 #[allow(single_use_lifetimes)]
8 #[allow(clippy::unknown_clippy_lints)]
9 #[allow(clippy::mut_mut)]
10 #[allow(clippy::redundant_pub_crate)]
11 #[allow(clippy::ref_option_ref)]
12 #[allow(clippy::type_repetition_in_bounds)]
13 enum EnumProj
<'__pin
, T
, U
>
18 pinned
: ::pin_project_lite
::__private
::Pin
<&'__pin
mut (T
)>,
19 unpinned
: &'__pin
mut (U
),
24 #[allow(single_use_lifetimes)]
25 #[allow(clippy::unknown_clippy_lints)]
26 #[allow(clippy::mut_mut)]
27 #[allow(clippy::redundant_pub_crate)]
28 #[allow(clippy::ref_option_ref)]
29 #[allow(clippy::type_repetition_in_bounds)]
30 enum EnumProjRef
<'__pin
, T
, U
>
35 pinned
: ::pin_project_lite
::__private
::Pin
<&'
__pin (T
)>,
36 unpinned
: &'
__pin (U
),
41 #[allow(single_use_lifetimes)]
42 #[allow(clippy::mut_mut)]
43 #[allow(clippy::redundant_pub_crate)]
44 #[allow(clippy::type_repetition_in_bounds)]
45 enum EnumProjReplace
<T
, U
> {
47 pinned
: ::pin_project_lite
::__private
::PhantomData
<T
>,
52 #[allow(single_use_lifetimes)]
53 #[allow(clippy::unknown_clippy_lints)]
54 #[allow(clippy::used_underscore_binding)]
56 impl<T
, U
> Enum
<T
, U
> {
58 self: ::pin_project_lite
::__private
::Pin
<&'__pin
mut Self>,
59 ) -> EnumProj
<'__pin
, T
, U
> {
61 match self.get_unchecked_mut() {
62 Self::Struct { pinned, unpinned }
=> EnumProj
::Struct
{
63 pinned
: ::pin_project_lite
::__private
::Pin
::new_unchecked(pinned
),
66 Self::Unit
=> EnumProj
::Unit
,
70 fn project_ref
<'__pin
>(
71 self: ::pin_project_lite
::__private
::Pin
<&'__pin
Self>,
72 ) -> EnumProjRef
<'__pin
, T
, U
> {
74 match self.get_ref() {
75 Self::Struct { pinned, unpinned }
=> EnumProjRef
::Struct
{
76 pinned
: ::pin_project_lite
::__private
::Pin
::new_unchecked(pinned
),
79 Self::Unit
=> EnumProjRef
::Unit
,
84 self: ::pin_project_lite
::__private
::Pin
<&mut Self>,
86 ) -> EnumProjReplace
<T
, U
> {
88 let __self_ptr
: *mut Self = self.get_unchecked_mut();
89 let __guard
= ::pin_project_lite
::__private
::UnsafeOverwriteGuard
{
91 value
: ::pin_project_lite
::__private
::ManuallyDrop
::new(replacement
),
93 match &mut *__self_ptr
{
94 Self::Struct { pinned, unpinned }
=> {
95 let result
= EnumProjReplace
::Struct
{
96 pinned
: ::pin_project_lite
::__private
::PhantomData
,
97 unpinned
: ::pin_project_lite
::__private
::ptr
::read(unpinned
),
101 ::pin_project_lite
::__private
::UnsafeDropInPlaceGuard(pinned
),
107 Self::Unit
=> EnumProjReplace
::Unit
,
112 #[allow(non_snake_case)]
113 struct __Origin
<'__pin
, T
, U
> {
114 __dummy_lifetime
: ::pin_project_lite
::__private
::PhantomData
<&'
__pin ()>,
115 Struct
: (T
, ::pin_project_lite
::__private
::AlwaysUnpin
<U
>),
118 impl<'__pin
, T
, U
> ::pin_project_lite
::__private
::Unpin
for Enum
<T
, U
> where
119 __Origin
<'__pin
, T
, U
>: ::pin_project_lite
::__private
::Unpin
122 trait MustNotImplDrop {}
123 #[allow(clippy::drop_bounds, drop_bounds)]
124 impl<T
: ::pin_project_lite
::__private
::Drop
> MustNotImplDrop
for T {}
125 impl<T
, U
> MustNotImplDrop
for Enum
<T
, U
> {}