Rust 如何解释read#u until的签名以及什么是AsyncRead+;东京的BufRead?
我试图理解Rust中的异步I/O。下面的代码基于Katharina Fey的代码片段 这对我来说很有用:Rust 如何解释read#u until的签名以及什么是AsyncRead+;东京的BufRead?,rust,rust-tokio,Rust,Rust Tokio,我试图理解Rust中的异步I/O。下面的代码基于Katharina Fey的代码片段 这对我来说很有用: use futures::future::Future; use std::io::BufReader; use tokio::io::*; fn main() { let reader = BufReader::new(tokio::io::stdin()); let buffer = Vec::new(); println!("Type something:"
use futures::future::Future;
use std::io::BufReader;
use tokio::io::*;
fn main() {
let reader = BufReader::new(tokio::io::stdin());
let buffer = Vec::new();
println!("Type something:");
let fut = tokio::io::read_until(reader, b'\n', buffer)
.and_then(move |(stdin, buffer)| {
tokio::io::stdout()
.write_all(&buffer)
.map_err(|e| panic!(e))
})
.map_err(|e| panic!(e));
tokio::run(fut);
}
在找到代码之前,我试图从文档中找出它
如何解释read_until
的签名,以便在上面的代码示例中使用它
pub fn read_until<A>(a: A, byte: u8, buf: Vec<u8>) -> ReadUntil<A>
where
A: AsyncRead + BufRead,
pub-fn-read_-until(a:a,字节:u8,buf:Vec)->ReadUntil
哪里
A:AsyncRead+BufRead,
具体来说,通过阅读文档,我如何知道传递到和_then
闭包中的参数是什么,以及预期的结果 参数设置为,然后
不幸的是,Rust文档的标准布局使得未来很难遵循
从您链接的文档开始,我可以看到它返回ReadUntil
此返回值描述为:
一种可用于将流的内容轻松读入向量直到达到分隔符的未来
我希望它能实现未来
特性——我可以看到它确实做到了。我还假设未来解析为的项是某种向量,但我不知道具体是什么,所以我继续挖掘:
首先,我在“Trait实现”下查找impl
传入的闭包f
将Self::Item
作为参数。我刚刚发现Item
是(A,Vec)
,所以我希望写一些类似。然后(|(reader,buffer){/*…/*})
AsyncRead
+BufRead
这就限制了什么类型的读卡器可以被读取。所创建的实现
很有帮助,Tokio提供了这样我们就不用担心了,我们可以继续使用BufReader
非常有帮助!面包屑线索帮助我查看[+]并遵循参数引用语法。我建议对其进行编辑以供将来的读者了解,并测试我对闭包语法的理解——谢谢!