@@ -67,26 +67,43 @@ pub enum Schedule<N: crate::Nif, T, A = (), B = (), C = (), D = (), E = (), F =
67
67
Next7 ( PhantomData < N > , A , B , C , D , E , F , G ) ,
68
68
}
69
69
70
- macro_rules! impl_func {
70
+ macro_rules! impl_funcs {
71
71
( $variant: ident $func_name: ident( $( $arg: ident : $ty: ty, ) * ) ) => {
72
- /// Shorthand for creating a [`Schedule`] variant.
73
- ///
74
- /// [`Schedule`]: crate::schedule::Schedule
75
- pub fn $func_name( $( $arg: $ty) ,* ) -> Self {
76
- Self :: $variant( PhantomData , $( $arg) ,* )
72
+ impl <N : crate :: Nif , T , A , B , C , D , E , F , G > Schedule <N , T , A , B , C , D , E , F , G > {
73
+ #[ inline]
74
+ pub fn $func_name( $( $arg: $ty) ,* ) -> Self {
75
+ Self :: $variant( PhantomData , $( $arg) ,* )
76
+ }
77
+ }
78
+
79
+ impl <N : crate :: Nif , T , A , B , C , D , E , F , G > From <( $( $ty) ,* ) > for Schedule <N , T , A , B , C , D , E , F , G > {
80
+ #[ inline]
81
+ fn from( ( $( $arg) ,* ) : ( $( $ty) ,* ) ) -> Self {
82
+ Self :: $variant( PhantomData , $( $arg) ,* )
83
+ }
77
84
}
78
85
} ;
79
86
}
80
87
81
88
impl < N : crate :: Nif , T , A , B , C , D , E , F , G > Schedule < N , T , A , B , C , D , E , F , G > {
82
- impl_func ! { Next next( a: A , ) }
83
- impl_func ! { Next2 next2( a: A , b: B , ) }
84
- impl_func ! { Next3 next3( a: A , b: B , c: C , ) }
85
- impl_func ! { Next4 next4( a: A , b: B , c: C , d: D , ) }
86
- impl_func ! { Next5 next5( a: A , b: B , c: C , d: D , e: E , ) }
87
- impl_func ! { Next6 next6( a: A , b: B , c: C , d: D , e: E , f: F , ) }
88
- impl_func ! { Next7 next7( a: A , b: B , c: C , d: D , e: E , f: F , g: G , ) }
89
+ #[ inline]
90
+ pub fn next ( a : A ) -> Self {
91
+ Self :: from ( a)
92
+ }
93
+ }
94
+
95
+ impl < N : crate :: Nif , T , A , B , C , D , E , F , G > From < A > for Schedule < N , T , A , B , C , D , E , F , G > {
96
+ #[ inline]
97
+ fn from ( a : A ) -> Self {
98
+ Self :: Next ( PhantomData , a)
99
+ }
89
100
}
101
+ impl_funcs ! { Next2 next2( a: A , b: B , ) }
102
+ impl_funcs ! { Next3 next3( a: A , b: B , c: C , ) }
103
+ impl_funcs ! { Next4 next4( a: A , b: B , c: C , d: D , ) }
104
+ impl_funcs ! { Next5 next5( a: A , b: B , c: C , d: D , e: E , ) }
105
+ impl_funcs ! { Next6 next6( a: A , b: B , c: C , d: D , e: E , f: F , ) }
106
+ impl_funcs ! { Next7 next7( a: A , b: B , c: C , d: D , e: E , f: F , g: G , ) }
90
107
91
108
unsafe impl < N , T , A , B , C , D , E , F , G > NifReturnable for Schedule < N , T , A , B , C , D , E , F , G >
92
109
where
0 commit comments