这是因为Iterator
实现rev()
,其中self
是DoubleEndedIterator
:
let vec: Vec<i32> = Vec::new();
for x in vec.iter().rev() {
//Do stuff
}
但是,如果我将vec.iter().rev()
改为&vec.rev()
,它将无法编译,因为:
no method named `rev` found for type `std::vec::Vec<i32>` in the current scope
此外:
the method `rev` exists but the following trait bounds were not satisfied: `std::vec::Vec<i32> : std::iter::Iterator`, `[i32] : std::iter::Iterator`
但是for循环不是隐式地调用IntoIterator
吗?&vec
或vec.iter()
被认为是惯用的Rust 吗?