@@ -277,6 +277,99 @@ macro_rules! impl_mul_to_wrapper {
277
277
}
278
278
pub ( crate ) use impl_mul_to_wrapper;
279
279
280
+ macro_rules! impl_div_to_wrapper {
281
+ ( $wrapper: ident, $inner: ty ) => {
282
+ use std:: ops:: { Div , DivAssign } ;
283
+
284
+ impl Div for $wrapper {
285
+ type Output = Self ;
286
+
287
+ fn div( self , rhs: Self ) -> Self :: Output {
288
+ self / * rhs
289
+ }
290
+ }
291
+
292
+ impl Div <$inner> for $wrapper {
293
+ type Output = Self ;
294
+
295
+ fn div( self , rhs: $inner) -> Self :: Output {
296
+ $wrapper( * self / rhs)
297
+ }
298
+ }
299
+
300
+ impl Div <& $inner> for $wrapper {
301
+ type Output = Self ;
302
+
303
+ fn div( self , rhs: & $inner) -> Self :: Output {
304
+ self . div( * rhs)
305
+ }
306
+ }
307
+
308
+ impl Div <$wrapper> for $inner {
309
+ type Output = $wrapper;
310
+
311
+ fn div( self , rhs: $wrapper) -> Self :: Output {
312
+ $wrapper( self . div( rhs. 0 ) )
313
+ }
314
+ }
315
+
316
+ impl Div <& $wrapper> for $inner {
317
+ type Output = $wrapper;
318
+
319
+ fn div( self , rhs: & $wrapper) -> Self :: Output {
320
+ self . div( * rhs)
321
+ }
322
+ }
323
+
324
+ impl Div <$wrapper> for & $inner {
325
+ type Output = $wrapper;
326
+
327
+ fn div( self , rhs: $wrapper) -> Self :: Output {
328
+ ( * self ) . div( rhs)
329
+ }
330
+ }
331
+
332
+ impl Div <& $wrapper> for & $inner {
333
+ type Output = $wrapper;
334
+
335
+ fn div( self , rhs: & $wrapper) -> Self :: Output {
336
+ ( * self ) . div( * rhs)
337
+ }
338
+ }
339
+
340
+ impl DivAssign for $wrapper {
341
+ fn div_assign( & mut self , rhs: Self ) {
342
+ * self = self . div( rhs) ;
343
+ }
344
+ }
345
+
346
+ impl DivAssign <$inner> for $wrapper {
347
+ fn div_assign( & mut self , rhs: $inner) {
348
+ * self = self . div( rhs) ;
349
+ }
350
+ }
351
+
352
+ impl DivAssign <& $inner> for $wrapper {
353
+ fn div_assign( & mut self , rhs: & $inner) {
354
+ * self = self . div( rhs) ;
355
+ }
356
+ }
357
+
358
+ impl DivAssign <$wrapper> for $inner {
359
+ fn div_assign( & mut self , rhs: $wrapper) {
360
+ * self = self . div( rhs. 0 ) ;
361
+ }
362
+ }
363
+
364
+ impl DivAssign <& $wrapper> for $inner {
365
+ fn div_assign( & mut self , rhs: & $wrapper) {
366
+ * self = self . div( rhs. 0 ) ;
367
+ }
368
+ }
369
+ } ;
370
+ }
371
+ pub ( crate ) use impl_div_to_wrapper;
372
+
280
373
macro_rules! impl_partial_eq_to_wrapper {
281
374
( $wrapper: ty, $inner: ty ) => {
282
375
impl PartialEq <$inner> for $wrapper {
@@ -348,6 +441,11 @@ pub(crate) mod tests {
348
441
number *= $left;
349
442
assert_eq!( $expected, number) ;
350
443
} } ;
444
+ ( $right: expr, /=, $left: expr => $expected: expr ) => { {
445
+ let mut number = $right;
446
+ number /= $left;
447
+ assert_eq!( $expected, number) ;
448
+ } } ;
351
449
}
352
450
pub ( crate ) use test_op_assign;
353
451
}
0 commit comments