#version #wildcard #comparison #latest-version

version-lp

一个用于版本比较和通配符解析的版本结构库

3个不稳定版本

使用旧的Rust 2015

0.2.1 2018年12月17日
0.2.0 2018年11月19日
0.1.6 2018年11月19日

#1375 in 数据结构


4 个crate中使用

MIT 协议

23KB
388 代码行

version-lp-rs

一个用于处理版本并设计用于与lovepack工具一起使用的Rust库。

概述

包含一个基于 语义版本控制系统 的自定义版本 结构体。仅支持 a.b.c 格式,但可以有任意数量的点,例如 a.ba.b.c.d 也是一个有效的版本。在比较 Versions 时也支持通配符。


let wild_version = Version::from_str("2.*.*");

Version::from_string("2.3.4").unwrap().is_compatible_with(&wild_version) // will return true

可以使用标准比较。


let ver_a = Version::from_str("2.1.4");
let ver_b = Version::from_str("2.2.3");
let ver_c = Version::from_str("2.1.4");


ver_a < ver_b // true
ver_a == ver_c // true

您还可以从列表中获取最新版本。

let versions : Vec<Version> = vec![
    Version::from_str("1.0.0").unwrap(),
    Version::from_str("1.0.1").unwrap(),
    Version::from_str("1.1.0").unwrap(),
    Version::from_str("1.0.2").unwrap()
];

let requirement = Version::from_str("1").unwrap();

let version = requirement.latest_compatible_version(&versions); // would be Version (1.1.0)

成功提示

  • 不能与模式比较,模式只能使用 is_compatible_with 函数进行检查。
  • 比较不同长度的版本号时将假设通配符。 1.2 将与 1.2.3 兼容

模式匹配

目前支持的唯一通配符是 *。但可以通过使用简短版本实现 ^1.2 将与 1.2.11.2.100 匹配,并使用 ::latest_compatible_version 返回列表中的最新版本。

依赖项

~2.7–4.5MB
~79K SLoC