[][src]Crate lexical_sort

This is a library to sort strings (or file paths) lexically. This means that non-ASCII characters such as á or ß are treated like their closest ASCII character: á is treated as a, ß is treated as ss.

The sort is case-insensitive. Alphanumeric characters are sorted after all other characters (punctuation, whitespace, special characters, emojis, ...).

It is possible to enable natural sorting, which also handles ASCII numbers. For example, 50 is sorted before 100 with natural sorting turned on.

If different strings have the same ASCII representation (e.g. "Foo" and "fóò"), we fall back to the default implementation, which just compares Unicode code points.

Usage

To sort strings or paths, use the LexicalSort trait:

use lexical_sort::LexicalSort;

let mut strings = vec!["ß", "é", "100", "hello", "world", "50", ".", "B!"];
strings.lexical_sort(/* enable natural sorting: */ true);

assert_eq!(&strings, &[".", "50", "100", "B!", "é", "hello", "ß", "world"]);

To just compare two strings, use the lexical_cmp or lexical_natural_cmp function.

Modules

iter

Iterators to transliterate Unicode to ASCII. Note that only alphanumeric characters are transliterated, and not all of them are supported.

Traits

LexicalSort

This trait adds functionality to slices containing strings or file paths for sorting them lexically.

Functions

lexical_cmp
lexical_natural_cmp