4

編集者注: この質問は 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;
}

ここが遊び場です。

4

2 に答える 2

0

1 つの小さな関連ポイント:

&str は静的だと思いました。

&'static strs は静的ですが、それは&str. どんな種類の寿命でもかまいません。

于 2015-02-06T00:30:02.923 に答える