如何解决将结构数组映射到 Rust 中的另一个结构数组而无需克隆
我使用具有以下结构的库:
struct keyvalue1 {
key: Vec<u8>,value: Vec<u8>,}
fn get() -> Vec<keyvalue1> { /* ... */ }
我需要将此向量转换为具有以下结构的几乎相似的向量:
struct keyvalue2 {
key: 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>,}
fn map_key_values(items: Vec<KeyValue1>) -> Vec<KeyValue2> {
items
.into_iter()
.map(|kv| KeyValue2 {
key: kv.key,value: kv.value,})
.collect()
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。