Trait swagger::context::Push [−][src]
Defines a method for inserting a value, changing the resulting type. Used to specify that a hyper service adds some data from the context, making it available to later layers, e.g.
struct MyItem1; struct MyItem2; struct MyItem3; struct MiddlewareService<T, C> { inner: T, marker: PhantomData<C>, } impl<T, C, D, E> hyper::service::Service<(hyper::Request<hyper::Body>, C)> for MiddlewareService<T, C> where C: Push<MyItem1, Result=D> + Send + 'static, D: Push<MyItem2, Result=E>, E: Push<MyItem3>, E::Result: Send + 'static, T: hyper::service::Service<(hyper::Request<hyper::Body>, E::Result)> { type Response = T::Response; type Error = T::Error; type Future = T::Future; fn poll_ready(&mut self, cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>> { self.inner.poll_ready(cx) } fn call(&mut self, req : (hyper::Request<hyper::Body>, C)) -> Self::Future { let (request, context) = req; let context = context .push(MyItem1{}) .push(MyItem2{}) .push(MyItem3{}); self.inner.call((request, context)) } }