@@ -51,6 +51,10 @@ impl<T: ?Sized> LegacyReceiver for &T {}
51
51
impl < T : ?Sized > LegacyReceiver for & mut T { }
52
52
impl < T : ?Sized , A : Allocator > LegacyReceiver for Box < T , A > { }
53
53
54
+ #[ lang = "receiver" ]
55
+ trait Receiver {
56
+ }
57
+
54
58
#[ lang = "copy" ]
55
59
pub trait Copy { }
56
60
@@ -139,6 +143,14 @@ impl Mul for usize {
139
143
}
140
144
}
141
145
146
+ impl Mul for isize {
147
+ type Output = Self ;
148
+
149
+ fn mul ( self , rhs : Self ) -> Self :: Output {
150
+ self * rhs
151
+ }
152
+ }
153
+
142
154
#[ lang = "add" ]
143
155
pub trait Add < RHS = Self > {
144
156
type Output ;
@@ -162,6 +174,14 @@ impl Add for i8 {
162
174
}
163
175
}
164
176
177
+ impl Add for i32 {
178
+ type Output = Self ;
179
+
180
+ fn add ( self , rhs : Self ) -> Self {
181
+ self + rhs
182
+ }
183
+ }
184
+
165
185
impl Add for usize {
166
186
type Output = Self ;
167
187
@@ -193,6 +213,14 @@ impl Sub for usize {
193
213
}
194
214
}
195
215
216
+ impl Sub for isize {
217
+ type Output = Self ;
218
+
219
+ fn sub ( self , rhs : Self ) -> Self {
220
+ self - rhs
221
+ }
222
+ }
223
+
196
224
impl Sub for u8 {
197
225
type Output = Self ;
198
226
@@ -588,70 +616,43 @@ pub union MaybeUninit<T> {
588
616
589
617
pub mod intrinsics {
590
618
#[ rustc_intrinsic]
591
- #[ rustc_intrinsic_must_be_overridden]
592
- pub fn abort ( ) -> ! {
593
- loop { }
594
- }
619
+ pub fn abort ( ) -> !;
620
+
595
621
#[ rustc_intrinsic]
596
- #[ rustc_intrinsic_must_be_overridden]
597
- pub fn size_of < T > ( ) -> usize {
598
- loop { }
599
- }
622
+ pub fn size_of < T > ( ) -> usize ;
623
+
600
624
#[ rustc_intrinsic]
601
- #[ rustc_intrinsic_must_be_overridden]
602
- pub unsafe fn size_of_val < T : ?:: Sized > ( _val : * const T ) -> usize {
603
- loop { }
604
- }
625
+ pub unsafe fn size_of_val < T : ?:: Sized > ( _val : * const T ) -> usize ;
626
+
605
627
#[ rustc_intrinsic]
606
- #[ rustc_intrinsic_must_be_overridden]
607
- pub fn min_align_of < T > ( ) -> usize {
608
- loop { }
609
- }
628
+ pub fn min_align_of < T > ( ) -> usize ;
629
+
610
630
#[ rustc_intrinsic]
611
- #[ rustc_intrinsic_must_be_overridden]
612
- pub unsafe fn min_align_of_val < T : ?:: Sized > ( _val : * const T ) -> usize {
613
- loop { }
614
- }
631
+ pub unsafe fn min_align_of_val < T : ?:: Sized > ( _val : * const T ) -> usize ;
632
+
615
633
#[ rustc_intrinsic]
616
- #[ rustc_intrinsic_must_be_overridden]
617
- pub unsafe fn copy < T > ( _src : * const T , _dst : * mut T , _count : usize ) {
618
- loop { }
619
- }
634
+ pub unsafe fn copy < T > ( _src : * const T , _dst : * mut T , _count : usize ) ;
635
+
620
636
#[ rustc_intrinsic]
621
- #[ rustc_intrinsic_must_be_overridden]
622
- pub unsafe fn transmute < T , U > ( _e : T ) -> U {
623
- loop { }
624
- }
637
+ pub unsafe fn transmute < T , U > ( _e : T ) -> U ;
638
+
625
639
#[ rustc_intrinsic]
626
- #[ rustc_intrinsic_must_be_overridden]
627
- pub unsafe fn ctlz_nonzero < T > ( _x : T ) -> u32 {
628
- loop { }
629
- }
640
+ pub unsafe fn ctlz_nonzero < T > ( _x : T ) -> u32 ;
641
+
630
642
#[ rustc_intrinsic]
631
- #[ rustc_intrinsic_must_be_overridden]
632
- pub fn needs_drop < T : ?:: Sized > ( ) -> bool {
633
- loop { }
634
- }
643
+ pub fn needs_drop < T : ?:: Sized > ( ) -> bool ;
644
+
635
645
#[ rustc_intrinsic]
636
- #[ rustc_intrinsic_must_be_overridden]
637
- pub fn bitreverse < T > ( _x : T ) -> T {
638
- loop { }
639
- }
646
+ pub fn bitreverse < T > ( _x : T ) -> T ;
647
+
640
648
#[ rustc_intrinsic]
641
- #[ rustc_intrinsic_must_be_overridden]
642
- pub fn bswap < T > ( _x : T ) -> T {
643
- loop { }
644
- }
649
+ pub fn bswap < T > ( _x : T ) -> T ;
650
+
645
651
#[ rustc_intrinsic]
646
- #[ rustc_intrinsic_must_be_overridden]
647
- pub unsafe fn write_bytes < T > ( _dst : * mut T , _val : u8 , _count : usize ) {
648
- loop { }
649
- }
652
+ pub unsafe fn write_bytes < T > ( _dst : * mut T , _val : u8 , _count : usize ) ;
653
+
650
654
#[ rustc_intrinsic]
651
- #[ rustc_intrinsic_must_be_overridden]
652
- pub unsafe fn unreachable ( ) -> ! {
653
- loop { }
654
- }
655
+ pub unsafe fn unreachable ( ) -> !;
655
656
}
656
657
657
658
pub mod libc {
@@ -664,6 +665,10 @@ pub mod libc {
664
665
pub fn memcpy ( dst : * mut u8 , src : * const u8 , size : usize ) ;
665
666
pub fn memmove ( dst : * mut u8 , src : * const u8 , size : usize ) ;
666
667
pub fn strncpy ( dst : * mut u8 , src : * const u8 , size : usize ) ;
668
+ pub fn fflush ( stream : * mut i32 ) -> i32 ;
669
+ pub fn exit ( status : i32 ) ;
670
+
671
+ pub static stdout: * mut i32 ;
667
672
}
668
673
}
669
674
0 commit comments