@@ -71,7 +71,6 @@ pub trait Euclid: Sized + Div<Self, Output = Self> + Rem<Self, Output = Self> {
71
71
72
72
macro_rules! euclid_forward_impl {
73
73
( $( $t: ty) * ) => { $(
74
- #[ cfg( has_div_euclid) ]
75
74
impl Euclid for $t {
76
75
#[ inline]
77
76
fn div_euclid( & self , v: & $t) -> Self {
@@ -86,64 +85,13 @@ macro_rules! euclid_forward_impl {
86
85
) * }
87
86
}
88
87
89
- macro_rules! euclid_int_impl {
90
- ( $( $t: ty) * ) => { $(
91
- euclid_forward_impl!( $t) ;
92
-
93
- #[ cfg( not( has_div_euclid) ) ]
94
- impl Euclid for $t {
95
- #[ inline]
96
- fn div_euclid( & self , v: & $t) -> Self {
97
- let q = self / v;
98
- if self % v < 0 {
99
- return if * v > 0 { q - 1 } else { q + 1 }
100
- }
101
- q
102
- }
103
-
104
- #[ inline]
105
- fn rem_euclid( & self , v: & $t) -> Self {
106
- let r = self % v;
107
- if r < 0 {
108
- if * v < 0 {
109
- r - v
110
- } else {
111
- r + v
112
- }
113
- } else {
114
- r
115
- }
116
- }
117
- }
118
- ) * }
119
- }
88
+ euclid_forward_impl ! ( isize i8 i16 i32 i64 i128 ) ;
89
+ euclid_forward_impl ! ( usize u8 u16 u32 u64 u128 ) ;
120
90
121
- macro_rules! euclid_uint_impl {
122
- ( $( $t: ty) * ) => { $(
123
- euclid_forward_impl!( $t) ;
124
-
125
- #[ cfg( not( has_div_euclid) ) ]
126
- impl Euclid for $t {
127
- #[ inline]
128
- fn div_euclid( & self , v: & $t) -> Self {
129
- self / v
130
- }
131
-
132
- #[ inline]
133
- fn rem_euclid( & self , v: & $t) -> Self {
134
- self % v
135
- }
136
- }
137
- ) * }
138
- }
139
-
140
- euclid_int_impl ! ( isize i8 i16 i32 i64 i128 ) ;
141
- euclid_uint_impl ! ( usize u8 u16 u32 u64 u128 ) ;
142
-
143
- #[ cfg( all( has_div_euclid, feature = "std" ) ) ]
91
+ #[ cfg( feature = "std" ) ]
144
92
euclid_forward_impl ! ( f32 f64 ) ;
145
93
146
- #[ cfg( not( all ( has_div_euclid , feature = "std" ) ) ) ]
94
+ #[ cfg( not( feature = "std" ) ) ]
147
95
impl Euclid for f32 {
148
96
#[ inline]
149
97
fn div_euclid ( & self , v : & f32 ) -> f32 {
@@ -165,7 +113,7 @@ impl Euclid for f32 {
165
113
}
166
114
}
167
115
168
- #[ cfg( not( all ( has_div_euclid , feature = "std" ) ) ) ]
116
+ #[ cfg( not( feature = "std" ) ) ]
169
117
impl Euclid for f64 {
170
118
#[ inline]
171
119
fn div_euclid ( & self , v : & f64 ) -> f64 {
@@ -219,7 +167,6 @@ pub trait CheckedEuclid: Euclid {
219
167
220
168
macro_rules! checked_euclid_forward_impl {
221
169
( $( $t: ty) * ) => { $(
222
- #[ cfg( has_div_euclid) ]
223
170
impl CheckedEuclid for $t {
224
171
#[ inline]
225
172
fn checked_div_euclid( & self , v: & $t) -> Option <Self > {
@@ -234,62 +181,8 @@ macro_rules! checked_euclid_forward_impl {
234
181
) * }
235
182
}
236
183
237
- macro_rules! checked_euclid_int_impl {
238
- ( $( $t: ty) * ) => { $(
239
- checked_euclid_forward_impl!( $t) ;
240
-
241
- #[ cfg( not( has_div_euclid) ) ]
242
- impl CheckedEuclid for $t {
243
- #[ inline]
244
- fn checked_div_euclid( & self , v: & $t) -> Option <$t> {
245
- if * v == 0 || ( * self == Self :: min_value( ) && * v == -1 ) {
246
- None
247
- } else {
248
- Some ( Euclid :: div_euclid( self , v) )
249
- }
250
- }
251
-
252
- #[ inline]
253
- fn checked_rem_euclid( & self , v: & $t) -> Option <$t> {
254
- if * v == 0 || ( * self == Self :: min_value( ) && * v == -1 ) {
255
- None
256
- } else {
257
- Some ( Euclid :: rem_euclid( self , v) )
258
- }
259
- }
260
- }
261
- ) * }
262
- }
263
-
264
- macro_rules! checked_euclid_uint_impl {
265
- ( $( $t: ty) * ) => { $(
266
- checked_euclid_forward_impl!( $t) ;
267
-
268
- #[ cfg( not( has_div_euclid) ) ]
269
- impl CheckedEuclid for $t {
270
- #[ inline]
271
- fn checked_div_euclid( & self , v: & $t) -> Option <$t> {
272
- if * v == 0 {
273
- None
274
- } else {
275
- Some ( Euclid :: div_euclid( self , v) )
276
- }
277
- }
278
-
279
- #[ inline]
280
- fn checked_rem_euclid( & self , v: & $t) -> Option <$t> {
281
- if * v == 0 {
282
- None
283
- } else {
284
- Some ( Euclid :: rem_euclid( self , v) )
285
- }
286
- }
287
- }
288
- ) * }
289
- }
290
-
291
- checked_euclid_int_impl ! ( isize i8 i16 i32 i64 i128 ) ;
292
- checked_euclid_uint_impl ! ( usize u8 u16 u32 u64 u128 ) ;
184
+ checked_euclid_forward_impl ! ( isize i8 i16 i32 i64 i128 ) ;
185
+ checked_euclid_forward_impl ! ( usize u8 u16 u32 u64 u128 ) ;
293
186
294
187
#[ cfg( test) ]
295
188
mod tests {
0 commit comments