Как я могу перечислить файлы каталога в Rust?

Как я могу перечислить все файлы каталога в Rust? Я ищу эквивалент следующего кода Python.

files = os.listdir('./')

Ответы

Ответ 1

Здесь пример:

use std::fs;

fn main() {
    let paths = fs::read_dir("./").unwrap();

    for path in paths {
        println!("Name: {}", path.unwrap().path().display())
    }
}

Он просто перебирает файлы и распечатывает их имена.

Ответ 2

Вы также можете использовать glob, что явно для этой цели.

extern crate glob;
use self::glob::glob;

let files:Vec<Path> = glob("*").collect();

Ответ 3

Попробуйте это на детской площадке:

extern crate glob;
use glob::glob;
fn main() {
    for e in glob("../*").expect("Failed to read glob pattern") {
        println!("{}", e.unwrap().display());
    }
}

Вы можете увидеть источник.


И ходить каталоги рекурсивно попробуйте использовать walkdir клеть (площадка):

extern crate walkdir;
use walkdir::WalkDir;
fn main() {
    for e in WalkDir::new(".").into_iter().filter_map(|e| e.ok()) {
        if e.metadata().unwrap().is_file() {
            println!("{}", e.path().display());
        }
    }
}

См. Также раздел "Обратный путь в каталогах " в The Rust Cookbook.