阅读文档,特别是有界特征

Reading documentation, specifically bounded traits

查找如何从 rust-0.13 中的标准输入读取,我找到了 this page,它具有以下代码:

for line in io::stdin().lock().lines() {
    print!("{}", line.unwrap());
}

我试着按照文档来弄清楚到底发生了什么,但被 lines() 函数卡住了。最后我浏览了代码(非常棒,他们在文档中有一个 link )并找到 BufferPrelude 回答了 lines() 来自哪里:

impl<T: Buffer> BufferPrelude for T {...}

我的问题是 - 有没有更容易弄清楚发生了什么的方法?文档引擎是否根本无法捕捉到这种类型的逻辑?

这就是所谓的一揽子实施,即已经实施Buffer的所有类型T的实施,而文档系统没有t 目前遵循这样的传递实现(即 BufferedReader impls Buffer,因此 BufferPrelude 是 "blanket impl'd" for BufferedReader)。

找到它的最快方法是使用搜索功能专门查找该方法,因此 lines。实际上,这会引导您到 BufferPrelude, where you would notice that it's "only" implemented for types that implement Buffer, so you would deduce that BufferedReader must implement Buffer. To verify this you could click on Buffer 并查看底部的 "implementors"。