Допустим, у меня есть следующий код :
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]
}
Как мне извлечь определенные элементы из вектора без клонирования строк?