我如何在未来的链中读到tokio :: net :: TcpStream?

时间:2018-11-18 13:37:14

标签: asynchronous tcp rust future rust-tokio

我想从TcpStream读取数据,直到遇到'\ 0'。 问题是tokio::io::read_until的流必须是BufRead

fn poll(&mut self) -> Poll<(), Self::Error> {
    match self.listener.poll_accept()? {
        Async::Ready((stream, _addr)) => {
            let task = tokio::io::read_until(stream, 0, vec![0u8; buffer])
                 .map_err(|_| ...)
                 .map(|_| ...);
            tokio::spawn(task);
        }
        Async::NotReady => return Ok(Async::NotReady),
    }
}

如何通过这种方式从TcpStream中读取数据?

1 个答案:

答案 0 :(得分:4)

阅读BufRead的文档,您将看到以下文本:

  

如果您具有实现Read的功能,则可以使用BufReader type将其变成BufRead

fn example(stream: TcpStream) {
    io::read_until(std::io::BufReader::new(stream), 0, vec![]);
}