uapi-version 0.1.0

Compare versions according to the UAPI Version Format Specification
Documentation

uapi-version

Compare versions according to the UAPI Version Format Specification.

This library is written purely in Rust and does not rely on any third party dependencies.

Uses the same test suite that systemd uses to test their strverscmp_improved() function.

Any deviation from the UAPI specification is a bug. Please report it if you find one!

Usage

Add uapi-version to your Cargo.toml:

cargo add uapi-version

You can compare two versions:

use std::cmp::Ordering;

use uapi_version::Version;

fn main() {
    let a = Version::from("225.1");
    let b = Version::from("2");
    assert_eq!(a.cmp(&b), Ordering::Greater)
}

You can sort a list of versions:

use uapi_version::Version;

fn main() {
    let mut versions = [
        "5.2",
        "abc-5",
        "1.0.0~rc1",
    ].map(Version::from);

    versions.sort();

    assert_eq!(versions, [ "abc-5", "1.0.0~rc1", "5.2" ].map(Version::from))
}

You can also compare to version strings directly:

use std::cmp::Ordering;

use uapi_version::strverscmp;

fn main() {
    assert_eq!(strverscmp("124", "123"), Ordering::Greater)
}