use super::HttpMiddleware;
impl<S, M1> HttpMiddleware<S> for (M1,)
where
M1: HttpMiddleware<S>,
{
type Service = M1::Service;
fn apply(self, service: S) -> Self::Service {
let (m1,) = self;
m1.apply(service)
}
}
impl<S, M1, M2> HttpMiddleware<S> for (M1, M2)
where
M1: HttpMiddleware<M2::Service>,
M2: HttpMiddleware<S>,
{
type Service = M1::Service;
fn apply(self, service: S) -> Self::Service {
let (m1, l2) = self;
m1.apply(l2.apply(service))
}
}
impl<S, M1, M2, M3> HttpMiddleware<S> for (M1, M2, M3)
where
M1: HttpMiddleware<M2::Service>,
M2: HttpMiddleware<M3::Service>,
M3: HttpMiddleware<S>,
{
type Service = M1::Service;
fn apply(self, service: S) -> Self::Service {
let (m1, m2, m3) = self;
m1.apply((m2, m3).apply(service))
}
}
impl<S, M1, M2, M3, M4> HttpMiddleware<S> for (M1, M2, M3, M4)
where
M1: HttpMiddleware<M2::Service>,
M2: HttpMiddleware<M3::Service>,
M3: HttpMiddleware<M4::Service>,
M4: HttpMiddleware<S>,
{
type Service = M1::Service;
fn apply(self, service: S) -> Self::Service {
let (m1, m2, m3, m4) = self;
m1.apply((m2, m3, m4).apply(service))
}
}
impl<S, M1, M2, M3, M4, M5> HttpMiddleware<S> for (M1, M2, M3, M4, M5)
where
M1: HttpMiddleware<M2::Service>,
M2: HttpMiddleware<M3::Service>,
M3: HttpMiddleware<M4::Service>,
M4: HttpMiddleware<M5::Service>,
M5: HttpMiddleware<S>,
{
type Service = M1::Service;
fn apply(self, service: S) -> Self::Service {
let (m1, m2, m3, m4, m5) = self;
m1.apply((m2, m3, m4, m5).apply(service))
}
}
impl<S, M1, M2, M3, M4, M5, M6> HttpMiddleware<S> for (M1, M2, M3, M4, M5, M6)
where
M1: HttpMiddleware<M2::Service>,
M2: HttpMiddleware<M3::Service>,
M3: HttpMiddleware<M4::Service>,
M4: HttpMiddleware<M5::Service>,
M5: HttpMiddleware<M6::Service>,
M6: HttpMiddleware<S>,
{
type Service = M1::Service;
fn apply(self, service: S) -> Self::Service {
let (m1, m2, m3, m4, m5, m6) = self;
m1.apply((m2, m3, m4, m5, m6).apply(service))
}
}
impl<S, M1, M2, M3, M4, M5, M6, M7> HttpMiddleware<S> for (M1, M2, M3, M4, M5, M6, M7)
where
M1: HttpMiddleware<M2::Service>,
M2: HttpMiddleware<M3::Service>,
M3: HttpMiddleware<M4::Service>,
M4: HttpMiddleware<M5::Service>,
M5: HttpMiddleware<M6::Service>,
M6: HttpMiddleware<M7::Service>,
M7: HttpMiddleware<S>,
{
type Service = M1::Service;
fn apply(self, service: S) -> Self::Service {
let (m1, m2, m3, m4, m5, m6, m7) = self;
m1.apply((m2, m3, m4, m5, m6, m7).apply(service))
}
}
impl<S, M1, M2, M3, M4, M5, M6, M7, M8> HttpMiddleware<S> for (M1, M2, M3, M4, M5, M6, M7, M8)
where
M1: HttpMiddleware<M2::Service>,
M2: HttpMiddleware<M3::Service>,
M3: HttpMiddleware<M4::Service>,
M4: HttpMiddleware<M5::Service>,
M5: HttpMiddleware<M6::Service>,
M6: HttpMiddleware<M7::Service>,
M7: HttpMiddleware<M8::Service>,
M8: HttpMiddleware<S>,
{
type Service = M1::Service;
fn apply(self, service: S) -> Self::Service {
let (m1, m2, m3, m4, m5, m6, m7, m8) = self;
m1.apply((m2, m3, m4, m5, m6, m7, m8).apply(service))
}
}
impl<S, M1, M2, M3, M4, M5, M6, M7, M8, M9> HttpMiddleware<S>
for (M1, M2, M3, M4, M5, M6, M7, M8, M9)
where
M1: HttpMiddleware<M2::Service>,
M2: HttpMiddleware<M3::Service>,
M3: HttpMiddleware<M4::Service>,
M4: HttpMiddleware<M5::Service>,
M5: HttpMiddleware<M6::Service>,
M6: HttpMiddleware<M7::Service>,
M7: HttpMiddleware<M8::Service>,
M8: HttpMiddleware<M9::Service>,
M9: HttpMiddleware<S>,
{
type Service = M1::Service;
fn apply(self, service: S) -> Self::Service {
let (m1, m2, m3, m4, m5, m6, m7, m8, m9) = self;
m1.apply((m2, m3, m4, m5, m6, m7, m8, m9).apply(service))
}
}
impl<S, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10> HttpMiddleware<S>
for (M1, M2, M3, M4, M5, M6, M7, M8, M9, M10)
where
M1: HttpMiddleware<M2::Service>,
M2: HttpMiddleware<M3::Service>,
M3: HttpMiddleware<M4::Service>,
M4: HttpMiddleware<M5::Service>,
M5: HttpMiddleware<M6::Service>,
M6: HttpMiddleware<M7::Service>,
M7: HttpMiddleware<M8::Service>,
M8: HttpMiddleware<M9::Service>,
M9: HttpMiddleware<M10::Service>,
M10: HttpMiddleware<S>,
{
type Service = M1::Service;
fn apply(self, service: S) -> Self::Service {
let (m1, m2, m3, m4, m5, m6, m7, m8, m9, m10) = self;
m1.apply((m2, m3, m4, m5, m6, m7, m8, m9, m10).apply(service))
}
}
impl<S, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11> HttpMiddleware<S>
for (M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11)
where
M1: HttpMiddleware<M2::Service>,
M2: HttpMiddleware<M3::Service>,
M3: HttpMiddleware<M4::Service>,
M4: HttpMiddleware<M5::Service>,
M5: HttpMiddleware<M6::Service>,
M6: HttpMiddleware<M7::Service>,
M7: HttpMiddleware<M8::Service>,
M8: HttpMiddleware<M9::Service>,
M9: HttpMiddleware<M10::Service>,
M10: HttpMiddleware<M11::Service>,
M11: HttpMiddleware<S>,
{
type Service = M1::Service;
fn apply(self, service: S) -> Self::Service {
let (m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11) = self;
m1.apply((m2, m3, m4, m5, m6, m7, m8, m9, m10, m11).apply(service))
}
}
impl<S, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12> HttpMiddleware<S>
for (M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12)
where
M1: HttpMiddleware<M2::Service>,
M2: HttpMiddleware<M3::Service>,
M3: HttpMiddleware<M4::Service>,
M4: HttpMiddleware<M5::Service>,
M5: HttpMiddleware<M6::Service>,
M6: HttpMiddleware<M7::Service>,
M7: HttpMiddleware<M8::Service>,
M8: HttpMiddleware<M9::Service>,
M9: HttpMiddleware<M10::Service>,
M10: HttpMiddleware<M11::Service>,
M11: HttpMiddleware<M12::Service>,
M12: HttpMiddleware<S>,
{
type Service = M1::Service;
fn apply(self, service: S) -> Self::Service {
let (m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12) = self;
m1.apply((m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12).apply(service))
}
}