Заемное значение не живет достаточно долго при создании 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;
}

Вотигровая площадка.

Ответы на вопрос(1)

Ваш ответ на вопрос