我正在写一个程序,它需要一个迭代器,该迭代器从数组中的nth
值开始,并按m
步进,给出元素的正确索引(n + xm
)。
fn main() {
let mut test = [false; 10];
for (index, val) in test.iter_mut().skip(3).step_by(2).enumerate() {
*val = true;
println!("{index} = true")
}
println!("{:?}", test)
}
// ->
// 0 = true
// 1 = true
// 2 = true
// 3 = true
// [false, false, false, true, false, true, false, true, false, true]
给出了正确的元素(val
),但索引(index
)错误。例如,输出的第一行应该是3 = true
。您能告诉我如何获得正确的index
吗?
谢谢你,
1条答案
按热度按时间szqfcxe21#
TL;DR:跳过前枚举。
迭代器(实现
Iterator
的示例)上的操作是顺序的。它们的工作方式是惰性的,通过应用另一个类型调用inner的next
,然后执行它自己的操作。我试图告诉你的是*操作的顺序很重要。有了这些知识,你现在可以把enumeration放在这个操作管道的开头: