Struct 将一个结构数组映射到Rust中的另一个结构数组,无需克隆

Struct 将一个结构数组映射到Rust中的另一个结构数组,无需克隆,struct,rust,iterator,closures,map-function,Struct,Rust,Iterator,Closures,Map Function,我使用的库具有以下结构: struct KeyValue1 { key: Vec<u8>, value: Vec<u8>, } fn get() -> Vec<KeyValue1> { /* ... */ } struct KeyValue2 { key: Vec<u8>, value: Vec<u8>, } 虽然这是可行的,但它克隆了两个载体,这是低效的。我不再需要原始的项向量,因此我想将所

我使用的库具有以下结构:

struct KeyValue1 {
    key: Vec<u8>,
    value: Vec<u8>,
}

fn get() -> Vec<KeyValue1> { /* ... */ }
struct KeyValue2 {
    key: Vec<u8>,
    value: Vec<u8>,
}
虽然这是可行的,但它克隆了两个载体,这是低效的。我不再需要原始的
向量,因此我想将所有权从
KeyValue1
转移到
KeyValue2
,但我还没有找到这样做的方法。

向量上使用
而不是
iter()
,如果转换后不需要它:

struct键值1{
关键词:Vec,
价值:Vec,
}
结构键值2{
关键词:Vec,
价值:Vec,
}
fn映射键值(项目:Vec)->Vec{
项目
.into_iter()
.map(| kv |键值2{
键:千伏键,
值:千伏值,
})
.collect()
}

let convertedItems = items.iter().map(|kv| -> KeyValue2{
  key: key.clone(),
  value: value.clone()
}).collect()