BurntSushi/walkdir

Please add a method to walk entries in case-insensitive alphabetical order

Open

#172 geöffnet am 8. Feb. 2023

Auf GitHub ansehen
 (3 Kommentare) (0 Reaktionen) (0 zugewiesene Personen)Rust (125 Forks)github user discovery
enhancementhelp wanted

Repository-Metriken

Stars
 (1.504 Stars)
PR-Merge-Metriken
 (Keine gemergten PRs in 30 T)

Beschreibung

Considering a directory ./test with entries a B c D, the command ls test prints entries in alphabetical order regardless of case.

Instead the following code:

use walkdir::WalkDir;

fn main() {
    for entry in WalkDir::new("test").sort_by_file_name() {
        println!("{}", entry.unwrap().into_path().display());
    }
}

prints entries in the following order:

test
test\B
test\D
test\a
test\c

The reason is clear and is due to the sort method, however it took me some time to detect this behavior in a larger code where I was relying on actual alphabetical sorting.

Although one can easily implement case-insensitive alphabetical order using the lower level sort_by or sort_by_key methods, the existence of an additional sort_by_file_name_case_insensitive method would better clarify the two actual behaviors, and would probably be of wider use than sort_by_file_name.

If you agree I can issue a PR.

As an additional note, for performance reasons maybe it would be preferable to use the sort_unstable / sort_unstable_by / sort_unstable_by_key methods instead of the sort / sort_by / sort_by_key methods.

Contributor Guide