diff --git a/substrate/client/consensus/slots/src/lib.rs b/substrate/client/consensus/slots/src/lib.rs index 1ec89a6f51..c410f173e9 100644 --- a/substrate/client/consensus/slots/src/lib.rs +++ b/substrate/client/consensus/slots/src/lib.rs @@ -454,47 +454,36 @@ pub trait InherentDataProviderExt { fn slot(&self) -> Slot; } -impl InherentDataProviderExt for (T, S, P) -where - T: Deref, - S: Deref, -{ - fn timestamp(&self) -> Timestamp { - *self.0.deref() - } +/// Small macro for implementing `InherentDataProviderExt` for inherent data provider tuple. +macro_rules! impl_inherent_data_provider_ext_tuple { + ( T, S $(, $TN:ident)* $( , )?) => { + impl InherentDataProviderExt for (T, S, $($TN),*) + where + T: Deref, + S: Deref, + { + fn timestamp(&self) -> Timestamp { + *self.0.deref() + } - fn slot(&self) -> Slot { - *self.1.deref() + fn slot(&self) -> Slot { + *self.1.deref() + } + } } } -impl InherentDataProviderExt for (T, S, P, R) -where - T: Deref, - S: Deref, -{ - fn timestamp(&self) -> Timestamp { - *self.0.deref() - } - - fn slot(&self) -> Slot { - *self.1.deref() - } -} - -impl InherentDataProviderExt for (T, S) -where - T: Deref, - S: Deref, -{ - fn timestamp(&self) -> Timestamp { - *self.0.deref() - } - - fn slot(&self) -> Slot { - *self.1.deref() - } -} +impl_inherent_data_provider_ext_tuple!(T, S); +impl_inherent_data_provider_ext_tuple!(T, S, A); +impl_inherent_data_provider_ext_tuple!(T, S, A, B); +impl_inherent_data_provider_ext_tuple!(T, S, A, B, C); +impl_inherent_data_provider_ext_tuple!(T, S, A, B, C, D); +impl_inherent_data_provider_ext_tuple!(T, S, A, B, C, D, E); +impl_inherent_data_provider_ext_tuple!(T, S, A, B, C, D, E, F); +impl_inherent_data_provider_ext_tuple!(T, S, A, B, C, D, E, F, G); +impl_inherent_data_provider_ext_tuple!(T, S, A, B, C, D, E, F, G, H); +impl_inherent_data_provider_ext_tuple!(T, S, A, B, C, D, E, F, G, H, I); +impl_inherent_data_provider_ext_tuple!(T, S, A, B, C, D, E, F, G, H, I, J); /// Start a new slot worker. ///