gpt4 book ai didi

rust - 为什么 Vec 不实现 Iterator 特性?

转载 作者:行者123 更新时间:2023-11-29 07:47:10 24 4
gpt4 key购买 nike

Vec 没有实现 Iterator 特性的设计原因是什么?必须始终对所有向量和切片调用 iter() 会导致代码行更长。

例子:

let rx = xs.iter().zip(ys.iter());

与 Scala 相比:

val rx = xs.zip(ys)

最佳答案

迭代器有一个迭代状态。它必须知道下一个元素是什么。

所以向量本身不是迭代器,区别很重要。例如,您可以在同一个向量上有两个迭代器,每个迭代器都有其特定的迭代状态。

但是向量可以为您提供迭代器,这就是它实现 IntoIterator 的原因,它可以让你这样写:

let v = vec![1, 4];
for a in v {
dbg!(a);
}

许多函数在需要迭代器时使用 IntoIteratorzip 就是这种情况,这就是为什么

let rx = xs.iter().zip(ys.iter());

可以替换为

let rx = xs.iter().zip(ys);

关于rust - 为什么 Vec 不实现 Iterator 特性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58725427/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com