File tree Expand file tree Collapse file tree 1 file changed +13
-9
lines changed Expand file tree Collapse file tree 1 file changed +13
-9
lines changed Original file line number Diff line number Diff line change @@ -361,7 +361,9 @@ impl<T> Neg for Ratio<T>
361
361
type Output = Ratio < T > ;
362
362
363
363
#[ inline]
364
- fn neg ( self ) -> Ratio < T > { -& self }
364
+ fn neg ( self ) -> Ratio < T > {
365
+ Ratio :: new_raw ( -self . numer , self . denom )
366
+ }
365
367
}
366
368
367
369
impl < ' a , T > Neg for & ' a Ratio < T >
@@ -371,7 +373,7 @@ impl<'a, T> Neg for &'a Ratio<T>
371
373
372
374
#[ inline]
373
375
fn neg ( self ) -> Ratio < T > {
374
- Ratio :: new_raw ( -self . numer . clone ( ) , self . denom . clone ( ) )
376
+ -self . clone ( )
375
377
}
376
378
}
377
379
@@ -385,7 +387,7 @@ impl<T: Clone + Integer>
385
387
386
388
#[ inline]
387
389
fn is_zero ( & self ) -> bool {
388
- * self == Zero :: zero ( )
390
+ self . numer . is_zero ( )
389
391
}
390
392
}
391
393
@@ -436,20 +438,22 @@ impl<T: Clone + Integer + Signed> Signed for Ratio<T> {
436
438
437
439
#[ inline]
438
440
fn signum ( & self ) -> Ratio < T > {
439
- if * self > Zero :: zero ( ) {
440
- One :: one ( )
441
+ if self . is_positive ( ) {
442
+ Self :: one ( )
441
443
} else if self . is_zero ( ) {
442
- Zero :: zero ( )
444
+ Self :: zero ( )
443
445
} else {
444
- - :: one :: < Ratio < T > > ( )
446
+ - Self :: one ( )
445
447
}
446
448
}
447
449
448
450
#[ inline]
449
- fn is_positive ( & self ) -> bool { * self > Zero :: zero ( ) }
451
+ fn is_positive ( & self ) -> bool { ! self . is_negative ( ) }
450
452
451
453
#[ inline]
452
- fn is_negative ( & self ) -> bool { * self < Zero :: zero ( ) }
454
+ fn is_negative ( & self ) -> bool {
455
+ self . numer . is_negative ( ) ^ self . denom . is_negative ( )
456
+ }
453
457
}
454
458
455
459
/* String conversions */
You can’t perform that action at this time.
0 commit comments