如何在使用 zip 迭代时同时使用两个数组?

ali*_*ruk 2 rust

怎么可能同时使用两个数组呢? zip只会提供参考,而我需要实际的对象将它们添加到地图中。

let array1 : &[String] = &["abc".to_string(),"bcd".to_string()]
let array2 : &[String] = &["bcd".to_string(),"abc".to_string()]


for a,b in array1.into_iter().zip(array2.into_iter()){
  map.insert(a,b); // Doesn't work because a and b are &String instead of String
}
Run Code Online (Sandbox Code Playgroud)

kmd*_*eko 5

您的变量array1array2不是数组,它们是对切片的不可变引用,相似但不相同。您无法获得隐藏在不可变引用后面的数据的所有权。因此,.into_iter()将产生&Strings,故障不是由于 造成的.zip()

你想要的是这样的:

let array1 = ["abc".to_string(), "bcd".to_string()];
let array2 = ["bcd".to_string(), "abc".to_string()];

for (a, b) in array1.into_iter().zip(array2.into_iter()) {
    map.insert(a, b);
}
Run Code Online (Sandbox Code Playgroud)