Rustでファイル一覧を取得する

main.rs

――――――――――――――――――――

use std::env;

use std::fs;

use std::path::PathBuf;


fn main() {


  let current_dir = env::current_dir().unwrap();


  let mut dir_vec = fs::read_dir(&current_dir).unwrap()

    .map(|result| result.unwrap().path())

    .filter(|path_buf| path_buf.is_dir())

    .collect::<Vec<PathBuf>>();


  dir_vec.sort();


  println!("ディレクトリ一覧");

  for path_buf in dir_vec {

    println!("{}", path_buf.display());

  }


  let mut file_vec = fs::read_dir(&current_dir).unwrap()

    .map(|result| result.unwrap().path())

    .filter(|path_buf| path_buf.is_file())

    .collect::<Vec<PathBuf>>();


  file_vec.sort();


  println!("ファイル一覧");

  for path_buf in file_vec {

    println!("{}", path_buf.display());

  }

}

――――――――――――――――――――

 コピペする場合は2文字の全角空白を4文字の半角空白に置換してください。


 ちなみに、

 Iteratorにはsortが無いです。

 Vecにはfilterが無いです。


 ところで、mapで全ての要素の型を変換する前に、filterで要素を取捨選択したほうが効率が良さそうだったのですが、filterしてからmapするコードを書いてみたのですが、コンパイル エラーに成りました。何か解決方法が有るのかもしれませんが、著者には分かりませんでした。まだまだRustの勉強が足りないようです。

  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る