How aathish14/natsort-rs works
natsort-rs is a Rust natural-sorting library. Callers either sort collections directly or generate reusable sort keys; algorithm flags select numeric, path, case, and locale behavior. The core key pipeline separates input transforms, parsing, component conversion, and final key assembly, with Unicode numeric data and locale providers supporting those stages. The tree and README establish additional public APIs and optional backends, but excerpts do not expose all of their call wiring, so uncertain links are omitted.
Main entry points: parser/mod.rs Parser Factories · string.rs String Parser · locale/mod.rs Locale Provider · key.rs Key Generation
Components 22
Sorting API
- Sort Helpers
src/sorted.rs - Key Generation
src/key.rs - Index Ordering
src/index.rs - OS Sort API
src/os_sort.rs - Algorithm Flags
src/ns.rs
Key Pipeline
- Input Transform
src/transform/input.rs - Component Transform
src/transform/component.rs - Final Key Transform
src/transform/final_transform.rs - Parser Factories
src/parser/mod.rs
Parsing Support
- String Parser
src/parser/string.rs - Number Parser
src/parser/number.rs - Path Parser
src/parser/path.rs - Bytes Parser
src/parser/bytes.rs - Numeric Regex
src/regex.rs - Number Compatibility
src/compat/mod.rs - Unicode Numerics
src/unicode/numbers.rs
Locale Backends
- Locale Provider
src/locale/mod.rs - Stdlib Locale
src/locale/stdlib.rs - ICU Locale
src/locale/icu.rs - Windows Locale
src/locale/windows.rs
Other components
- Library Caller
- Windows API
Connections 22
- Library Caller → Sort Helpers: sorts with
- Library Caller → Key Generation: generates keys
- Library Caller → Index Ordering: requests indices
- Library Caller → OS Sort API: requests OS sort
- Index Ordering → Key Generation: generates sort keys
- Key Generation → Parser Factories: configures parsers
- Parser Factories → String Parser: creates
- Parser Factories → Number Parser: creates
- Parser Factories → Path Parser: creates
- Parser Factories → Bytes Parser: creates
- Parser Factories → Numeric Regex: selects regex
- String Parser → Input Transform: transforms input
- String Parser → Component Transform: transforms components
- String Parser → Final Key Transform: assembles key
- Number Parser → Number Compatibility: parses numbers
- Number Compatibility → Unicode Numerics: checks numeric values
- Input Transform → Locale Provider: reads separators
- String Parser → Locale Provider: uses collation
- Locale Provider → Stdlib Locale: provides fallback
- Locale Provider → ICU Locale: optional backend
- Locale Provider → Windows Locale: optional backend
- OS Sort API → Windows API: uses platform sort