BurntSushi/walkdir

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

Open

#172 opened on 2023年2月8日

GitHub で見る
 (3 comments) (0 reactions) (0 assignees)Rust (125 forks)github user discovery
enhancementhelp wanted

Repository metrics

Stars
 (1,504 stars)
PR merge metrics
 (30d に merged PR はありません)

説明

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.

コントリビューターガイド