tower_web/util/buf_stream/std.rs
1use util::BufStream;
2
3use bytes::Buf;
4use futures::{Poll, Stream};
5
6/// Wraps a `futures::Stream` that yields `Buf` values and provides a
7/// `BufStream` implementation.
8#[derive(Debug)]
9pub struct StdStream<T>(T);
10
11impl<T> StdStream<T> {
12 /// Create a new `StdStream` containing `stream`.
13 pub fn new(stream: T) -> StdStream<T> {
14 StdStream(stream)
15 }
16}
17
18impl<T> BufStream for StdStream<T>
19where
20 T: Stream,
21 T::Item: Buf,
22{
23 type Item = T::Item;
24 type Error = T::Error;
25
26 fn poll(&mut self) -> Poll<Option<Self::Item>, Self::Error> {
27 self.0.poll()
28 }
29}