編集者注: この質問は 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;
}
コンパイラが "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;
}
ここが遊び場です。