1use futures::Poll;
4use http_body::Body as HttpBody;
5use hyper::body::Payload;
6
7pub use hyper::Body;
8
9#[derive(Debug)]
11pub struct LiftBody<T> {
12 inner: T,
13}
14
15impl<T: HttpBody> From<T> for LiftBody<T> {
16 fn from(inner: T) -> Self {
17 LiftBody { inner }
18 }
19}
20
21impl<T> Payload for LiftBody<T>
22where
23 T: HttpBody + Send + 'static,
24 T::Data: Send,
25 T::Error: Into<crate::Error>,
26{
27 type Data = T::Data;
28 type Error = T::Error;
29
30 fn poll_data(&mut self) -> Poll<Option<Self::Data>, Self::Error> {
31 self.inner.poll_data()
32 }
33
34 fn poll_trailers(&mut self) -> Poll<Option<hyper::HeaderMap>, Self::Error> {
35 self.inner.poll_trailers()
36 }
37 fn is_end_stream(&self) -> bool {
38 self.inner.is_end_stream()
39 }
40}