我使用的库具有以下结构:
struct KeyValue1 {
key: Vec<u8>,
value: Vec<u8>,
}
fn get() -> Vec<KeyValue1> { /* ... */ }
我需要将此向量转换为具有以下结构的几乎相似的向量:
struct KeyValue2 {
key: Vec<u8>,
value: Vec<u8>,
}
为了能够从一种向量转换为另一种向量,我目前使用以下代码:
let convertedItems = items.iter().map(|kv| -> KeyValue2{
key: key.clone(),
value: value.clone()
}).collect()
尽管这可行,但它会克隆两个无效的向量。我不再需要原始items
向量,因此我想将所有权从转移KeyValue1
到KeyValue2
,但是我还没有找到实现此目的的方法。
使用into_iter()
替代iter()
的items
载体,如果你不转换后需要它:
struct KeyValue1 {
key: Vec<u8>,
value: Vec<u8>,
}
struct KeyValue2 {
key: Vec<u8>,
value: Vec<u8>,
}
fn map_key_values(items: Vec<KeyValue1>) -> Vec<KeyValue2> {
items
.into_iter()
.map(|kv| KeyValue2 {
key: kv.key,
value: kv.value,
})
.collect()
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句