File tree Expand file tree Collapse file tree 2 files changed +35
-0
lines changed Expand file tree Collapse file tree 2 files changed +35
-0
lines changed Original file line number Diff line number Diff line change 45
45
#![ feature( inline_const) ]
46
46
#![ feature( is_sorted) ]
47
47
#![ feature( pattern) ]
48
+ #![ feature( pin_macro) ]
48
49
#![ feature( sort_internals) ]
49
50
#![ feature( slice_take) ]
50
51
#![ feature( maybe_uninit_uninit_array) ]
@@ -122,6 +123,7 @@ mod ops;
122
123
mod option;
123
124
mod pattern;
124
125
mod pin;
126
+ mod pin_macro;
125
127
mod ptr;
126
128
mod result;
127
129
mod simd;
Original file line number Diff line number Diff line change
1
+ // edition:2021
2
+ use core:: {
3
+ marker:: PhantomPinned ,
4
+ mem:: { drop as stuff, transmute} ,
5
+ pin:: { pin, Pin } ,
6
+ } ;
7
+
8
+ #[ test]
9
+ fn basic ( ) {
10
+ let it: Pin < & mut PhantomPinned > = pin ! ( PhantomPinned ) ;
11
+ stuff ( it) ;
12
+ }
13
+
14
+ #[ test]
15
+ fn extension_works_through_block ( ) {
16
+ let it: Pin < & mut PhantomPinned > = { pin ! ( PhantomPinned ) } ;
17
+ stuff ( it) ;
18
+ }
19
+
20
+ #[ test]
21
+ fn extension_works_through_unsafe_block ( ) {
22
+ // "retro-type-inference" works as well.
23
+ let it: Pin < & mut PhantomPinned > = unsafe { pin ! ( transmute( ( ) ) ) } ;
24
+ stuff ( it) ;
25
+ }
26
+
27
+ #[ test]
28
+ fn unsize_coercion ( ) {
29
+ let slice: Pin < & mut [ PhantomPinned ] > = pin ! ( [ PhantomPinned ; 2 ] ) ;
30
+ stuff ( slice) ;
31
+ let dyn_obj: Pin < & mut dyn Send > = pin ! ( [ PhantomPinned ; 2 ] ) ;
32
+ stuff ( dyn_obj) ;
33
+ }
You can’t perform that action at this time.
0 commit comments