1
+ // use the proc macro instead
2
+ #[ doc( hidden) ]
1
3
#[ macro_export]
2
4
macro_rules! pin_project {
3
5
( parse_input:
@@ -9,7 +11,7 @@ macro_rules! pin_project {
9
11
) ,
10
12
@body( { $( $fields: tt) * } )
11
13
) => {
12
- $crate:: init :: pin_project!( find_pinned_fields:
14
+ $crate:: pin_project!( find_pinned_fields:
13
15
@struct_attrs( $( #[ $( $struct_attr) * ] ) * ) ,
14
16
@vis( $vis) ,
15
17
@name( $name) ,
@@ -34,7 +36,7 @@ macro_rules! pin_project {
34
36
) ,
35
37
@body( { $( $fields: tt) * } )
36
38
) => {
37
- $crate:: init :: pin_project!( find_pinned_fields:
39
+ $crate:: pin_project!( find_pinned_fields:
38
40
@struct_attrs( $( #[ $( $struct_attr) * ] ) * ) ,
39
41
@vis( $vis) ,
40
42
@name( $name) ,
@@ -65,7 +67,7 @@ macro_rules! pin_project {
65
67
@is_pinned( yes) ,
66
68
@pinned_drop( $( $pinned_drop: ident) ?) ,
67
69
) => {
68
- $crate:: init :: pin_project!( find_pinned_fields:
70
+ $crate:: pin_project!( find_pinned_fields:
69
71
@struct_attrs( $( $struct_attrs) * ) ,
70
72
@vis( $vis) ,
71
73
@name( $name) ,
@@ -96,7 +98,7 @@ macro_rules! pin_project {
96
98
@is_pinned( ) ,
97
99
@pinned_drop( $( $pinned_drop: ident) ?) ,
98
100
) => {
99
- $crate:: init :: pin_project!( find_pinned_fields:
101
+ $crate:: pin_project!( find_pinned_fields:
100
102
@struct_attrs( $( $struct_attrs) * ) ,
101
103
@vis( $vis) ,
102
104
@name( $name) ,
@@ -127,7 +129,7 @@ macro_rules! pin_project {
127
129
@is_pinned( $( $is_pinned: ident) ?) ,
128
130
@pinned_drop( $( $pinned_drop: ident) ?) ,
129
131
) => {
130
- $crate:: init :: pin_project!( find_pinned_fields:
132
+ $crate:: pin_project!( find_pinned_fields:
131
133
@struct_attrs( $( $struct_attrs) * ) ,
132
134
@vis( $vis) ,
133
135
@name( $name) ,
@@ -158,7 +160,7 @@ macro_rules! pin_project {
158
160
@is_pinned( $( $is_pinned: ident) ?) ,
159
161
@pinned_drop( $( $pinned_drop: ident) ?) ,
160
162
) => {
161
- $crate:: init :: pin_project!( find_pinned_fields:
163
+ $crate:: pin_project!( find_pinned_fields:
162
164
@struct_attrs( $( $struct_attrs) * ) ,
163
165
@vis( $vis) ,
164
166
@name( $name) ,
@@ -189,7 +191,7 @@ macro_rules! pin_project {
189
191
@is_pinned( $( $is_pinned: ident) ?) ,
190
192
@pinned_drop( $( $pinned_drop: ident) ?) ,
191
193
) => {
192
- $crate:: init :: pin_project!( find_pinned_fields:
194
+ $crate:: pin_project!( find_pinned_fields:
193
195
@struct_attrs( $( $struct_attrs) * ) ,
194
196
@vis( $vis) ,
195
197
@name( $name) ,
@@ -234,8 +236,7 @@ macro_rules! pin_project {
234
236
__phantom: :: core:: marker:: PhantomData <fn ( $name<$( $ty_generics) * >) -> $name<$( $ty_generics) * >>,
235
237
}
236
238
237
- $crate:: init:: pin_project!( make_pin_data:
238
- @slot( $name<$( $ty_generics) * >) ,
239
+ $crate:: pin_project!( make_pin_data:
239
240
@pin_data( __ThePinData) ,
240
241
@impl_generics( $( $impl_generics) * ) ,
241
242
@ty_generics( $( $ty_generics) * ) ,
@@ -244,10 +245,10 @@ macro_rules! pin_project {
244
245
@not_pinned( $( $not_pinned) * ) ,
245
246
) ;
246
247
247
- impl <$( $impl_generics) * > __PinData for $name<$( $ty_generics) * >
248
+ unsafe impl <$( $impl_generics) * > $crate :: init :: __private :: __PinData for $name<$( $ty_generics) * >
248
249
where $( $whr) *
249
250
{
250
- type PinData = __ThePinData<$( $ty_generics) * >;
251
+ type __PinData = __ThePinData<$( $ty_generics) * >;
251
252
}
252
253
253
254
#[ allow( dead_code) ]
@@ -265,7 +266,7 @@ macro_rules! pin_project {
265
266
$( $whr) *
266
267
{ }
267
268
268
- $crate:: init :: pin_project!( drop_prevention:
269
+ $crate:: pin_project!( drop_prevention:
269
270
@name( $name) ,
270
271
@impl_generics( $( $impl_generics) * ) ,
271
272
@ty_generics( $( $ty_generics) * ) ,
@@ -305,7 +306,6 @@ macro_rules! pin_project {
305
306
}
306
307
} ;
307
308
( make_pin_data:
308
- @slot( $slot: ty) ,
309
309
@pin_data( $pin_data: ident) ,
310
310
@impl_generics( $( $impl_generics: tt) * ) ,
311
311
@ty_generics( $( $ty_generics: tt) * ) ,
@@ -314,16 +314,24 @@ macro_rules! pin_project {
314
314
@not_pinned( $( $( #[ $( $attr: tt) * ] ) * $fvis: vis $field: ident : $type: ty) ,* $( , ) ?) ,
315
315
) => {
316
316
#[ allow( dead_code) ]
317
- impl <$( $impl_generics) * > $pin_data<$( $ty_generics) * > {
317
+ impl <$( $impl_generics) * > $pin_data<$( $ty_generics) * >
318
+ where $( $whr) *
319
+ {
318
320
$(
319
- $pvis unsafe fn $p_field<E , W >(
320
- slot: * mut $slot ,
321
- init: impl PinInit <$p_type, E , W >,
321
+ $pvis unsafe fn $p_field<E , W : $crate :: init :: __private :: InitWay >(
322
+ slot: * mut $p_type ,
323
+ init: impl $crate :: init :: __private :: __PinInitImpl <$p_type, E , W >,
322
324
) -> :: core:: result:: Result <( ) , E > {
325
+ unsafe { $crate:: init:: __private:: __PinInitImpl:: __pinned_init( init, slot) }
323
326
}
324
327
) *
325
328
$(
326
- $fvis unsafe fn $field( ) -> ( ) { }
329
+ $fvis unsafe fn $field<E , W : $crate:: init:: __private:: InitWay >(
330
+ slot: * mut $type,
331
+ init: impl $crate:: init:: __private:: __InitImpl<$type, E , W >,
332
+ ) -> :: core:: result:: Result <( ) , E > {
333
+ unsafe { $crate:: init:: __private:: __InitImpl:: __init( init, slot) }
334
+ }
327
335
) *
328
336
}
329
337
} ;
0 commit comments