1
1
use std:: alloc:: Allocator ;
2
2
use std:: marker:: PointeeSized ;
3
+ #[ cfg( not( bootstrap) ) ]
4
+ use std:: marker:: Move ;
3
5
4
6
#[ diagnostic:: on_unimplemented( message = "`{Self}` doesn't implement `DynSend`. \
5
7
Add it to `rustc_data_structures::marker` or use `IntoDynSyncSend` if it's already `Send`") ]
@@ -25,6 +27,7 @@ macro_rules! impls_dyn_send_neg {
25
27
}
26
28
27
29
// Consistent with `std`
30
+ #[ cfg( bootstrap) ]
28
31
impls_dyn_send_neg ! (
29
32
[ std:: env:: Args ]
30
33
[ std:: env:: ArgsOs ]
@@ -40,6 +43,22 @@ impls_dyn_send_neg!(
40
43
[ std:: io:: StderrLock <' _>]
41
44
) ;
42
45
46
+ #[ cfg( not( bootstrap) ) ]
47
+ impls_dyn_send_neg ! (
48
+ [ std:: env:: Args ]
49
+ [ std:: env:: ArgsOs ]
50
+ [ * const T where T : ?Sized + ?Move + PointeeSized ]
51
+ [ * mut T where T : ?Sized + ?Move + PointeeSized ]
52
+ [ std:: ptr:: NonNull <T > where T : ?Sized + ?Move + PointeeSized ]
53
+ [ std:: rc:: Rc <T , A > where T : ?Sized + ?Move , A : Allocator ]
54
+ [ std:: rc:: Weak <T , A > where T : ?Sized + ?Move , A : Allocator ]
55
+ [ std:: sync:: MutexGuard <' _, T > where T : ?Sized + ?Move ]
56
+ [ std:: sync:: RwLockReadGuard <' _, T > where T : ?Sized + ?Move ]
57
+ [ std:: sync:: RwLockWriteGuard <' _, T > where T : ?Sized + ?Move ]
58
+ [ std:: io:: StdoutLock <' _>]
59
+ [ std:: io:: StderrLock <' _>]
60
+ ) ;
61
+
43
62
#[ cfg( any(
44
63
unix,
45
64
target_os = "hermit" ,
@@ -98,6 +117,7 @@ macro_rules! impls_dyn_sync_neg {
98
117
}
99
118
100
119
// Consistent with `std`
120
+ #[ cfg( bootstrap) ]
101
121
impls_dyn_sync_neg ! (
102
122
[ std:: env:: Args ]
103
123
[ std:: env:: ArgsOs ]
@@ -114,6 +134,23 @@ impls_dyn_sync_neg!(
114
134
[ std:: sync:: mpsc:: Sender <T > where T ]
115
135
) ;
116
136
137
+ #[ cfg( not( bootstrap) ) ]
138
+ impls_dyn_sync_neg ! (
139
+ [ std:: env:: Args ]
140
+ [ std:: env:: ArgsOs ]
141
+ [ * const T where T : ?Sized + ?Move + PointeeSized ]
142
+ [ * mut T where T : ?Sized + ?Move + PointeeSized ]
143
+ [ std:: cell:: Cell <T > where T : ?Sized + ?Move ]
144
+ [ std:: cell:: RefCell <T > where T : ?Sized + ?Move ]
145
+ [ std:: cell:: UnsafeCell <T > where T : ?Sized + ?Move ]
146
+ [ std:: ptr:: NonNull <T > where T : ?Sized + ?Move + PointeeSized ]
147
+ [ std:: rc:: Rc <T , A > where T : ?Sized + ?Move , A : Allocator ]
148
+ [ std:: rc:: Weak <T , A > where T : ?Sized + ?Move , A : Allocator ]
149
+ [ std:: cell:: OnceCell <T > where T ]
150
+ [ std:: sync:: mpsc:: Receiver <T > where T ]
151
+ [ std:: sync:: mpsc:: Sender <T > where T ]
152
+ ) ;
153
+
117
154
#[ cfg( any(
118
155
unix,
119
156
target_os = "hermit" ,
0 commit comments