gpt4 book ai didi

vector - 如何在 Rust 中提取字符串向量的元素?

转载 作者:行者123 更新时间:2023-11-29 08:03:36 26 4
gpt4 key购买 nike

假设我有以下 code :

fn extract() -> Vec<String> {
let data = vec!["aaa".to_string(), "bbb".to_string(), "ccc".to_string()];
vec![data[0], data[2]]
}

在实践中,我从文件中读取数据

显然,这无法编译,因为我从向量 data 中提取字符串,使向量处于未定义状态。但是,从概念上讲,它应该可以工作,因为无论如何我之后都不会使用 data

我可以使用 mem::replace,但这看起来很疯狂:

fn extract() -> Vec<String> {
let mut data = vec!["aaa".to_string(), "bbb".to_string(), "ccc".to_string()];
let a = mem::replace(&mut data[0], "".to_string());
let c = mem::replace(&mut data[2], "".to_string());
vec![a, c]
}

如何在不克隆字符串的情况下从向量中提取特定元素?

最佳答案

Vec 对此有特殊的方法。 swap_removeremove(警告,线性复杂度),drain。例如,

fn extract() -> Vec<String> {
let mut data = vec!["aaa".to_string(), "bbb".to_string(), "ccc".to_string()];
// order does matter
vec![data.swap_remove(2), data.swap_remove(0)]
}

关于vector - 如何在 Rust 中提取字符串向量的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55056232/

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