vsort 0.2.0

GNU Version Sort Rust implementation
Documentation
  • Coverage
  • 66.67%
    2 out of 3 items documented2 out of 2 items with examples
  • Size
  • Source code size: 24.58 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 300.62 kB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 9s Average build duration of successful builds.
  • all releases: 9s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • juansc/vsort
    0 0 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • juansc

TESTS License: MIT Latest version

vsort

A Rust library that implements the GNU version sort algorithm. It follows the spec given here.

Installation

cargo add vsort

Why vsort?

Other version sort implementations don't match the GNU spec, and some were missing tests. The goal is to match the behavior of the core utils implementation as close as possible. If you notice any discrepancies please open an issue.

Why not FFI?

FFI is probably your best bet if you need absolute parity with GNU version sort. In the case you want their algorithm in Rust here it is :)

Usage:

use vsort::{compare, sort};

fn main() {
    let mut file_names = vec![
        "a.txt",
        "b 1.txt",
        "b 10.txt",
        "b 11.txt",
        "b 5.txt",
        "Ssm.txt",
    ];

    // Pass to sort_by
    file_names.sort_by(|a, b| compare(a, b));
    assert_eq!(
        file_names,
        vec!["Ssm.txt", "a.txt", "b 1.txt", "b 5.txt", "b 10.txt", "b 11.txt"]
    );

    let mut file_names = vec![
        "a.txt",
        "b 1.txt",
        "b 10.txt",
        "b 11.txt",
        "b 5.txt",
        "Ssm.txt",
    ];
    // Alternatively
    sort(&mut file_names);
    assert_eq!(
        file_names,
        vec!["Ssm.txt", "a.txt", "b 1.txt", "b 5.txt", "b 10.txt", "b 11.txt"]
    );
}