Skip to content

Commit 2f8df56

Browse files
atomicky9prady9
authored andcommitted
Change trivial implementation of ImplicitPromote
Avoiding macro provides better usability for library users.
1 parent 967ffe3 commit 2f8df56

File tree

1 file changed

+7
-12
lines changed

1 file changed

+7
-12
lines changed

Diff for: src/core/util.rs

+7-12
Original file line numberDiff line numberDiff line change
@@ -430,6 +430,13 @@ pub trait ImplicitPromote<RHS> {
430430
type Output: HasAfEnum;
431431
}
432432

433+
impl<T> ImplicitPromote<T> for T
434+
where
435+
T: HasAfEnum,
436+
{
437+
type Output = T;
438+
}
439+
433440
macro_rules! implicit {
434441
[$implType: ident, $rhsType: ident => $outType: ident] => (
435442
impl ImplicitPromote< $rhsType > for $implType {
@@ -443,7 +450,6 @@ macro_rules! implicit {
443450
//
444451

445452
//LHS is Complex double
446-
implicit!(c64, c64 => c64);
447453
implicit!(c64, c32 => c64);
448454
implicit!(c64, f64 => c64);
449455
implicit!(c64, f32 => c64);
@@ -458,7 +464,6 @@ implicit!(c64, u8 => c64);
458464

459465
//LHS is Complex float
460466
implicit!(c32, c64 => c64);
461-
implicit!(c32, c32 => c32);
462467
implicit!(c32, f64 => c64);
463468
implicit!(c32, f32 => c32);
464469
implicit!(c32, i64 => c32);
@@ -473,7 +478,6 @@ implicit!(c32, u8 => c32);
473478
//LHS is 64-bit floating point
474479
implicit!(f64, c64 => c64);
475480
implicit!(f64, c32 => c64);
476-
implicit!(f64, f64 => f64);
477481
implicit!(f64, f32 => f64);
478482
implicit!(f64, i64 => f64);
479483
implicit!(f64, u64 => f64);
@@ -488,7 +492,6 @@ implicit!(f64, u8 => f64);
488492
implicit!(f32, c64 => c64);
489493
implicit!(f32, c32 => c32);
490494
implicit!(f32, f64 => f64);
491-
implicit!(f32, f32 => f32);
492495
implicit!(f32, i64 => f32);
493496
implicit!(f32, u64 => f32);
494497
implicit!(f32, i32 => f32);
@@ -503,7 +506,6 @@ implicit!(i64, c64 => c64);
503506
implicit!(i64, c32 => c32);
504507
implicit!(i64, f64 => f64);
505508
implicit!(i64, f32 => f32);
506-
implicit!(i64, i64 => i64);
507509
implicit!(i64, u64 => u64);
508510
implicit!(i64, i32 => i64);
509511
implicit!(i64, u32 => i64);
@@ -518,7 +520,6 @@ implicit!(u64, c32 => c32);
518520
implicit!(u64, f64 => f64);
519521
implicit!(u64, f32 => f32);
520522
implicit!(u64, i64 => u64);
521-
implicit!(u64, u64 => u64);
522523
implicit!(u64, i32 => u64);
523524
implicit!(u64, u32 => u64);
524525
implicit!(u64, i16 => u64);
@@ -533,7 +534,6 @@ implicit!(i32, f64 => f64);
533534
implicit!(i32, f32 => f32);
534535
implicit!(i32, i64 => i64);
535536
implicit!(i32, u64 => u64);
536-
implicit!(i32, i32 => i32);
537537
implicit!(i32, u32 => u32);
538538
implicit!(i32, i16 => i32);
539539
implicit!(i32, u16 => i32);
@@ -548,7 +548,6 @@ implicit!(u32, f32 => f32);
548548
implicit!(u32, i64 => i64);
549549
implicit!(u32, u64 => u64);
550550
implicit!(u32, i32 => u32);
551-
implicit!(u32, u32 => u32);
552551
implicit!(u32, i16 => u32);
553552
implicit!(u32, u16 => u32);
554553
implicit!(u32, bool => u32);
@@ -563,7 +562,6 @@ implicit!(i16, i64 => i64);
563562
implicit!(i16, u64 => u64);
564563
implicit!(i16, i32 => i32);
565564
implicit!(i16, u32 => u32);
566-
implicit!(i16, i16 => i16);
567565
implicit!(i16, u16 => u16);
568566
implicit!(i16, bool => u16);
569567
implicit!(i16, u8 => u16);
@@ -578,7 +576,6 @@ implicit!(u16, u64 => u64);
578576
implicit!(u16, i32 => i32);
579577
implicit!(u16, u32 => u32);
580578
implicit!(u16, i16 => u16);
581-
implicit!(u16, u16 => u16);
582579
implicit!(u16, bool => u16);
583580
implicit!(u16, u8 => u16);
584581

@@ -594,7 +591,6 @@ implicit!(u8, u32 => u32);
594591
implicit!(u8, i16 => i16);
595592
implicit!(u8, u16 => u16);
596593
implicit!(u8, bool => u8);
597-
implicit!(u8, u8 => u8);
598594

599595
//LHS is bool(af::s8)
600596
implicit!(bool, c64 => c64);
@@ -607,7 +603,6 @@ implicit!(bool, i32 => i32);
607603
implicit!(bool, u32 => u32);
608604
implicit!(bool, i16 => i16);
609605
implicit!(bool, u16 => u16);
610-
implicit!(bool, bool => bool);
611606
implicit!(bool, u8 => u8);
612607

613608
///Trait qualifier to accept either real or complex typed data

0 commit comments

Comments
 (0)