gpt4 book ai didi

struct - 在不克隆的情况下将一个结构数组映射到Rust中的另一个结构数组

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

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

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()
}
playground

关于struct - 在不克隆的情况下将一个结构数组映射到Rust中的另一个结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65781577/

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