Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rust mut Vec的IntoIterator实现何时被调用?_Rust - Fatal编程技术网

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);
}