14
14
#![ no_core]
15
15
#![ allow( dead_code, internal_features, ambiguous_wide_pointer_comparisons) ]
16
16
17
+ #[ lang = "pointee_sized" ]
18
+ pub trait PointeeSized { }
19
+
20
+ #[ lang = "meta_sized" ]
21
+ pub trait MetaSized : PointeeSized { }
22
+
17
23
#[ lang = "sized" ]
18
- pub trait Sized { }
24
+ pub trait Sized : MetaSized { }
19
25
20
26
#[ lang = "destruct" ]
21
27
pub trait Destruct { }
@@ -24,35 +30,35 @@ pub trait Destruct {}
24
30
pub trait Tuple { }
25
31
26
32
#[ lang = "unsize" ]
27
- pub trait Unsize < T : ? Sized > { }
33
+ pub trait Unsize < T : PointeeSized > : PointeeSized { }
28
34
29
35
#[ lang = "coerce_unsized" ]
30
36
pub trait CoerceUnsized < T > { }
31
37
32
- impl < ' a , ' b : ' a , T : ? Sized + Unsize < U > , U : ? Sized > CoerceUnsized < & ' a U > for & ' b T { }
33
- impl < ' a , T : ? Sized + Unsize < U > , U : ? Sized > CoerceUnsized < & ' a mut U > for & ' a mut T { }
34
- impl < T : ? Sized + Unsize < U > , U : ? Sized > CoerceUnsized < * const U > for * const T { }
35
- impl < T : ? Sized + Unsize < U > , U : ? Sized > CoerceUnsized < * mut U > for * mut T { }
38
+ impl < ' a , ' b : ' a , T : PointeeSized + Unsize < U > , U : PointeeSized > CoerceUnsized < & ' a U > for & ' b T { }
39
+ impl < ' a , T : PointeeSized + Unsize < U > , U : PointeeSized > CoerceUnsized < & ' a mut U > for & ' a mut T { }
40
+ impl < T : PointeeSized + Unsize < U > , U : PointeeSized > CoerceUnsized < * const U > for * const T { }
41
+ impl < T : PointeeSized + Unsize < U > , U : PointeeSized > CoerceUnsized < * mut U > for * mut T { }
36
42
37
43
#[ lang = "dispatch_from_dyn" ]
38
44
pub trait DispatchFromDyn < T > { }
39
45
40
46
// &T -> &U
41
- impl < ' a , T : ? Sized + Unsize < U > , U : ? Sized > DispatchFromDyn < & ' a U > for & ' a T { }
47
+ impl < ' a , T : PointeeSized + Unsize < U > , U : PointeeSized > DispatchFromDyn < & ' a U > for & ' a T { }
42
48
// &mut T -> &mut U
43
- impl < ' a , T : ? Sized + Unsize < U > , U : ? Sized > DispatchFromDyn < & ' a mut U > for & ' a mut T { }
49
+ impl < ' a , T : PointeeSized + Unsize < U > , U : PointeeSized > DispatchFromDyn < & ' a mut U > for & ' a mut T { }
44
50
// *const T -> *const U
45
- impl < T : ? Sized + Unsize < U > , U : ? Sized > DispatchFromDyn < * const U > for * const T { }
51
+ impl < T : PointeeSized + Unsize < U > , U : PointeeSized > DispatchFromDyn < * const U > for * const T { }
46
52
// *mut T -> *mut U
47
- impl < T : ? Sized + Unsize < U > , U : ? Sized > DispatchFromDyn < * mut U > for * mut T { }
48
- impl < T : ? Sized + Unsize < U > , U : ? Sized > DispatchFromDyn < Box < U > > for Box < T > { }
53
+ impl < T : PointeeSized + Unsize < U > , U : PointeeSized > DispatchFromDyn < * mut U > for * mut T { }
54
+ impl < T : MetaSized + Unsize < U > , U : MetaSized > DispatchFromDyn < Box < U > > for Box < T > { }
49
55
50
56
#[ lang = "legacy_receiver" ]
51
57
pub trait LegacyReceiver { }
52
58
53
- impl < T : ? Sized > LegacyReceiver for & T { }
54
- impl < T : ? Sized > LegacyReceiver for & mut T { }
55
- impl < T : ? Sized > LegacyReceiver for Box < T > { }
59
+ impl < T : PointeeSized > LegacyReceiver for & T { }
60
+ impl < T : PointeeSized > LegacyReceiver for & mut T { }
61
+ impl < T : MetaSized > LegacyReceiver for Box < T > { }
56
62
57
63
#[ lang = "copy" ]
58
64
pub trait Copy { }
@@ -74,9 +80,9 @@ impl Copy for isize {}
74
80
impl Copy for f32 { }
75
81
impl Copy for f64 { }
76
82
impl Copy for char { }
77
- impl < ' a , T : ? Sized > Copy for & ' a T { }
78
- impl < T : ? Sized > Copy for * const T { }
79
- impl < T : ? Sized > Copy for * mut T { }
83
+ impl < ' a , T : PointeeSized > Copy for & ' a T { }
84
+ impl < T : PointeeSized > Copy for * const T { }
85
+ impl < T : PointeeSized > Copy for * mut T { }
80
86
impl < T : Copy > Copy for Option < T > { }
81
87
82
88
#[ lang = "sync" ]
@@ -94,17 +100,17 @@ unsafe impl Sync for i32 {}
94
100
unsafe impl Sync for isize { }
95
101
unsafe impl Sync for char { }
96
102
unsafe impl Sync for f32 { }
97
- unsafe impl < ' a , T : ? Sized > Sync for & ' a T { }
103
+ unsafe impl < ' a , T : PointeeSized > Sync for & ' a T { }
98
104
unsafe impl < T : Sync , const N : usize > Sync for [ T ; N ] { }
99
105
100
106
#[ lang = "freeze" ]
101
107
unsafe auto trait Freeze { }
102
108
103
- unsafe impl < T : ? Sized > Freeze for PhantomData < T > { }
104
- unsafe impl < T : ? Sized > Freeze for * const T { }
105
- unsafe impl < T : ? Sized > Freeze for * mut T { }
106
- unsafe impl < T : ? Sized > Freeze for & T { }
107
- unsafe impl < T : ? Sized > Freeze for & mut T { }
109
+ unsafe impl < T : PointeeSized > Freeze for PhantomData < T > { }
110
+ unsafe impl < T : PointeeSized > Freeze for * const T { }
111
+ unsafe impl < T : PointeeSized > Freeze for * mut T { }
112
+ unsafe impl < T : PointeeSized > Freeze for & T { }
113
+ unsafe impl < T : PointeeSized > Freeze for & mut T { }
108
114
109
115
#[ lang = "structural_peq" ]
110
116
pub trait StructuralPartialEq { }
@@ -443,7 +449,7 @@ pub enum Option<T> {
443
449
pub use Option :: * ;
444
450
445
451
#[ lang = "phantom_data" ]
446
- pub struct PhantomData < T : ? Sized > ;
452
+ pub struct PhantomData < T : PointeeSized > ;
447
453
448
454
#[ lang = "fn_once" ]
449
455
#[ rustc_paren_sugar]
@@ -564,18 +570,18 @@ pub trait Deref {
564
570
#[ repr( transparent) ]
565
571
#[ rustc_layout_scalar_valid_range_start( 1 ) ]
566
572
#[ rustc_nonnull_optimization_guaranteed]
567
- pub struct NonNull < T : ? Sized > ( pub * const T ) ;
573
+ pub struct NonNull < T : PointeeSized > ( pub * const T ) ;
568
574
569
- impl < T : ? Sized , U : ? Sized > CoerceUnsized < NonNull < U > > for NonNull < T > where T : Unsize < U > { }
570
- impl < T : ? Sized , U : ? Sized > DispatchFromDyn < NonNull < U > > for NonNull < T > where T : Unsize < U > { }
575
+ impl < T : PointeeSized , U : PointeeSized > CoerceUnsized < NonNull < U > > for NonNull < T > where T : Unsize < U > { }
576
+ impl < T : PointeeSized , U : PointeeSized > DispatchFromDyn < NonNull < U > > for NonNull < T > where T : Unsize < U > { }
571
577
572
- pub struct Unique < T : ? Sized > {
578
+ pub struct Unique < T : PointeeSized > {
573
579
pub pointer : NonNull < T > ,
574
580
pub _marker : PhantomData < T > ,
575
581
}
576
582
577
- impl < T : ? Sized , U : ? Sized > CoerceUnsized < Unique < U > > for Unique < T > where T : Unsize < U > { }
578
- impl < T : ? Sized , U : ? Sized > DispatchFromDyn < Unique < U > > for Unique < T > where T : Unsize < U > { }
583
+ impl < T : PointeeSized , U : PointeeSized > CoerceUnsized < Unique < U > > for Unique < T > where T : Unsize < U > { }
584
+ impl < T : PointeeSized , U : PointeeSized > DispatchFromDyn < Unique < U > > for Unique < T > where T : Unsize < U > { }
579
585
580
586
#[ lang = "global_alloc_ty" ]
581
587
pub struct Global ;
0 commit comments