#version #systemd #uapi

uapi-version

根据UAPI版本格式规范比较版本

4个版本 (重大变更)

0.4.0 2024年5月22日
0.3.0 2024年5月22日
0.2.0 2024年5月16日
0.1.0 2024年5月15日

#548 in 文本处理

MIT 许可证

11KB
164

uapi-version

根据UAPI版本格式规范比较版本。

这个库完全用Rust编写,不依赖于任何第三方依赖。它是#![no_std],因此也可以用于UEFI开发。

使用与systemd测试其strverscmp_improved()函数相同的测试套件。

任何与UAPI规范的偏差都是错误。如果您发现任何错误,请报告!

用法

uapi-version添加到您的Cargo.toml

cargo add uapi-version

您可以比较两个版本

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)
}

您可以排序版本列表

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))
}

您还可以直接比较版本字符串

use std::cmp::Ordering;

use uapi_version::strverscmp;

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

无运行时依赖