生锈语言引用似乎用调用IntoIterator::into_iter对in关键字后面提供的表达式调用for循环以获得Iterator,然后使用该Iterator检索要循环的元素。
然而,在实践中,for循环在IntoIterator或Iterator的表达式中似乎工作得很好。
let v = vec!(1, 2, 3);
// Either of these work:
for i in v { ... } // v impl IntoIterator
for i in v.into_iter() { ... } // v.into_iter() impl Iterator因此,尖锐的规则似乎是:如果表达式已经是Iterator,则在该表达式上循环,否则,调用表达式上的into_iter以使get Iterator循环。然而,文档并不是这么说的。
那我错过了什么?文件不完整吗?IntoIterator::into_iter电话有什么神奇之处吗?还是Iterator也实现了IntoIterator以使其工作?还是我完全误解了它的工作原理?
发布于 2022-08-29 12:05:32
There is a blanket implementation of IntoIterator for types implementing Iterator, that returns the iterator itself。因此,如果采用IntoIterator,也可以使用Iterator。
https://stackoverflow.com/questions/73527633
复制相似问题