tower_web/util/buf_stream/
empty.rs

1use bytes::Buf;
2use futures::{Async, Poll};
3use std::marker::PhantomData;
4use util::buf_stream::BufStream;
5
6/// A `BufStream` that contains no data.
7#[derive(Debug, Copy, Clone)]
8pub struct Empty<Item, Error>(PhantomData<(Item, Error)>);
9
10/// Create a new `Empty` instance.
11pub fn empty<Item, Error>() -> Empty<Item, Error> {
12    Default::default()
13}
14
15impl<Item, Error> Empty<Item, Error> {
16    /// Create a new `Empty` instance.
17    pub fn new() -> Self {
18        Default::default()
19    }
20}
21
22impl<Item, Error> Default for Empty<Item, Error> {
23    fn default() -> Self {
24        Empty(Default::default())
25    }
26}
27
28impl<Item, Error> BufStream for Empty<Item, Error>
29where
30    Item: Buf,
31{
32    type Item = Item;
33    type Error = Error;
34
35    fn poll(&mut self) -> Poll<Option<Self::Item>, Self::Error> {
36        Ok(Async::Ready(None))
37    }
38}