gpt4 book ai didi

rust - 列表的相同索引项上的并行迭代语法问题

转载 作者:行者123 更新时间:2023-12-03 11:36:11 25 4
gpt4 key购买 nike

学习Rust,我注意到最酷的事情之一就是使用解构的直观性。我目前正在研究一个涉及在两个列表上进行迭代并比较具有相同索引的元素的问题。我发现自己希望自己有某种类似于

for (possible_item, possible_other_item) in (list1.iter(), list_two.iter()) 
{
// Do stuff with the items.
// possible_item and possible_other_item would be Option types
// In case list1 and list2 had different lengths
}
有谁知道任何编程语言中与此类似的东西吗?在rust中,您可以将HashMaps分解为(键,值)元组,因此我觉得可以实现此语法。

最佳答案

您可以尝试使用zip组合每个集合中的元素。

pub fn main( ) {
let v1 = vec![ 1, 2, 3, 4, 5 ];
let v2 = vec![ 6, 7, 8, 9, 10 ];

for ( i1, i2 ) in v1.iter( ).zip( v2.iter( ) ) {
println!( "v1 value: {} | v2 value: {}", i1, i2 );
}

// Prints out.
// v1 value: 1 | v2 value: 6
// v1 value: 2 | v2 value: 7
// v1 value: 3 | v2 value: 8
// v1 value: 4 | v2 value: 9
// v1 value: 5 | v2 value: 10
}
请注意,如果集合不是对称的,则将跳过这些元素。
pub fn main( ) {
let v1 = vec![ 1, 2, 3, 4, 5 ];
let v2 = vec![ 6, 7, 8, 9, 10, 11 ];

for ( i1, i2 ) in v1.iter( ).zip( v2.iter( ) ) {
println!( "v1 value: {} | v2 value: {}", i1, i2 );
}

// Notice that it did not print 11 from the v2 vector.
// v1 value: 1 | v2 value: 6
// v1 value: 2 | v2 value: 7
// v1 value: 3 | v2 value: 8
// v1 value: 4 | v2 value: 9
// v1 value: 5 | v2 value: 10
}

关于rust - 列表的相同索引项上的并行迭代语法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66298786/

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