假设我有以下的代码:
fn extract() -> Vec<String> {
let data = vec!["aaa".to_string(), "bbb".to_string(), "ccc".to_string()];
vec![data[0], data[2]]
}
在实践中,我从文件中读取data
。
显然,这段代码无法编译,因为我从向量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]
}
如何从向量中提取特定元素而不必克隆字符串?