tower_web/util/buf_stream/
bytes.rs

1use super::BufStream;
2
3use bytes::Bytes;
4use futures::Poll;
5
6use std::io;
7
8impl BufStream for Bytes {
9    type Item = io::Cursor<Bytes>;
10    type Error = ();
11
12    fn poll(&mut self) -> Poll<Option<Self::Item>, Self::Error> {
13        use std::mem;
14
15        if self.is_empty() {
16            return Ok(None.into());
17        }
18
19        let bytes = mem::replace(self, Bytes::new());
20        let buf = io::Cursor::new(bytes);
21
22        Ok(Some(buf).into())
23    }
24}