编者注:这个问题在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)
这是操场.