use super::Result;
pub trait Register<S> {
fn register(state: &S) -> Result<()>;
}
impl<S> Register<S> for () {
fn register(_: &S) -> Result<()> {
Ok(())
}
}
macro_rules! register_tuple {
($($member:ident),+) => {
impl<S, $($member: Register<S>),+> Register<S> for ($($member,)+) {
fn register(state: &S) -> Result<()> {
$($member::register(state)?;)+
Ok(())
}
}
};
}
register_tuple!(A);
register_tuple!(A, B);
register_tuple!(A, B, C);
register_tuple!(A, B, C, D);
register_tuple!(A, B, C, D, E);
register_tuple!(A, B, C, D, E, F);
register_tuple!(A, B, C, D, E, F, G);
register_tuple!(A, B, C, D, E, F, G, H);