Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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
Arrays 为什么Rust中的for循环可以在片或迭代器上迭代,而不能在数组上迭代?_Arrays_Rust - Fatal编程技术网

Arrays 为什么Rust中的for循环可以在片或迭代器上迭代,而不能在数组上迭代?

Arrays 为什么Rust中的for循环可以在片或迭代器上迭代,而不能在数组上迭代?,arrays,rust,Arrays,Rust,为什么Rust 1.44.0中的for循环可以在片或迭代器上迭代,但不能在数组上迭代?例如,以下内容使我陷入了一个循环: 在阵列上循环: fn main() { let a = [1, 2, 3, 4, 5]; for element in a { println!("element={}", element); } } 错误[E0277]:`[{integer};5]`不是迭代器 -->main.rs:4:20 | 4 |对于a中

为什么Rust 1.44.0中的
for
循环可以在片或迭代器上迭代,但不能在数组上迭代?例如,以下内容使我陷入了一个循环:

在阵列上循环:

fn main() {
    let a = [1, 2, 3, 4, 5];

    for element in a {
        println!("element={}", element);
    }
}
错误[E0277]:`[{integer};5]`不是迭代器
-->main.rs:4:20
|
4 |对于a中的元素{
|^借用带有`&`的数组,或调用`.iter()`对其进行迭代
|
=help:trait`std::iter::Iterator`未为`[{integer};5]实现`
=注意:数组不是迭代器,但像下面这样的切片是:`&[1,2,3]`
=注意:`std::iter::IntoIterator::into iter::所需`
在片上循环(版本1):

元素=1
元素=2
元素=3
元素=4
元素=5
在片上循环(版本2):

元素=1
元素=2
元素=3
元素=4
元素=5
在数组迭代器上循环:

fn main() {
    let a = [1, 2, 3, 4, 5];

    for element in a.iter() {
        println!("element={}", element);
    }
}
元素=1
元素=2
元素=3
元素=4
元素=5

编译器会告诉您原因:因为数组不是迭代器

对于数组,必须实现
IntoIterator
,不幸的是,添加这一点将是一个突破性的变化,而且“只是这样做”在生态系统中存在已知问题,因此在这方面进展缓慢

从Rust 1.51开始,您可以使用:

fn main(){
设a=[1,2,3,4,5];
对于std::array::IntoIter::new(a)中的元素{
println!(“元素={}”,元素);
}
}

编译器会告诉您原因:因为数组不是迭代器

对于数组,必须实现
IntoIterator
,不幸的是,添加这一点将是一个突破性的变化,而且“只是这样做”在生态系统中存在已知问题,因此在这方面进展缓慢

从Rust 1.51开始,您可以使用:

fn main(){
设a=[1,2,3,4,5];
对于std::array::IntoIter::new(a)中的元素{
println!(“元素={}”,元素);
}
}

那么数组片是否实现了
到迭代器
?这是如何工作的?如何“借用”数组
a
将其转换为迭代器?@Derek与任何其他类型的方法相同:。数组片是否实现了
到迭代器
?这是如何工作的?如何“借用”数组
a
将其转换为迭代器?@Derek的方法与任何其他类型的方法相同:。
fn main() {
    let a = [1, 2, 3, 4, 5];

    for element in &a {
        println!("element={}", element);
    }
}
fn main() {
    let a = [1, 2, 3, 4, 5];

    for element in a.iter() {
        println!("element={}", element);
    }
}