查看如何从生锈-0.13中的stdin读取,我得到this page,其中包含以下代码:
for line in io::stdin().lock().lines() {
print!("{}", line.unwrap());
}
我尝试按照文档来弄清楚究竟发生了什么,但却遇到了line()函数。最后,我浏览了代码(非常棒,他们在文档中有一个链接)并找到了BufferPrelude,它回答了lines()的来源:
impl<T: Buffer> BufferPrelude for T {...}
我的问题是 - 是否更容易弄清楚发生了什么?文档引擎是不是没有捕获这种类型的逻辑?
答案 0 :(得分:3)
这就是所谓的一揽子实现,即已实现T
的所有类型Buffer
的实现,文档系统目前不遵循传递实现就像那样(即BufferedReader
推测Buffer
,所以BufferPrelude
对于BufferedReader
来说是“毯子”。
找到这个的最快方法就是使用搜索功能特别寻找方法,lines
。实际上,这会导致您BufferPrelude
,您会注意到它是“仅”实现Buffer
的类型,因此您会推断BufferedReader
必须实现{{1} }}。要验证这一点,您可以点击Buffer
并查看底部的“实施者”。