小编mrb*_*rne的帖子

在创建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;
}
Run Code Online (Sandbox Code Playgroud)

为什么编译器会抱怨"x"?我不在乎x,我想在&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;
}
Run Code Online (Sandbox Code Playgroud)

这是操场.

lifetime rust borrow-checker

4
推荐指数
1
解决办法
1922
查看次数

标签 统计

borrow-checker ×1

lifetime ×1

rust ×1