gpt4 book ai didi

rust - 如何在没有for循环的情况下获取迭代中正在处理的当前元素的索引?

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

我已阅读 How to iterate a Vec<T> with the indexed position?答案是在 for 循环中使用 enumerate

但是如果我不使用这样的 for 循环:

fn main() {
let v = vec![1; 10]
.iter()
.map(|&x| x + 1 /* + index */ ) // <--
.collect::<Vec<_>>();

print!("v{:?}", v);
}

如何获取上述闭包中的索引?

最佳答案

您还可以使用 enumerate !

let v = vec![1; 10]
.iter()
.enumerate()
.map(|(i, &x)| x + i)
.collect::<Vec<_>>();

println!("v{:?}", v); // prints v[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

让我们看看它是如何工作的。 Iterator::enumerate 返回 Enumerate<Self> .该类型还实现了 Iterator :

impl<I> Iterator for Enumerate<I>
where
I: Iterator,
{
type Item = (usize, <I as Iterator>::Item);
// ...
}

如您所见,新迭代器生成索引和原始迭代器的元组值(value)。

关于rust - 如何在没有for循环的情况下获取迭代中正在处理的当前元素的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58737024/

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