11macro_rules! impl_traits {
2- { $type: ident, $scalar : ty } => {
2+ { $type: ident } => {
33 impl <const LANES : usize > core:: iter:: Sum <Self > for crate :: $type<LANES >
44 where
55 Self : crate :: LanesAtMost32 ,
@@ -18,24 +18,6 @@ macro_rules! impl_traits {
1818 }
1919 }
2020
21- impl <const LANES : usize > core:: iter:: Sum <crate :: $type<LANES >> for $scalar
22- where
23- crate :: $type<LANES >: crate :: LanesAtMost32 ,
24- {
25- fn sum<I : core:: iter:: Iterator <Item = crate :: $type<LANES >>>( iter: I ) -> Self {
26- iter. sum:: <crate :: $type<LANES >>( ) . horizontal_sum( )
27- }
28- }
29-
30- impl <const LANES : usize > core:: iter:: Product <crate :: $type<LANES >> for $scalar
31- where
32- crate :: $type<LANES >: crate :: LanesAtMost32 ,
33- {
34- fn product<I : core:: iter:: Iterator <Item = crate :: $type<LANES >>>( iter: I ) -> Self {
35- iter. product:: <crate :: $type<LANES >>( ) . horizontal_product( )
36- }
37- }
38-
3921 impl <' a, const LANES : usize > core:: iter:: Sum <& ' a Self > for crate :: $type<LANES >
4022 where
4123 Self : crate :: LanesAtMost32 ,
@@ -53,36 +35,18 @@ macro_rules! impl_traits {
5335 iter. fold( Default :: default ( ) , core:: ops:: Mul :: mul)
5436 }
5537 }
56-
57- impl <' a, const LANES : usize > core:: iter:: Sum <& ' a crate :: $type<LANES >> for $scalar
58- where
59- crate :: $type<LANES >: crate :: LanesAtMost32 ,
60- {
61- fn sum<I : core:: iter:: Iterator <Item = & ' a crate :: $type<LANES >>>( iter: I ) -> Self {
62- iter. sum:: <crate :: $type<LANES >>( ) . horizontal_sum( )
63- }
64- }
65-
66- impl <' a, const LANES : usize > core:: iter:: Product <& ' a crate :: $type<LANES >> for $scalar
67- where
68- crate :: $type<LANES >: crate :: LanesAtMost32 ,
69- {
70- fn product<I : core:: iter:: Iterator <Item = & ' a crate :: $type<LANES >>>( iter: I ) -> Self {
71- iter. product:: <crate :: $type<LANES >>( ) . horizontal_product( )
72- }
73- }
7438 }
7539}
7640
77- impl_traits ! { SimdF32 , f32 }
78- impl_traits ! { SimdF64 , f64 }
79- impl_traits ! { SimdU8 , u8 }
80- impl_traits ! { SimdU16 , u16 }
81- impl_traits ! { SimdU32 , u32 }
82- impl_traits ! { SimdU64 , u64 }
83- impl_traits ! { SimdUsize , usize }
84- impl_traits ! { SimdI8 , i8 }
85- impl_traits ! { SimdI16 , i16 }
86- impl_traits ! { SimdI32 , i32 }
87- impl_traits ! { SimdI64 , i64 }
88- impl_traits ! { SimdIsize , isize }
41+ impl_traits ! { SimdF32 }
42+ impl_traits ! { SimdF64 }
43+ impl_traits ! { SimdU8 }
44+ impl_traits ! { SimdU16 }
45+ impl_traits ! { SimdU32 }
46+ impl_traits ! { SimdU64 }
47+ impl_traits ! { SimdUsize }
48+ impl_traits ! { SimdI8 }
49+ impl_traits ! { SimdI16 }
50+ impl_traits ! { SimdI32 }
51+ impl_traits ! { SimdI64 }
52+ impl_traits ! { SimdIsize }
0 commit comments