Skip to content

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

@lucatrv

Description

@lucatrv

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.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions