Заемное значение не живет достаточно долго при создании Vec
Примечание редактора: этот вопрос задавался до Rust 1.0. С тех пор многие функции и типы изменились, как и определенная семантика языка. Код в вопросе больше не действителен, но идеи, выраженные в ответах, могут быть.
Я пытаюсь перечислить файлы в каталоге и скопировать имя файла на свой собственныйVec
, Я пробовал несколько решений, но это всегда заканчивается проблемой невозможности создать достаточно длинные переменные. Я не понимаю свою ошибку.
fn getList(action_dir_path : &str) -> Vec<&str> {
let v = fs::readdir(&Path::new(action_dir_path))
.unwrap()
.iter()
.map(|&x| x.filestem_str().unwrap())
.collect();
return v;
}
Почему компилятор жалуется на «х»? Меня не волнует х, я хочу&str
внутри и я подумал&str
были статичны.
Я попытался таким образом, но я получил тот же результат с компилятором, жалующимся на то, что «пути» не живут достаточно долго.
fn getList2(action_dir_path : &str) -> Vec<&str> {
let paths = fs::readdir(&Path::new(action_dir_path)).unwrap();
let mut v : Vec<&str> = Vec::new();
for path in paths.iter(){
let aSlice = path.filestem_str().unwrap();
v.push(aSlice);
}
return v;
}
Вотигровая площадка.