Asynchronous 在未来链中的tokio::net::TcpStream出现之前,我如何阅读_?

Asynchronous 在未来链中的tokio::net::TcpStream出现之前,我如何阅读_?,asynchronous,tcp,rust,future,rust-tokio,Asynchronous,Tcp,Rust,Future,Rust Tokio,我想从TcpStream读取数据,直到遇到“\0”。 问题是tokio::io::read_,直到需要流为BufRead fn poll(&mut self) -> Poll<(), Self::Error> { match self.listener.poll_accept()? { Async::Ready((stream, _addr)) => { let task = tokio::io::read_unti

我想从
TcpStream
读取数据,直到遇到“\0”。 问题是
tokio::io::read_,直到
需要流为
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),
    }
}
fn轮询(&mut self)->poll{
匹配self.listener.poll\u accept(){
异步::就绪((流,_addr))=>{
让task=tokio::io::read_直到(流,0,vec![0u8;缓冲区])
.map_err(| |…)
.地图(| |…);
东京:产卵(任务);
}
Async::NotReady=>返回Ok(Async::NotReady),
}
}

如何以这种方式从
TcpStream
读取数据?

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

如果您有实现的东西,可以使用将其转换为
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),
    }
}

请检查如何创建一个,然后检查您的问题以将其包括在内。我们无法说出代码中存在哪些板条箱、类型、特征、字段等。试着制造一些能再现你在网络上的错误的东西,或者你可以在一个全新的货运项目中再现它。也有。请包括您收到的确切错误消息。我认为我的问题对您来说非常简单,因此没有必要提供这么多数据。今天我有点赶时间,但下次我会有更多的时间。谢谢,很有效。但是由于某种原因,
read\u exact
将数据写入缓冲区的末尾。实际上,我最终实现了一个自定义未来,它使用流并将流与读取的数据一起作为元组返回-就像
write\u all
,但用于读取。