#walk #directory

scan_dir

A easier read_dir and recursive directory walker, useful for reading directory of config files

5 unstable releases

Uses old Rust 2015

0.3.3 Apr 20, 2016
0.3.2 Dec 25, 2015
0.3.1 Oct 27, 2015
0.2.0 Sep 25, 2015
0.1.0 Sep 24, 2015

#17 in #walk

Download history 168/week @ 2024-06-20 83/week @ 2024-06-27 51/week @ 2024-07-04 117/week @ 2024-07-11 145/week @ 2024-07-18 168/week @ 2024-07-25 198/week @ 2024-08-01 230/week @ 2024-08-08 205/week @ 2024-08-15 176/week @ 2024-08-22 137/week @ 2024-08-29 156/week @ 2024-09-05 110/week @ 2024-09-12 129/week @ 2024-09-19 178/week @ 2024-09-26 130/week @ 2024-10-03

575 downloads per month
Used in 6 crates

MIT/Apache

42KB
616 lines

Scan Dir

Status:Beta
Documentation:http://tailhook.github.com/scan_dir/

Simple interface to iterate over files or subdirs of a directory

Features:

  1. Ensure that file names are decodable to utf-8 (or error/warning is propagated)
  2. Ignore hidden entries (by default)
  3. Ignore common text editor and revision control backup files
  4. Select only files or only directories
  5. Simpler but detailed enough error handling
  6. Recursive directory scanner

Here is the example:

use scan_dir::ScanDir;

ScanDir::dirs().read(".", |iter| {
    for (entry, name) in iter {
        println!("File {:?} has full path {:?}", name, entry.path());
    }
}).unwrap()

Compare it to stdlib way:

use std::fs::read_dir;
for entry_res in read_dir(".").unwrap() {
    let entry = entry_res.unwrap();
    let file_name_buf = entry.file_name();
    let file_name = file_name_buf.to_str().unwrap();
    if !file_name.starts_with(".") &&
        entry.file_type().unwrap().is_dir()
    {
        println!("File {:?} has full path {:?}",
            file_name, entry.path());
    }
}

Well, it looks almost fine until you want to turn unwrap's into correct error reporting.

Upgrading

The scan_dir 0.3 by default resolves symlink before checking if it's a file or directory. In the scan_dir 0.1-0.2 symlinks where always included in the list (i.e. they were skipped neither by skip_files nor by skip_dirs).

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~47KB