Skip to content

Commit 10a0dea

Browse files
sunny-gfilmor
authored andcommitted
adds From impl
1 parent 4e794eb commit 10a0dea

File tree

1 file changed

+30
-13
lines changed

1 file changed

+30
-13
lines changed

rustler/src/schedule.rs

Lines changed: 30 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -67,26 +67,43 @@ pub enum Schedule<N: crate::Nif, T, A = (), B = (), C = (), D = (), E = (), F =
6767
Next7(PhantomData<N>, A, B, C, D, E, F, G),
6868
}
6969

70-
macro_rules! impl_func {
70+
macro_rules! impl_funcs {
7171
($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+
}
7784
}
7885
};
7986
}
8087

8188
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+
}
89100
}
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,) }
90107

91108
unsafe impl<N, T, A, B, C, D, E, F, G> NifReturnable for Schedule<N, T, A, B, C, D, E, F, G>
92109
where

0 commit comments

Comments
 (0)