Rust mut Vec的IntoIterator实现何时被调用?
Rust mut Vec的IntoIterator实现何时被调用?,rust,Rust,Vec类型实现了可变向量的IntoIterator特性: impl<'a, T> IntoIterator for &'a mut Vec<T> { type Item = &'a mut T; type IntoIter = slice::IterMut<'a, T>; fn into_iter(self) -> slice::IterMut<'a, T> { self.iter_m
Vec
类型实现了可变向量的IntoIterator
特性:
impl<'a, T> IntoIterator for &'a mut Vec<T> {
type Item = &'a mut T;
type IntoIter = slice::IterMut<'a, T>;
fn into_iter(self) -> slice::IterMut<'a, T> {
self.iter_mut()
}
}
Vec
的什么用法将调用特定的IntoIterator
实现?以下代码将调用问题中提到的IntoIterator
变量:
let mut vec = vec![1, 2, 3];
for i in &mut vec {
println!("{}", i);
}
这是因为
vec代码>宏返回一个拥有的Vec
,而不是一个引用。您可以使用for i in&mut-Vec
对所拥有的Vec
进行可变迭代。我认为您应该直接调用wiht-Vec.into\u iter()。你不需要让vec可变,即使是我不需要可变的项目,因为你将拥有向量项目的所有权。我想我已经解决了。已经为我自己的问题添加了答案。mut-Vec
不是一种类型。对于&mut-Vec
,有一个IntoIterator
的实现,一个用于Vec
,还有一个用于&Vec
的实现,这是您在此代码中调用的代码>宏返回拥有的向量,而不是引用。您可以使用for i in&mut-vec
对拥有的向量vec
进行可变迭代。使用您提供的信息更新答案。
let mut vec = vec![1, 2, 3];
for i in &mut vec {
println!("{}", i);
}